A SwiftUI inspired Flutter study planner application designed to help students organize their academic life efficiently with comprehensive task management, course tracking, scheduling, and progress monitoring.
- Dashboard Overview: Central hub showing tasks due today, upcoming deadlines, and study schedule.
- Course Management: Create, edit and organize courses with custom colors and schedule details.
- Task Management:
- Create tasks with titles, due dates, and priority levels (importance)
- Mark tasks as complete/incomplete
- Track time spent on tasks
- Associate tasks with specific courses
- Grade tracking with points earned/possible
- Schedule Planning:
- Interactive calendar interface (day, week, month views)
- View course schedules and task deadlines
- Color-coded events based on course
- Progress Tracking:
- Visual progress indicators for courses and tasks
- Statistics dashboard with charts showing completion trends
- Time tracking for study sessions
- User Authentication:
- User registration and login
- Profile management
- UI Features:
- Light and dark mode themes
- Customizable UI
- Animated transitions and elements
- Framework: Flutter
- Language: Dart
- State Management: Provider pattern
- Data Persistence:
- SQLite database (sqflite)
- Shared preferences for app settings
- UI Components & Enhancements:
- table_calendar: Calendar display and interaction
- fl_chart: Data visualization with charts
- flutter_animate: UI animations
- google_fonts: Typography enhancement
- Utilities:
- UUID generation (uuid)
- Collection utilities (collection)
- Date/time formatting (intl)
- File system access (path_provider, path)
- Image handling (image_picker)
- Device features (vibration)
- Flutter SDK (^3.7.2)
- Dart SDK
- Android Studio / VS Code / Xcode
- Git
-
Clone the repository:
git clone https://github.com/TafaraObed/happyapp.git cd happyapp -
Install dependencies:
flutter pub get
-
Run the application:
flutter run
happyapp/
βββ lib/ # Main source code
β βββ main.dart # Application entry point (478 lines)
β βββ helpers/ # Database and utility helpers
β β βββ database_helper.dart # SQLite database management (761 lines)
β β βββ database_sync_manager.dart # Data synchronization (138 lines)
β βββ models/ # Data models
β β βββ course.dart # Course data model (125 lines)
β β βββ predefined_programs.dart # Predefined academic programs (224 lines)
β β βββ program.dart # Academic program model (58 lines)
β β βββ schedule_entry.dart # Schedule data model (58 lines)
β β βββ task.dart # Task data model (188 lines)
β β βββ time_log_entry.dart # Time tracking model (36 lines)
β β βββ user.dart # User authentication model (38 lines)
β βββ providers/ # State management
β β βββ auth_provider.dart # Authentication state management (160 lines)
β β βββ settings_provider.dart # App settings management (159 lines)
β β βββ tasks_provider.dart # Task state management (320 lines)
β β βββ theme_provider.dart # Theme state management (161 lines)
β βββ screens/ # UI screens
β β βββ add_course_screen.dart # Course creation UI (450 lines)
β β βββ add_task_screen.dart # Task creation UI (306 lines)
β β βββ course_detail_screen.dart # Course details view (275 lines)
β β βββ course_list_screen.dart # Course listing (135 lines)
β β βββ dashboard_screen.dart # Main dashboard (1045 lines)
β β βββ login_screen.dart # Authentication UI (294 lines)
β β βββ profile_screen.dart # User profile management (304 lines)
β β βββ predefined_courses_screen.dart # Predefined courses selection (190 lines)
β β βββ settings_screen.dart # App settings (228 lines)
β β βββ signup_screen.dart # User registration (449 lines)
β β βββ stats_screen.dart # Statistics and analytics (238 lines)
β β βββ task_detail_screen.dart # Task details view (158 lines)
β β βββ task_list_screen.dart # Task listing and management (742 lines)
β β βββ theme_selection_screen.dart # Theme customization (127 lines)
β βββ services/ # Business logic services
β β βββ predefined_courses_service.dart # Course template management (75 lines)
β β βββ prioritization_service.dart # Task prioritization logic (69 lines)
β βββ themes/ # Theme configurations
β β βββ app_themes.dart # Application theme definitions (531 lines)
β βββ utils/ # Utility functions
β β βββ task_filter.dart # Task filtering logic (10 lines)
β βββ widgets/ # Reusable UI components
β βββ tap_scale_container.dart # Animation wrapper for UI elements (77 lines)
βββ assets/ # Static assets
β βββ images/
β βββ study_background.jpg # Dark mode background
β βββ study_light_background.jpg # Light mode background
βββ screenshots/ # Application screenshots for documentation
β βββ Course_Screen.png
β βββ Dashboard_01.png
β βββ Dashboard_02.png
β βββ Login_screen.png
β βββ Profile_settings_screen.png
β βββ Settings_screen.png
β βββ Signup_screen.png
β βββ Stats_screen.png
β βββ Tasks_screen.png
β βββ Themes.png
βββ android/ # Android platform code
βββ ios/ # iOS platform code
βββ web/ # Web platform code
βββ windows/ # Windows platform code
βββ macos/ # macOS platform code
βββ linux/ # Linux platform code
βββ test/ # Testing directory
βββ pubspec.yaml # Project dependencies and metadata
βββ README.md # Project documentation
The app uses SQLite for data persistence with the following key tables:
- users: User authentication data
- courses: Course information and metadata
- tasks: Task details including completion status, due dates
- time_logs: Time tracking for study sessions
The application uses the Provider pattern for state management:
- AuthProvider: Manages user authentication state
- ThemeProvider: Handles theme preferences
- SettingsProvider: Tracks app settings
- TasksProvider: Manages task data operations
The app is designed to run on multiple platforms:
- Android
- iOS
- Web
- Windows
- macOS
- Linux
- flutter: The Flutter SDK
- cupertino_icons: iOS style icons
- uuid: For generating unique IDs
- collection: Utility collections classes
- table_calendar: A highly customizable Flutter Calendar widget
- intl: Internationalization and localization utilities
- shared_preferences: For persistent storage (simple data)
- provider: State management
- flutter_animate: Adds declarative animations
- google_fonts: Includes fonts from fonts.google.com
- fl_chart: A library to draw charts in Flutter
- sqflite: SQLite database plugin
- path_provider: For finding commonly used locations on the filesystem
- path: Path manipulation utilities
- image_picker: For selecting images from the device gallery or camera
- vibration: Plugin for device vibration
- change_app_package_name: Utility to change app package name
- rename_app: Utility to rename the app
- flutter_test: Flutter testing framework
- flutter_lints: Recommended lints for Flutter projects
The app implements a user authentication system that supports registration, login, and persistent sessions using a combination of AuthProvider and SQLite storage.
Courses are managed through a dedicated data model that supports:
- Custom course creation with name, instructor, and color properties
- Predefined course templates organized by academic programs
- Schedule entries for recurring class times
Tasks are the core organizational unit for student work and include:
- Due date tracking with overdue detection
- Priority levels (importance)
- Association with specific courses
- Time tracking for study sessions
- Grade recording (points earned/possible)
The app features a comprehensive dashboard with:
- Calendar views for schedule visualization
- Task status overview (due today, upcoming, overdue)
- Progress charts including weekly task completion
- Course completion percentage visualization
The app uses a multi-layered approach for data storage:
- SQLite database for structured data (courses, tasks, user information)
- Shared preferences for app settings and themes
- JSON serialization for complex data structures
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
Please adhere to Flutter best practices and ensure tests pass.
MIT License
Copyright (c) 2023 HappyApp Co.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Built with π using Flutter.









