ToDone.mp4
Assignment: To-Do List App
Objective: Build a simple yet functional To-Do List application using Flutter.
Task: Develop a To-Do List application with the following features:
User Authentication:
- Implement user login and registration using Firebase Authentication.
- Use email and password as the login method.
- Include basic form validation (e.g., email format, password strength).
To-Do List:
- Allow authenticated users to create, read, update, and delete to-do items.
- Each to-do item should have a title, description, due date, and completion status.
- Store to-do items in Firebase Firestore, associating them with the logged-in user.
State Management:
- Use a state management solution such as Provider, Riverpod, or Bloc.
- Justify your choice in the README file.
UI/UX:
- Design a clean, user-friendly interface.
- Ensure the app is responsive and works on both Android and iOS devices.
- Include basic animations for transitions and status changes.
Technical Requirements:
- Use the latest version of Flutter and Dart.
- Implement asynchronous programming and error handling.
- Follow best practices for clean and maintainable code.
Flutter Project:
- Host the project in a public Git repository (e.g., GitHub, GitLab).
- Include a README file with setup instructions, state management justification, and any additional notes or assumptions.
Video Demonstration:
- Record a short video (2-3 minutes) demonstrating the functionality of the app.
- Showcase the user authentication flow, to-do list management, and any animations.
- Download fvm and follow the instructions
- Setup Firebase Project
- Implement user login and registration using Firebase Authentication (Email and Password).
- Include basic form validation (e.g., email format, password strength)
- Allow authenticated users to create, read, update, and delete to-do items.
- Each to-do item has a title, description, due date, and completion status which are stored in Firebase Firestore.
- Basic animations for transitions and status changes.
- Responsive UI and Clean Code using Feature-First architecture.
- Clean, user-friendly interface.
These are the main packages used in the app:
- Flutter Riverpod for data caching, dependency injection, and more
- Riverpod Generator and Riverpod Lint for the latest Riverpod APIs
- GoRouter for navigation
- Firebase Auth for authentication
- Cloud Firestore as a realtime database
- Intl for date formatting
- Flutter Animate for performing animations reducing boilerplate code
- Build Runner is concrete way of generating files using Dart code
See the pubspec.yaml file for the complete list.
Riverpod is a reactive caching framework for Flutter/Dart.
Using declarative and reactive programming, Riverpod takes care of a large part of your application's logic for you. It can perform network-requests with built-in error handling and caching, while automatically re-fetching data when necessary.
To use this project with Firebase, follow these steps:
- Create a new project with the Firebase console
- Enable Firebase Authentication, along with the Email/Password Authentication Sign-in provider in the Firebase Console (Authentication > Sign-in method > Email/Password > Edit > Enable > Save)
- Enable Cloud Firestore
Make sure you have the Firebase CLI and FlutterFire CLI installed.
Then run this on the terminal from the root of this project:
- Run
firebase login
so you have access to the Firebase project you have created - Run
flutterfire configure
and follow all the steps
That's it. Have fun!