Learn Planner is a Flutter-based application that helps users manage their courses, assignments, and notes efficiently. The app provides a structured way to organize learning materials while ensuring persistence and ease of access. Additionally, it supports light and dark theme persistence, ensuring that the user's preferred theme remains unchanged even after restarting the app.
- Users can add courses with details such as course name and description, etc.
- View a single course with its details.
- Users can edit and delete courses easily.
- Users can add assignments related to a course, including details like the name, description, start date, due date, and ending time.
- View a single assignment with its details.
- Users can edit and delete assignments.
- ⏳ Assignment Deadline Timer: Tracks due dates, and overdue assignments are displayed separately.
- Users can add notes related to a course, including a title, description, etc.
- Users can upload a note image for better understanding
- View a single note with its details.
- Users can edit and delete notes.
- Users can upload a profile picture.
- Users can add and edit personal details (e.g., name, email, age).
- User profile image and details persist across app restarts.
- The app supports both dark and light modes.
- The selected theme persists across app restarts.
- Courses, assignments, and notes are stored in Firestore for seamless access across devices.
- Note image is stored in Firebase Storage, ensuring secure and scalable storage.
- The Home Page uses StreamBuilder, providing real-time updates whenever data changes.
- Other pages utilize FutureBuilder, fetching data only when needed, ensuring optimized performance.
- Profile details, including the selected theme, are stored in Shared Preferences, ensuring persistence across app restarts.
- The app features a modern and user-friendly interface for a seamless experience.
The following technologies are used in this project:
| Technology | Description |
|---|---|
| Flutter | UI framework for building cross-platform applications. |
| Dart | For application logic. |
| Firebase Firestore | NoSQL cloud database for storing courses, assignments, and notes. |
| Firebase Storage | Used for storing uploaded a note image securely. |
| Shared Preferences | Stores profile details and theme preference locally. |
| Provider | Manages theme state (dark/light mode) and ensures persistence. |
| Go Router | For efficient navigation and deep linking. |
| Google Fonts | Enables custom fonts for enhanced UI design. |
| Image Picker | Allows users to pick and upload images. |
| Flutter SVG | For displaying scalable vector graphics. |
| Lottie | Adds smooth animations to the UI. |
| Intl | Used for date formatting and localization support. |
The following dependencies are used in this project:
firebase_core: ^3.12.1
cloud_firestore: ^5.6.5
google_fonts: ^6.2.1
go_router: ^14.8.1
image_picker: ^1.1.2
firebase_storage: ^12.4.4
intl: ^0.20.2
flutter_svg: ^2.0.17
lottie: ^3.3.1
shared_preferences: ^2.5.2
provider: ^6.1.2- Clone the repository:
https://github.com/PAIshanMadusha/learn-planner-app.git- Navigate to the project directory:
cd learn-planner-app- Install dependencies:
flutter pub get-
📖I’ve written a detailed Medium article explaining the step-by-step process to connect Firebase to Flutter with screenshots.
-
📖Read my blog on Medium here: Link
-
📝Also, you can view my previous project, Taskly Firebase App I have written clearly on the README how to set up Firebase.
- Create a Firebase project at Firebase Console.
- In the Firebase Console, on the left sidebar under the Build section, make sure to enable Firebase Firestore and Firebase Storage in test mode.
- Add Firebase to Your Flutter App: In Firebase Console, select either Android or iOS, depending on your target platform and, Fill the Required details.
- Download the
google-services.jsonfile (for Android) andGoogleService-Info.plist(for iOS) and place them in the appropriate folders.
flutter runBelow you can view app screenshots related to the Course, Assignment, and Note pages, as well as the Light and Dark themes.
The Learn Planner app is a Flutter-based application designed to help users efficiently manage their courses, assignments, and notes. It provides a streamlined way for users to add, view, edit, and delete their courses, assignments, and notes. With features like real-time updates, profile management, and dark/light theme support, the app offers an organized and user-friendly experience for students and learners.
I created this project to improve my Flutter and Firebase knowledge, as well as to enhance my development skills. I'm excited to share it with you, and I hope you find it useful!
Ishan Madhusha
GitHub: PAIshanMadusha
Feel free to explore my work and get in touch if you'd like to collaborate! 🚀
This project is open-source and available under the MIT License.











