Student & Parent App
A unified mobile experience for the entire family. Built with Flutter and synchronized via secure Laravel APIs.
1. Smart Login & Sibling Switcher
We prioritize convenience without sacrificing security. The app aggregates entire families into a single session.
- FaceID & Biometrics: Enable local hardware biometric authentication for one-tap login after the initial setup.
- Multi-Child Architecture: When a parent logs in, the API returns a merged array of all students matching their `guardian_email`. The UI allows instant context-switching between siblings without re-authenticating.
Real-Time Sync: The dashboard relies on Firebase Cloud
Messaging (FCM). When a teacher updates homework or marks attendance on the web portal, the App receives a
silent data payload in < 1 second.
2. Academic Core & Attendance
Keep track of the learning journey in real-time.
- Live Attendance Grid: The `AttendanceController` calculates a custom monthly calendar. It overlaps standard Present/Absent records with the `Event` table to accurately plot School Holidays and Late marks.
- Homework & Evaluation: Download attachments and upload completed work directly from the phone.
- Computer Based Tests (CBT): Take Online Exams directly in the app with an auto-timer and instant result generation.
- Study Center: Access the syllabus, download PDF materials, and stream Video lessons.
3. Instant Fee Payments
Zero friction payments integrated with global gateways.
- Fee Ledger Overview: Clear breakdown of Tuition, Transport, Hostel, and distinct fine structures.
- WebView Checkout: To bypass App Store tax restrictions, clicking "Pay Now" securely bridges the user to the web-based Stripe/Razorpay checkout portals initialized with their unique student token.
- Payment History: Download stamped PDF receipts for all past transactions.
4. Proactive Safety & GPS Maps
The app doesn't wait for you to check. It predicts and notifies.
- Live Bus Tracking: The `TransportController` API fetches the `VehicleTracking` record every 5 seconds. If the bus is active, parents see a live map plotting the exact coordinates and speed of the vehicle.
- Proximity Alerts: A Background Job dynamically calculates the distance between the moving bus and the child's assigned Stop. If it breaches the 500m radius, it fires a "Bus Arriving" push notification to the parent.
[Screenshot: Parent App Dashboard showing the Sibling Switcher, Attendance summary chart,
and the Live Tracking Map card]
5. Environment Setup & Build Guide (Flutter 3.35.4)
Follow these precise instructions to provision your development environment, configure the parent app, and generate production releases.
- 1. Environment Prerequisites:
- Install Flutter SDK strictly version3.35.4(verify viaflutter --version).
- Java Development Kit (JDK) 17.
- Android Studio with Android SDK Platform 34 & Build-Tools 34.0.0. - 2. Dependency Resolution:
- Navigate to the app directory:cd school_erp_parent_app
- Clear caches:flutter clean
- Fetch strict dependencies:flutter pub get - 3. API Configuration:
- Openlib/core/config/app_config.dart.
- IMPORTANT: You must update TWO distinct URL variables in this file:baseUrl(e.g.,https://api.yourschool.com/api/v1) andstorageBaseUrl(e.g.,https://api.yourschool.com). - 4. App Customization (Name & Logo):
- App Name: Update the label inandroid/app/src/main/AndroidManifest.xml(android:label) andios/Runner/Info.plist(CFBundleDisplayName).
- App Logo: Replace the default icons insideandroid/app/src/main/res/andios/Runner/Assets.xcassets/AppIcon.appiconset/. - 5. Release Keystore Setup (Android):
- Generate a JKS file:keytool -genkey -v -keystore release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias parentapp
- Place the.jksfile in theandroid/app/directory.
- Createandroid/key.propertieswithstorePassword,keyPassword,keyAlias, andstoreFilevariables. - 6. Production Build Generation:
- Build APK (direct install):flutter build apk --release --obfuscate --split-debug-info=build/app/outputs/symbols
- Build App Bundle (Play Store):flutter build appbundle --release --obfuscate --split-debug-info=build/app/outputs/symbols