Skip to content

Alvish0407/kaam-hiring-test

Repository files navigation

A Todo app (ToDone) built with Flutter & Firebase

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:

  1. Implement user login and registration using Firebase Authentication.
  2. Use email and password as the login method.
  3. Include basic form validation (e.g., email format, password strength).

To-Do List:

  1. Allow authenticated users to create, read, update, and delete to-do items.
  2. Each to-do item should have a title, description, due date, and completion status.
  3. Store to-do items in Firebase Firestore, associating them with the logged-in user.

State Management:

  1. Use a state management solution such as Provider, Riverpod, or Bloc.
  2. Justify your choice in the README file.

UI/UX:

  1. Design a clean, user-friendly interface.
  2. Ensure the app is responsive and works on both Android and iOS devices.
  3. Include basic animations for transitions and status changes.

Technical Requirements:

  1. Use the latest version of Flutter and Dart.
  2. Implement asynchronous programming and error handling.
  3. Follow best practices for clean and maintainable code.

Deliverables

Flutter Project:

  1. Host the project in a public Git repository (e.g., GitHub, GitLab).
  2. Include a README file with setup instructions, state management justification, and any additional notes or assumptions.

Video Demonstration:

  1. Record a short video (2-3 minutes) demonstrating the functionality of the app.
  2. Showcase the user authentication flow, to-do list management, and any animations.

Prerequisite

  1. Download fvm and follow the instructions
  2. Setup Firebase Project

Features

  • 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.

Packages in use

These are the main packages used in the app:

See the pubspec.yaml file for the complete list.

Why Riverpod ?

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.

Running the project with Firebase

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

Using the CLI

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!