A modern, responsive Todo List application built with React and Vite, featuring user authentication via Clerk, local storage persistence, and advanced task management capabilities.
- ✅ Task Management: Add, complete, delete, and star tasks
- 📅 Due Date Support: Set and view due dates for tasks
- 🔍 Smart Filtering: Filter tasks by All, Upcoming, Completed, and Important
- 🔤 Multiple Sorting Options: Sort by Due Date, Alphabetical order, or Important tasks
- 🔊 Audio Feedback: Play completion sound when tasks are finished
- 📱 Responsive Design: Works seamlessly on desktop and mobile devices
- 🔐 User Authentication: Secure login/logout with Clerk
- 💾 Data Persistence: Tasks are saved locally in browser storage
- 🎨 Modern UI: Glass-morphism design with smooth animations
- Frontend: React 18 + Vite
- Styling: CSS3 with modern features (backdrop-filter, flexbox, grid)
- Authentication: Clerk
- Icons: React Icons (Font Awesome, React Icons)
- Audio: Web Audio API
- Storage: Local Storage API
Before running this application, make sure you have the following installed:
- Node.js (version 16.0 or higher)
- npm (version 7.0 or higher) or yarn
- Git
git clone https://github.com/yourusername/todo-list-app.git
cd todo-list-appnpm install
# or
yarn installCreate a .env file in the root directory and add your Clerk configuration:
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key_hereTo get your Clerk keys:
- Sign up at clerk.com
- Create a new application
- Copy your publishable key from the dashboard
Place the following files in the public directory:
bgimg.jpg- Background image for the applicationfinished.mp3- Audio file that plays when tasks are completed
npm run dev
# or
yarn devThe application will be available at http://localhost:5173
npm run build
# or
yarn buildThe built files will be in the dist directory.
todo-list-app/
├── public/
│ ├── bgimg.jpg # Background image
│ ├── finished.mp3 # Task completion sound
│ └── vite.svg # Vite logo
├── src/
│ ├── components/
│ │ └── Todo.jsx # Main Todo component
│ ├── styles/
│ │ └── Todo.css # Component styles
│ ├── utils/
│ │ ├── constants.js # App constants
│ │ └── helpers.js # Helper functions
│ ├── App.jsx # Root component
│ ├── main.jsx # Entry point
│ └── index.css # Global styles
├── .env # Environment variables
├── .env.example # Environment template
├── .gitignore # Git ignore rules
├── package.json # Dependencies and scripts
├── vite.config.js # Vite configuration
└── README.md # Project documentation
- Type your task in the input field
- (Optional) Select a due date using the date picker
- Click the plus button or press Enter to add the task
- Complete: Click the circle icon next to a task
- Star/Unstar: Click the star icon to mark as important
- Delete: Click the trash icon to remove a task
- All: Shows all tasks
- Upcoming: Shows only incomplete tasks
- Completed: Shows only completed tasks
- Important: Shows only starred tasks
- Click the filter icon in the button area
- Select from sorting options:
- None: Default order
- Due Date: Sort by earliest due date first
- A-Z: Alphabetical order
- Pin To Task: Important tasks first
- Authentication: Clerk handles secure user authentication
- Data Protection: Tasks are stored locally per user session
- Input Validation: Client-side validation prevents empty tasks
- XSS Protection: React's built-in XSS protection
1. Clerk Authentication Not Working
- Verify your
.envfile has the correct publishable key - Ensure the key starts with
pk_test_orpk_live_ - Check Clerk dashboard for application status
2. Audio Not Playing
- Ensure
finished.mp3exists in thepublicdirectory - Check browser audio permissions
- Verify file format compatibility
3. Tasks Not Persisting
- Check if localStorage is enabled in your browser
- Clear browser cache and try again
- Ensure you're not in incognito/private mode
4. Styling Issues
- Verify
bgimg.jpgexists in thepublicdirectory - Check CSS file paths are correct
- Clear browser cache
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
Akula Sai Teja
- GitHub: @SaiTeja-2101
- Email: akulasaiteja2006@gmail.com
- Audio may not work on some mobile browsers due to autoplay restrictions
- Date picker styling may vary across different browsers
Made with ❤️ using React and Vite
For questions, issues, or feature requests, please open an issue on GitHub