A modern, full-featured todo application built with React and Convex, featuring real-time updates, user authentication, and comprehensive task management.
- ✅ Create Tasks - Add new tasks with title, description, due date, and priority
- 📖 View Tasks - Clean, organized list view with filtering and search
- ✏️ Edit Tasks - Update any task details inline
- 🗑️ Delete Tasks - Remove tasks with confirmation dialog
- ☑️ Toggle Completion - Mark tasks as completed or pending
- 🔍 Search & Filter - Find tasks by keyword or filter by status
- 📊 Task Statistics - View completion progress and task counts
- 🎯 Priority Levels - Organize tasks by Low, Medium, or High priority
- 📅 Due Dates - Set and track task deadlines with overdue indicators
- 🔄 Real-time Updates - Changes sync instantly across all devices
- 🔐 User Authentication - Secure login with personal task management
- 📱 Responsive Design - Works perfectly on desktop and mobile
- Frontend: React 19, TypeScript, Tailwind CSS
- Backend: Convex (real-time database and functions)
- Authentication: Convex Auth
- Notifications: Sonner (toast notifications)
- Styling: Tailwind CSS with custom design system
- Node.js 18+ installed
- A Convex account (free at convex.dev)
-
Clone and install dependencies:
npm install
-
Set up Convex:
npx convex dev
This will:
- Create a new Convex project
- Set up authentication
- Deploy the database schema and functions
-
Start the development server:
npm run dev
-
Open your browser to
http://localhost:5173
- Sign Up/Sign In - Create an account or sign in with existing credentials
- Add Your First Task - Click "Add Task" and fill in the details
- Organize Tasks - Set priorities, due dates, and descriptions
- Track Progress - Use filters and view your completion statistics
- Quick Actions: Click the checkbox to toggle completion, or use the edit/delete buttons
- Bulk Operations: Use filters to focus on specific task types
- Search: Find tasks quickly by typing in the search box
- Priority System: Use color-coded priorities (🔴 High, 🟡 Medium, 🟢 Low)
- All Tasks: View everything in your task list
- Pending: Focus on incomplete tasks
- Completed: Review finished tasks
- Search: Find tasks by title or description content
src/
├── components/
│ ├── TodoApp.tsx # Main app component
│ ├── TaskForm.tsx # Task creation/editing form
│ ├── TaskList.tsx # Task list container
│ ├── TaskItem.tsx # Individual task component
│ ├── TaskStats.tsx # Statistics dashboard
│ └── TaskFilters.tsx # Search and filter controls
├── App.tsx # Root component with auth
└── main.tsx # App entry point
convex/
├── schema.ts # Database schema definition
├── tasks.ts # Task CRUD operations
├── auth.ts # Authentication setup
└── _generated/ # Auto-generated Convex files
getTasks(filter?, search?)- Fetch filtered and searched tasksgetTaskStats()- Get task completion statistics
createTask(title, description?, dueDate?, priority)- Create new taskupdateTask(id, updates)- Update existing tasktoggleTask(id)- Toggle task completion statusdeleteTask(id)- Delete a task
tasks: {
title: string // Task title (required)
description?: string // Optional description
completed: boolean // Completion status
userId: Id<"users"> // Owner reference
dueDate?: number // Optional due date timestamp
priority: "low" | "medium" | "high" // Priority level
_creationTime: number // Auto-generated timestamp
_id: Id<"tasks"> // Auto-generated unique ID
}- Push your code to GitHub
- Connect your repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on push
- Build the project:
npm run build - Deploy the
distfolder to Netlify - Set up environment variables
- Configure redirects for SPA routing
The app uses Convex for backend services, so no additional environment variables are needed for basic functionality.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Commit with descriptive messages:
git commit -m "Add feature description" - Push to your branch:
git push origin feature-name - Create a Pull Request
This project is open source and available under the MIT License.
Built with ❤️ using React and Convex