The Task Management Application is a full-stack web app built using clean architecture principles. It enables users to efficiently manage their tasks with features like task creation, editing, and deletion. The application also includes user authentication, real-time updates, data visualization, and a responsive design for a seamless experience across devices.
- CRUD operations for tasks.
- Real-time task updates.
- Task categorization: Pending, In-Progress, Completed.
- Secure user registration and login using JSON Web Tokens (JWT).
- Authenticated API access for task-related operations.
- WebSocket integration using
Socket.io. - Real-time updates for task modifications.
- Pie chart and Bar chart to visualize task statistics.
- Insights like completed tasks and overdue tasks.
- Mobile-first responsive design using Tailwind css
- Compatibility across various devices and screen sizes.
- Node.js
- TypeScript (for type safety)
- Express.js
- MongoDB
- Socket.io
- JSON Web Tokens (JWT)
- Bcrypt (for hashing passwords)
- React.js
- Redux ToolKit(for state management)
- useForm(custom hook for managing forms)
- zod(for validation)
- TypeScript (for type safety)
- Axios (for API communication)
- Chart.js (for data visualization)
- Tailwind css (for responsive design)
- Toastify (for user friendly toasts)
- Node.js (v20.0x)
- MongoDB (local or cloud instance)
- Git
-
Clone the Repository
git clone https://github.com/Mridulaoc/TaskManagementApp.git cd TaskManagementApp -
Install Dependencies:
-
For the backend
cd server npm install -
For the frontend
cd client npm install
- Set up Environment Variables: Server
-
Create a .env file in the server directory with the following variables:
PORT = 3001 CLIENT_URL = <client_url> MONGO_URI=<mongo_uri> JWT_SECRET_KEY = <jwt_secretkey>
- Set up Environment Variables: Client
-
Create a .env file in the client directory with the following variables:
VITE_API_BASE_URL = <server_url>
-
Run the application:
-
Start the backend server
cd server npm start -
Start the frontend development server
cd client npm run dev
-
-
Access the Application
- Open your browser and visit: http://localhost:<frontend_port>
Endpoints
- POST /: Register a new user.
- POST /login: Login and receive a JWT token.
- POST /admin/signup: Register admin.
- POST /admin/login: Login and receive a JWT token.
- GET /verify-token: Verifying jwt token (requires token).
- GET /:userId/tasks: Getting tasks assignedto a specific user (requires token).
- PATCH /subtasks/:taskId/:subtaskId: Updating subtask (requires token)
- PATCH /:taskId/task: Update task status (requires token).
- GET /admin/users: Fetch all users (requires token).
- GET /admin/get-tasks: Fetch all tasks (requires token).
- POST /admin/task: Create a new task (requires token).
- GET /admin/task/:taskId: Getting a specific task (requires token)
- PUT /admin/task/:taskId: Update an existing task (requires token).
- DELETE /admin/task/:taskId: Delete a task (requires token).
- GET /admin/chart-data/status : Getting data of task status (requires token).
- GET /admin/chart-data/priority : Getting data of priority of tasks(requires token).
The application is hosted live at: https://task-management-app-snowy-sigma.vercel.app
For any queries or suggestions, feel free to reach out:
- Author: Mridula O C
- Email: mridulaOC@gmail.com
- LinkedIn: www.linkedin.com/in/mridulaoc