Welcome to the To-Do App, your personal task management tool! This app helps you stay organized by allowing you to register, log in, reset your password, manage your tasks and delete account. It’s a simple, user-friendly application that allows you to track and organize your daily tasks.
- Registration and Login: Users can register an account and log in to access their personal task list.
- Password Reset: Users can reset their password if they forget it, using their email and the browser's local storage.
- Task Management: Add, edit, delete, and update the status of your tasks.
- Task Status: Tasks can be marked as "complete" or "incomplete".
- Local Storage: All data is saved using the browser's
localStorage, ensuring persistence between sessions. - Delete Account: Account deleted will be permanently deleted on localStorage.
-
Welcome Page: Upon visiting the app, you will be greeted with the welcome page. Here, you can either Register or Login to get started.
-
Register:
- To create an account, click on the Register button and enter your name, email, and password.
- If your email is already registered, the app will alert you that the user already exists.
-
Login:
- Once registered, you can log in by entering your email and password.
- If login is successful, you will be redirected to the task management page.
-
Manage Tasks:
- Add New Task: After logging in, you can add new tasks by clicking the Add New Task button and filling out the task name and description.
- Task Actions: For each task, you can:
- Edit: Update the task name and description.
- Update Status: Toggle the status between "completed" and "incomplete".
- Delete: Remove a task from the list.
-
Logout:
- When you're finished, you can log out and return to the login screen.
-
Password Reset
- If you forget your password, you can reset it via the Forgot Password link on the login page. You will be able to reset your password through local storage (without a backend service)
-
Delete Account:
- You can delete your account, and it will also be removed from localStorage.
Why Python?
- ✅ Simple and readable syntax
- ✅ Supports OOP principles (Inheritance, Polymorphism, Encapsulation)
- ✅ Rich standard library and mature testing ecosystem (
unittest,pytest) - ✅ Ideal for quick prototyping and scalable design pattern implementation
Key classes and their responsibilities:
User,Admin: Manage accounts, authentication, and task interactionsTask,TaskManager: Handle task creation, update, and status togglingAuthSystem: Central authentication manager using SingletonStorage: Shared utility class for persistence simulationNotification: Represents system-generated messages to usersAccount: Represents lifecycle-tied user account
| Pattern | Use Case in Project | Reason |
|---|---|---|
| Simple Factory | TaskFactory creates different task types |
Centralizes object creation logic |
| Factory Method | NotificationFactory with subclasses for Email/SMS |
Lets subclasses decide which class to instantiate |
| Abstract Factory | GUIFactory creates OS-specific UI components |
Creates families of related objects without specifying concrete classes |
| Builder | UserBuilder for flexible User creation |
Constructs complex objects with optional attributes |
| Prototype | Task clone method |
Useful for copying task templates efficiently |
| Singleton | AuthSystem instance shared across app |
Ensures a single global instance for authentication |
## Features for Contribution
| Feature | Status | Type |
|----------------------------------|---------|------------------|
| Dark Mode Toggle | Planned | Feature Request |
| Task Categories & Filters | Planned | Feature Request |
| Google Sign-In Integration | Planned | Feature Request |
| Add Hover Effects to Buttons | Open | Good First Issue |
| Refactor `app.js` | Open | Good First Issue |
| Unit Test for Login Function | Open | Good First Issue |
| Mobile Responsiveness Fix | Open | Good First Issue |
## Getting Started
### Prerequisites
- Node.js (v14+ recommended)
- npm
- Web browser (Chrome, Firefox, etc.)
### Steps to Run Locally
1. Clone or download the repository:
git clone https://github.com/Gogi2016/ToDoApp.git
### Tests
npm install
npm install --save-dev jest
run the test npm test
### Go live
[To-Do App](https://gogi2016.github.io/ToDoApp/)