A comprehensive Flutter-based academic management application designed to help students organize their classes, assignments, exams, and track attendance efficiently.
- Unified Event System: Manage classes, exams, assignments, meetings, and personal events in one place
- Timetable Management: Create recurring class schedules with automatic event generation
- Attendance Tracking: Mark and monitor attendance for all classes with detailed statistics
- Calendar View: Visual calendar with event overview and daily planning
- Timeline View: Hour-by-hour breakdown of your day with event details
- Voice Notes: Record and attach voice notes to any event
- Smart Reminders: Set custom reminders for events and deadlines
- Dark Mode: Full dark mode support with theme persistence
- Multiple event classifications (Class, Exam, Assignment, Meeting, Personal, Other)
- Priority levels (Low, Medium, High, Critical)
- Categories/subjects for organization
- Completion tracking with visual indicators
- Event duplication and bulk management
- Important event flagging
- Five attendance statuses (Present, Absent, Late, Excused, Cancelled)
- Automatic attendance statistics calculation
- Per-class attendance tracking
- Visual attendance rate indicators
- Integration with timetable entries
Before running this project, ensure you have the following installed:
- Flutter SDK (3.0.0 or higher)
- Dart SDK (3.0.0 or higher)
- Android Studio / Xcode (for mobile development)
- A code editor (VS Code, Android Studio, or IntelliJ IDEA)
git clone <repository-url>
cd classflowflutter pub getflutter doctorEnsure all required components are installed and configured correctly.
- Start an Android emulator or connect an Android device via USB
- Run the following command:
flutter run- Start an iOS simulator or connect an iOS device
- Run the following command:
flutter runflutter run -d chromeflutter build apk --releaseflutter build appbundle --releaseflutter build ios --releaseprovider: ^6.1.1- State managementshared_preferences: ^2.2.2- Local data persistenceintl: ^0.19.0- Internationalization and date formatting
table_calendar: ^3.0.9- Calendar widgetgoogle_fonts: ^6.1.0- Custom fontsflutter_slidable: ^3.0.1- Swipe actions
record: ^5.0.4- Audio recordingaudioplayers: ^5.2.1- Audio playbackpath_provider: ^2.1.2- File system access
flutter_local_notifications: ^16.3.0- Local notificationspermission_handler: ^11.2.0- Runtime permissionstimezone: ^0.9.2- Timezone handling
uuid: ^4.3.3- Unique ID generation
-
Update
android/app/build.gradle:- Minimum SDK version: 21 or higher
- Compile SDK version: 34 or higher
-
Add permissions in
android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>-
Update
ios/Podfile:- Uncomment
platform :ios, '12.0'and set to 12.0 or higher
- Uncomment
-
Add permissions in
ios/Runner/Info.plist:
<key>NSMicrophoneUsageDescription</key>
<string>This app needs microphone access to record voice notes</string>
<key>NSUserNotificationsUsageDescription</key>
<string>This app needs notification access to remind you of events</string>The app uses SharedPreferences for local data storage. All data is stored on the device and persists between app sessions.
- Events and tasks
- Timetable entries
- Attendance records
- Categories
- User preferences (theme, authentication status)
- Voice note file paths
- Android:
/data/data/<package-name>/shared_prefs/ - iOS:
Library/Preferences/ - Voice recordings: Application documents directory
- Tap the floating action button on any screen
- Select event classification (Class, Assignment, Exam, etc.)
- Fill in required details (title, date/time)
- Optionally add: category, location, notes, priority, reminders
- Save the event
- Navigate to Timetable from the home page quick actions
- Tap "Add Class" button
- Enter class details:
- Course name and code
- Instructor and room
- Days of week (select multiple)
- Start time and duration
- Semester start/end dates
- The system automatically generates recurring class events
- Open the Attendance page from home or timetable
- Select a class to view details
- Mark attendance for each class session:
- Present
- Absent
- Late
- Excused
- Cancelled (not counted in statistics)
- View attendance statistics and percentage
- While creating/editing an event, go to the "Notes" tab
- Tap "Record" button
- Record your voice note
- Add optional tags for organization
- Save the voice note (attached to the event)
- Edit an event
- Go to "Advanced" tab
- Tap "Add Reminder"
- Select date and time for the reminder
- Multiple reminders can be added per event
- Clean the build:
flutter clean
flutter pub get- Check Flutter installation:
flutter doctor -v- Ensure permissions are granted in device settings
- Check notification channel settings
- Verify
flutter_local_notificationsis properly configured
- Grant microphone permissions in device settings
- Test on physical device (emulators may have issues)
- Verify
recordpackage compatibility with your OS version
- Data is stored locally; uninstalling the app deletes all data
- Sign out functionality clears all data
- No cloud backup is currently implemented
- No cloud synchronization (data is local only)
- No multi-device support
- Voice notes stored locally (not backed up)
- Calendar does not sync with external calendars
- No export/import functionality for data
- Events are loaded on-demand
- Timetable generation is optimized for large date ranges
- Images and voice notes use compressed formats
- Efficient state management with Provider
flutter testflutter format .flutter analyze- Current Version: 2.0.0
- Minimum Flutter Version: 3.0.0
- Supported Platforms: Android, iOS