A modern, feature-rich todo application with beautiful UI/UX and comprehensive task management capabilities.
Demo โข Features โข Installation โข Usage โข API โข Contributing
- ๐ Secure User Registration & Login - Bcrypt password hashing
- ๐ก๏ธ Session Management - Express sessions with secure cookies
- ๐ค User Isolation - Each user's data is completely separate
- โ Complete CRUD Operations - Create, Read, Update, Delete todos
- ๐ท๏ธ Categories & Tags - Organize tasks with colorful categories and custom tags
- ๐ฉ Priority Levels - High, Medium, Low priority with visual indicators
- ๐ Due Dates - Calendar integration with overdue detection
- โ๏ธ Task Completion - Mark tasks as completed with progress tracking
- ๐ Light/Dark Mode Toggle - Beautiful theme switching with smooth transitions
- ๐ฑ Fully Responsive Design - Perfect experience on desktop, tablet, and mobile
- ๐ญ Glassmorphism & Gradients - Modern visual effects and styling
- โก Smooth Animations - Micro-interactions and loading states
- ๐ฏ Drag & Drop Reordering - Intuitive task organization
- ๐ Real-time Search - Instant search with debounced input
- ๐๏ธ Multi-filter System - Filter by category, priority, and completion status
- ๐ Progress Tracking - Visual progress bars and statistics dashboard
- ๐ค Data Export - Download your tasks as JSON for backup
- ๐พ Auto-save Drafts - Never lose your work while typing
- โจ๏ธ Keyboard Shortcuts - Power user features for efficiency
- ๐ Toast Notifications - Success, error, and info messages
- ๐ Live Statistics - Real-time task completion tracking
- ๐จ Visual Feedback - Hover effects, loading states, and animations
| Technology | Purpose | Version |
|---|---|---|
| Node.js | Runtime Environment | 18+ |
| Express.js | Web Framework | 4.18+ |
| EJS | Template Engine | 3.1+ |
| JSON Files | Database Storage | - |
| bcrypt | Password Hashing | 5.1+ |
| UUID | Unique ID Generation | 9.0+ |
| CSS3 | Styling & Animations | - |
| JavaScript (ES6+) | Frontend Logic | - |
- Node.js (v14.0.0 or higher)
- npm (comes with Node.js)
- Clone the Repository
git clone https://github.com/techpark-119/Todo-App.git- Install Dependencies
npm install- Start the Application
# Development mode with auto-restart
npm run dev
# Production mode
npm start- Access the Application
Open your browser and navigate to: http://localhost:3000
- Register a new account on the login page
- Create your first category (optional)
- Add your first todo task
- Explore all the features!
Todo-App/
โโโ ๐ app.js # Main Express server
โโโ ๐ package.json # Project dependencies
โโโ ๐ README.md # This file
โโโ ๐ views/ # EJS templates
โ โโโ ๐ index.ejs # Main todo interface
โ โโโ ๐ auth.ejs # Authentication page
โโโ ๐ public/ # Static assets
โ โโโ ๐ styles.css # Main application styles
โ โโโ ๐ auth.css # Authentication styles
โ โโโ ๐ script.js # Frontend JavaScript
โโโ ๐ data/ # JSON database (auto-created)
โโโ ๐ users.json # User accounts
โโโ ๐ todos.json # Todo tasks
โโโ ๐ categories.json # Task categories
- Header: Logo, user welcome, theme toggle, export, logout
- Sidebar: Search, filters, statistics, categories
- Main Area: Todo list with drag-and-drop functionality
- Click the "Add Task" button
- Fill in the task details:
- Title (required)
- Description (optional)
- Category (select from existing)
- Priority (High/Medium/Low)
- Due Date (optional)
- Tags (comma-separated)
- Click "Save Task"
- Complete: Check the checkbox next to any task
- Edit: Click the edit icon on any task
- Delete: Click the delete icon (with confirmation)
- Reorder: Drag tasks using the grip handle
- Theme: Toggle between light and dark modes
- Categories: Create custom categories with colors
- Filters: Use search and filters to find specific tasks
| Shortcut | Action |
|---|---|
Ctrl/Cmd + N |
Create new task |
Ctrl/Cmd + F |
Focus search |
Ctrl/Cmd + T |
Toggle theme |
Ctrl/Cmd + E |
Export data |
Escape |
Close modal |
POST /register- Register new userPOST /login- User loginPOST /logout- User logout
GET /- Main dashboard (requires auth)POST /api/todos- Create new todoPUT /api/todos/:id- Update todoDELETE /api/todos/:id- Delete todoPOST /api/todos/reorder- Reorder todos
POST /api/categories- Create new category
GET /api/search- Search and filter todosGET /api/export- Export user data
- Light Mode: Clean whites and soft grays
- Dark Mode: Deep blues and elegant darks
- Accent Colors: Vibrant gradients and modern palettes
- Page Transitions: Smooth fade-ins and slide effects
- Hover States: Interactive button and card effects
- Loading States: Professional spinners and skeleton screens
- Drag & Drop: Visual feedback during interactions
- Desktop: Full sidebar and multi-column layout
- Tablet: Adaptive layout with collapsible sidebar
- Mobile: Stack layout with touch-optimized controls
Create a .env file in the root directory:
PORT=3000
SESSION_SECRET=your-super-secret-key-change-this-in-production
NODE_ENV=developmentThe application uses JSON files for data storage:
- Location:
./data/directory - Auto-creation: Files are created automatically on first run
- Backup: Simply copy the
datafolder
npm run devnpm startFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]git add .
git commit -m "Deploy to Heroku"
heroku create your-app-name
git push heroku main- User registration and login
- Create, edit, delete todos
- Search and filter functionality
- Drag and drop reordering
- Theme switching
- Data export
- Responsive design on different devices
- Lighthouse Score: Aim for 90+ in all categories
- Load Testing: Test with 100+ todos
- Browser Compatibility: Chrome, Firefox, Safari, Edge
Q: Port 3000 is already in use
# Kill process on port 3000
sudo lsof -t -i tcp:3000 | xargs kill -9
# Or use a different port
PORT=3001 npm startQ: Data files not being created
- Ensure write permissions in the project directory
- Check console for error messages
- Verify Node.js version compatibility
Q: Sessions not persisting
- Check if
SESSION_SECRETis set - Verify browser cookies are enabled
- Clear browser cache and cookies
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and ensure code quality
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style and conventions
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation if needed
Please include:
- Operating system and version
- Node.js version
- Browser and version
- Steps to reproduce
- Expected vs actual behavior
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 TodoMaster Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
- Arham Ali - Initial work and ongoing development
- Font Awesome for the beautiful icons
- Google Fonts for the Inter typeface
- The Node.js and Express.js communities
- All contributors and users
This project was inspired by modern productivity apps like Todoist, Any.do, and TickTick, with a focus on simplicity and powerful features.
- ๐ฑ Mobile app (React Native)
- ๐ Real-time collaboration
- ๐ง Email notifications
- ๐๏ธ File attachments
- ๐ Advanced analytics
- ๐ Third-party integrations
- ๐ Multi-language support
- v1.0.0 - Initial release with core features
- v1.1.0 - Coming soon: Mobile optimizations
- v2.0.0 - Planned: Real-time features
Made with โค๏ธ by The Arham Ali
โญ Star this repo โข ๐ Report Bug โข โจ Request Feature