A beautiful, modern task management web application built with React.js, TypeScript, Convex DB, and Tailwind CSS. Deployable on Vercel with real-time synchronization.
- Modern UI/UX: Clean, responsive design with Tailwind CSS
- Real-time Sync: Powered by Convex for instant updates across devices
- Task Management: Create, edit, delete, and toggle task completion
- Priority System: Organize tasks with low, medium, and high priorities
- Due Dates: Set and track task deadlines with visual indicators
- Filtering: Filter tasks by completion status and priority
- Statistics: View task completion statistics at a glance
- TypeScript: Full type safety throughout the application
- Responsive: Works perfectly on desktop, tablet, and mobile devices
- Frontend: React 18 with TypeScript
- Styling: Tailwind CSS with custom design system
- Database: Convex (real-time database)
- Icons: Lucide React
- Deployment: Vercel
- Build Tool: Create React App
-
Clone the repository
git clone <your-repo-url> cd task-manager
-
Install dependencies
npm install
-
Set up Convex
npx convex dev
Follow the prompts to create your Convex project and get your deployment URL.
-
Configure environment variables
cp env.example .env.local
Update
.env.localwith your Convex deployment URL:REACT_APP_CONVEX_URL=https://your-convex-deployment.convex.cloud -
Start the development server
npm start
-
Install Vercel CLI
npm i -g vercel
-
Login to Vercel
vercel login
-
Deploy
vercel
-
Set environment variables
vercel env add REACT_APP_CONVEX_URL
Enter your Convex deployment URL when prompted.
- Connect your repository to Vercel
- Set environment variables in the Vercel dashboard:
REACT_APP_CONVEX_URL: Your Convex deployment URL
- Deploy - Vercel will automatically build and deploy your app
The application uses the following Convex schema:
title: Task title (required)description: Optional task descriptioncompleted: Boolean completion statuspriority: Priority level (low, medium, high)dueDate: Optional due date (ISO string)createdAt: Creation timestampupdatedAt: Last update timestampuserId: User identifier
name: User display nameemail: User email addressimage: Optional profile image URL
The app uses Tailwind CSS with a custom color palette. You can customize the design by modifying:
tailwind.config.js- Color scheme and design tokenssrc/index.css- Global styles and custom CSS- Component files - Individual component styling
To add new features:
- Update the Convex schema in
convex/schema.ts - Add new mutations/queries in
convex/tasks.ts - Create new React components in
src/components/ - Update the main
TaskManagercomponent
npm start- Start development servernpm run build- Build for productionnpm test- Run testsnpm run eject- Eject from Create React App
src/
├── components/ # React components
│ ├── TaskManager.tsx # Main application component
│ ├── AddTaskForm.tsx # Task creation form
│ ├── TaskList.tsx # Task list container
│ ├── TaskItem.tsx # Individual task component
│ └── FilterBar.tsx # Task filtering controls
├── App.tsx # Root component with Convex provider
└── index.css # Global styles and Tailwind imports
convex/
├── schema.ts # Database schema definition
└── tasks.ts # Database mutations and queries
-
Convex connection issues
- Ensure your
REACT_APP_CONVEX_URLis correct - Check that your Convex project is deployed and running
- Ensure your
-
Build errors
- Run
npm run buildto check for TypeScript errors - Ensure all dependencies are installed with
npm install
- Run
-
Styling issues
- Verify Tailwind CSS is properly configured
- Check that
src/index.cssimports Tailwind directives
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
If you encounter any issues or have questions, please open an issue on GitHub.
Built with ❤️ using React, Convex, and Tailwind CSS