A production-ready task tracker built with MongoDB, Express, React, and Node.js. It includes a polished responsive dashboard, full CRUD APIs, search, filters, sorting, dark mode, draft persistence, animated stats, and toast-driven UX.
- Create, read, update, and delete tasks without page refreshes
- Search by task title or description
- Filter by status and priority
- Sort by newest, oldest, due date, or priority
- Inline title validation
- Confirmation modal before delete
- Dark mode stored in local storage
- Local storage draft while creating a task
- Loading states, empty state, hover effects, and Framer Motion animations
Frontend: React, Vite, React Router, Axios, React Icons, Framer Motion, React Hot Toast, CSS
Backend: Node.js, Express, MongoDB Atlas, Mongoose, CORS, dotenv
https://task-track-zeta-jet.vercel.app
TaskTracker/
client/
src/
components/
DeleteModal.jsx
EmptyState.jsx
FilterBar.jsx
Loader.jsx
Navbar.jsx
SearchBar.jsx
TaskCard.jsx
TaskForm.jsx
TaskList.jsx
TaskStats.jsx
pages/
Dashboard.jsx
services/
api.js
App.jsx
index.css
main.jsx
.env.example
index.html
package.json
vite.config.js
server/
config/
db.js
controllers/
taskController.js
models/
Task.js
routes/
taskRoutes.js
.env.example
package.json
server.js
README.md
cd server
npm install
cd ../client
npm installCreate server/.env:
PORT=5000
MONGO_URI=mongodb+srv://<username>:<password>@<cluster-url>/task-tracker?retryWrites=true&w=majority
CLIENT_URL=http://localhost:5173Create client/.env:
VITE_API_URL=http://localhost:5000Start the backend:
cd server
npm startStart the frontend:
cd client
npm run devOpen http://localhost:5173.
| Method | Endpoint | Description |
|---|---|---|
| GET | /tasks |
Get all tasks |
| GET | /tasks/:id |
Get one task |
| POST | /tasks |
Create a task |
| PUT | /tasks/:id |
Update a task |
| DELETE | /tasks/:id |
Delete a task |
- Push the repository to GitHub.
- Create a new Render Web Service.
- Set root directory to
server. - Build command:
npm install. - Start command:
npm start. - Add environment variables:
PORT,MONGO_URI, andCLIENT_URL. - Deploy and copy the Render service URL.
- Import the GitHub repository into Vercel.
- Set root directory to
client. - Build command:
npm run build. - Output directory:
dist. - Add
VITE_API_URLusing the Render backend URL. - Deploy.