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.
# 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
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.
- 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
- Create, read, update, delete tasks
- Mark tasks as complete/incomplete
- Priority levels (High, Medium, Low)
- Database persistence
- Category management with color coding
- Due date tracking with visual indicators
- Advanced search and filtering
- Dark/light theme toggle
- Task statistics dashboard
- Drag and drop task reordering
- Export functionality (JSON/CSV)
- Secure task list sharing
- Performance optimizations
π For complete feature documentation, see FEATURES.md
- 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
- Node.js with Express framework
- PostgreSQL database
- CORS for cross-origin requests
- Environment configuration with dotenv
- Concurrently for running multiple servers
- Nodemon for auto-restart during development
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)
- Phase 1: β Complete (100%)
- Phase 2: β Complete (100%)
- Phase 3: π§ In Progress (30%)
- Frontend: http://localhost:5173
- Backend: http://localhost:3001
- Database: PostgreSQL on localhost:5432
| Document | Description |
|---|---|
| SETUP.md | Complete setup and installation guide |
| FEATURES.md | Detailed feature specifications and usage |
| API.md | API endpoints and integration guide |
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
- Primary Users: Students, professionals, anyone needing task management
- Development Team: Full-stack developers, UI/UX designers
- Academic Reviewers: Instructors evaluating technical implementation
Agile Development with Iterative Prototyping
- Phase-based development approach
- Regular testing and feedback incorporation
- User-centered design principles
- Continuous integration and deployment
- Node.js (v16+)
- PostgreSQL (v12+)
- Git
# 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- β Manual testing across all major browsers
- β API endpoint testing with sample data
- β Cross-device responsive testing
- π§ Automated testing (planned)
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Ivan Keli
- GitHub: @Ivan-Keli
- Project: To-Do-List
- Built as part of software engineering coursework
- Inspired by modern productivity applications
- Thanks to the open-source community for the tools and libraries
If you encounter any issues or have questions:
- Check Documentation: Review SETUP.md for common solutions
- API Issues: Consult API.md for endpoint details
- Feature Questions: See FEATURES.md for functionality details
- 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.