Back to Projects

Yet Another Todo List SPA

React/Firebase app featuring authentication, real-time updates, and customizable theme options.

By Marios Sofokleous
October 2021 – November 2021

Overview

Yet Another Todo List (YATL) is a learning project I developed to strengthen my understanding of React and Firebase. Inspired by an MDN article, this classic todo app goes beyond the basics by integrating Firebase for backend services and adding features like user authentication, private routes, and real-time task updates. The project provided a hands-on opportunity to explore essential React concepts while implementing modern web development practices such as light/dark mode and dynamic task management.

While todo apps are often used as introductory projects for learning React, I expanded this app's functionality to include features like authentication and real-time data handling. The focus was on gaining practical experience with tools and techniques relevant to real-world development rather than creating something unuique. This project allowed me to refine my technical skills while building a functional and interactive application.


Key features

  • User authentication: Login and register functionality powered by Firebase Authentication
  • Email verification: Users must verify their email address via a secure link before accessing their account
  • Private routes: Secure access to specific pages for authenticated users
  • Create, edit, delete, and mark tasks as complete
  • Real-time task updates: Changes are instantly reflected across the app without needing a refresh
  • Light/dark mode: Toggle between themes for a personalized experience
  • Subtle audio effects: Sound effects when marking tasks as complete enhance interactivity
  • Task filtering: Filter tasks by All, Active, or Completed for better organization
  • Dialogs and snackbars: Enhance user feedback throughout the app
  • Custom design: Unique design from scratch. CSS framework independet.

Visuals

Login and signup forms

Side-by-side log in and sign up forms with fields for email and password. Side-by-side preview of the login and signup forms with Firebase Authentication.

Email verification

Email verification prompt instructing users to verify their address before accessing the dashboard, with an option at the bottom to resend the verification email if not received. Email verification prompt—users must verify their email address before accessing their dashboard.

Task management

Task editing interface with input field for updating the task title. Edit a task's title.

Confirmation dialog asking the user to confirm deletion of a task. Confirmation dialog for deleting a task.

Task list interface with filter options for All, Active, or Completed tasks. Filter tasks by status: All, Active, or Completed.

Light/dark mode

Application interface shown in both light and dark mode side by side. Side-by-side preview of light and dark modes for a personalized experience.


Conclusion

Building YATL was an invaluable learning experience that allowed me to deepen my understanding of:

  • React Router basics (BrowserRouter, Route, useHistory)
  • React Hooks (useState, useEffect, useRef) for state management and side effects
  • Firebase Cloud Firestore methods (onSnapshot, addDoc, deleteDoc) for real-time data handling
  • Firebase Authentication (user registration/login/logout)

Additionally, I gained hands-on experience designing custom user interfaces without relying on CSS frameworks, implementing light/dark mode functionality, and enhancing user feedback through dialogs and snackbars. This project reinforced the importance of creating responsive, interactive applications optimized for usability.

Explore YATL on GitHub or connect with me on LinkedIn. Let's discuss how my skills can contribute to your team!


Share this page
Back to Projects

Let's connect

Interested in adding me to your development team?