A modern and responsive frontend for the Task Manager application built using React (Vite).
This application connects to a separate backend REST API to handle authentication and task management.
- User authentication (Login & Register)
- JWT-based protected routes
- Task listing with sorting & filtering
- Create, update, delete, and complete tasks
- Notifications for upcoming & overdue tasks
- Clean UI with responsive design
- API integration using Fetch
- Environment-based configuration
- React.js
- Vite
- JavaScript (ES6+)
- React Router DOM
- CSS (Custom styling)
- Fetch API
frontend/
├── public/
│ └── illustration.png # Static images
│
├── src/
│ ├── api.js # Centralized API calls
│ │
│ ├── components/
│ │ ├── Navbar.jsx
│ │ ├── ProtectedRoute.jsx
│ │ └── TaskTable.jsx
│ │
│ ├── pages/
│ │ ├── Login.jsx
│ │ ├── Register.jsx
│ │ ├── Home.jsx
│ │ ├── Tasks.jsx
│ │ ├── Completed.jsx
│ │ └── Notification.jsx
│ │
│ ├── App.jsx
│ ├── main.jsx
│ └── index.css
│
├── .env # Environment variables
├── package.json
└── README.md
Create a .env file in the root of the frontend project:
VITE_API_URL=http://localhost:5000/api/tasksUpdate this URL after deploying the backend.
git clone <frontend-repo-url>
cd <frontend-project>npm installnpm run devThe app will run at:
http://localhost:5173
- User registers or logs in
- Backend returns a JWT token
- Token is stored in
localStorage - Protected routes require authentication
- Token is sent in the
Authorizationheader
Authorization: Bearer <JWT_TOKEN>
| Page | Description |
|---|---|
| /login | User login |
| /register | User registration |
| / | Protected tasks dashboard |
- Split layout authentication pages with illustrations
- Responsive task table
- Sorting options (date, title, priority, status)
- Loading & empty states
- Clean, minimal styling
- JWT stored in localStorage
- Protected routes using React Router
- CORS handled at backend
Narasimha
Frontend Developer
GitHub: https://github.com/narasimha-146
This repository contains only frontend code.
Backend APIs are maintained in a separate repository.