Skip to content

A comprehensive, web-based to-do list application built with modern technologies.

Notifications You must be signed in to change notification settings

Ivan-Keli/To-Do-List

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

To-Do List App

A comprehensive, web-based to-do list application built with modern technologies for efficient task management and productivity enhancement. This project enables users to manage their daily tasks with advanced features like categorization, priority levels, drag-and-drop reordering, and sharing functionality.

Project Status Phase License

πŸš€ Quick Start

# Clone the repository
git clone https://github.com/Ivan-Keli/To-Do-List.git
cd To-Do-List

# Quick setup (runs both frontend and backend)
npm install
npm run dev

πŸ“– For detailed setup instructions, see SETUP.md

🎯 Project Overview

This Todo List application is a full-stack web solution designed to help users manage their daily tasks efficiently. Built as a school project, it demonstrates modern web development practices and comprehensive feature implementation.

Key Highlights

  • Full-Stack Architecture: React frontend with Node.js/Express backend
  • Database Integration: PostgreSQL for robust data persistence
  • Modern UI/UX: Responsive design with dark/light theme support
  • Advanced Features: Search, filtering, categorization, and priority management
  • Phase-Based Development: Structured development approach with clear milestones

✨ Features

βœ… Phase 1 (MVP) - COMPLETED

  • Create, read, update, delete tasks
  • Mark tasks as complete/incomplete
  • Priority levels (High, Medium, Low)
  • Database persistence

βœ… Phase 2 (Enhanced) - COMPLETED

  • Category management with color coding
  • Due date tracking with visual indicators
  • Advanced search and filtering
  • Dark/light theme toggle
  • Task statistics dashboard

🚧 Phase 3 (Advanced) - IN PROGRESS

  • Drag and drop task reordering
  • Export functionality (JSON/CSV)
  • Secure task list sharing
  • Performance optimizations

πŸ“‹ For complete feature documentation, see FEATURES.md

πŸ› οΈ Tech Stack

Frontend

  • React 18 with Vite for fast development
  • Tailwind CSS for utility-first styling
  • React Hook Form for form management
  • Lucide React for modern icons
  • Date-fns for date handling

Backend

  • Node.js with Express framework
  • PostgreSQL database
  • CORS for cross-origin requests
  • Environment configuration with dotenv

Development Tools

  • Concurrently for running multiple servers
  • Nodemon for auto-restart during development

πŸ“ Project Structure

todo-app/
β”œβ”€β”€ frontend/          # React application
β”œβ”€β”€ backend/           # Node.js/Express API
β”œβ”€β”€ docs/             # Documentation
β”‚   β”œβ”€β”€ API.md        # API reference
β”‚   β”œβ”€β”€ FEATURES.md   # Feature documentation  
β”‚   └── SETUP.md      # Setup instructions
β”œβ”€β”€ shared/           # Shared types and constants
└── package.json      # Root package configuration
todo-app/
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ favicon.ico   
β”‚   β”‚   └── manifest.json
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Button.jsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Input.jsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Modal.jsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Select.jsx
β”‚   β”‚   β”‚   β”‚   └── Badge.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ layout/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ Header.jsx
β”‚   β”‚   β”‚   β”‚   └── Layout.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ tasks/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TaskItem.jsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TaskForm.jsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TaskList.jsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ TaskFilters.jsx
β”‚   β”‚   β”‚   β”‚   └── TaskStats.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ categories/
β”‚   β”‚   β”‚   β”‚   └── CategoryManager.jsx
β”‚   β”‚   β”‚   └── features/
β”‚   β”‚   β”‚       └── SearchBar.jsx
β”‚   β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   β”‚   └── useDebounce.js
β”‚   β”‚   β”œβ”€β”€ contexts/
β”‚   β”‚   β”‚   β”œβ”€β”€ TaskContext.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ThemeContext.jsx
β”‚   β”‚   β”‚   └── CategoryContext.jsx
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ api.js
β”‚   β”‚   β”‚   β”œβ”€β”€ taskService.js
β”‚   β”‚   β”‚   └── categoryService.js
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   └── Dashboard.jsx
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   β”œβ”€β”€ main.jsx
β”‚   β”‚   └── index.css
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ vite.config.js
β”‚   β”œβ”€β”€ tailwind.config.js
β”‚   β”œβ”€β”€ index.html
β”‚   └── .env.local
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ tasks.js
β”‚   β”‚   β”œβ”€β”€ categories.js
β”‚   β”‚   β”œβ”€β”€ share.js
β”‚   β”‚   └── export.js
β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ taskController.js
β”‚   β”‚   β”œβ”€β”€ categoryController.js
β”‚   β”‚   β”œβ”€β”€ shareController.js
β”‚   β”‚   └── exportController.js
β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”œβ”€β”€ Task.js
β”‚   β”‚   β”œβ”€β”€ Category.js
β”‚   β”‚   └── SharedList.js
β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”œβ”€β”€ cors.js
β”‚   β”‚   β”œβ”€β”€ validation.js
β”‚   β”‚   β”œβ”€β”€ errorHandler.js
β”‚   β”‚   └── rateLimit.js
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”œβ”€β”€ database.js
β”‚   β”‚   β”œβ”€β”€ exportHelpers.js
β”‚   β”‚   β”œβ”€β”€ searchHelpers.js
β”‚   β”‚   β”œβ”€β”€ validation.js
β”‚   β”‚   └── tokenGenerator.js
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”œβ”€β”€ database.js
β”‚   β”‚   β”œβ”€β”€ server.js
β”‚   β”‚   └── constants.js
β”‚   β”œβ”€β”€ migrations/
β”‚   β”‚   β”œβ”€β”€ 001_create_categories.sql
β”‚   β”‚   β”œβ”€β”€ 002_create_tasks.sql
β”‚   β”‚   └── 003_create_shared_lists.sql
β”‚   β”œβ”€β”€ seeds/
β”‚   β”‚   └── sample_data.js
β”‚   β”œβ”€β”€ tests/
β”‚   β”‚   β”œβ”€β”€ tasks.test.js
β”‚   β”‚   β”œβ”€β”€ categories.test.js
β”‚   β”‚   └── share.test.js
β”‚   β”œβ”€β”€ server.js
β”‚   β”œβ”€β”€ package.json
β”‚   └── .env
β”œβ”€β”€ shared/
β”‚   β”œβ”€β”€ types/
β”‚   β”‚   β”œβ”€β”€ Task.js
β”‚   β”‚   β”œβ”€β”€ Category.js
β”‚   β”‚   └── ApiResponse.js
β”‚   └── constants/
β”‚       β”œβ”€β”€ priorities.js
β”‚       └── statusCodes.js
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ API.md
β”‚   β”œβ”€β”€ SETUP.md
β”‚   └── FEATURES.md
β”œβ”€β”€ .gitignore
β”œβ”€β”€ README.md
β”œβ”€β”€ docker-compose.yml (optional)
└── package.json (root)

🚦 Development Status

Current Progress

  • Phase 1: βœ… Complete (100%)
  • Phase 2: βœ… Complete (100%)
  • Phase 3: 🚧 In Progress (30%)

Live Servers

πŸ“š Documentation

Document Description
SETUP.md Complete setup and installation guide
FEATURES.md Detailed feature specifications and usage
API.md API endpoints and integration guide

πŸŽ“ Academic Context

This project demonstrates:

  • Software Engineering Principles: Requirement analysis, system design, implementation
  • Modern Web Development: Full-stack JavaScript development
  • Database Design: Relational database modeling and optimization
  • User Experience: Responsive design and accessibility
  • Project Management: Agile methodology with phase-based delivery

Stakeholder Analysis

  • Primary Users: Students, professionals, anyone needing task management
  • Development Team: Full-stack developers, UI/UX designers
  • Academic Reviewers: Instructors evaluating technical implementation

Methodology

Agile Development with Iterative Prototyping

  • Phase-based development approach
  • Regular testing and feedback incorporation
  • User-centered design principles
  • Continuous integration and deployment

πŸ”§ Development

Prerequisites

  • Node.js (v16+)
  • PostgreSQL (v12+)
  • Git

Quick Commands

# Start both servers
npm run dev

# Frontend only
cd frontend && npm run dev

# Backend only  
cd backend && npm run dev

# Database setup
cd backend && npm run setup

πŸ§ͺ Testing

Current Testing Status

  • βœ… Manual testing across all major browsers
  • βœ… API endpoint testing with sample data
  • βœ… Cross-device responsive testing
  • 🚧 Automated testing (planned)

Browser Support

  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Ivan Keli

πŸ™ Acknowledgments

  • Built as part of software engineering coursework
  • Inspired by modern productivity applications
  • Thanks to the open-source community for the tools and libraries

πŸ“ž Support

If you encounter any issues or have questions:

  1. Check Documentation: Review SETUP.md for common solutions
  2. API Issues: Consult API.md for endpoint details
  3. Feature Questions: See FEATURES.md for functionality details
  4. Create Issue: Open an issue on GitHub for bugs or feature requests

πŸ“Œ Note: This is an active development project. Features and documentation are continuously updated. Check the GitHub repository for the latest updates.

About

A comprehensive, web-based to-do list application built with modern technologies.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published