A modern, responsive task management application built with the MERN stack. Organize your projects and tasks efficiently with a clean, intuitive interface.
- User Authentication - Secure registration and login with JWT
- Project Management - Create, update, and delete projects
- Task Management - Add tasks with status tracking (Todo, In Progress, Done)
- Responsive Design - Works seamlessly on desktop and mobile devices
- Real-time Updates - Instant status changes and task updates
- Modern UI - Built with React, Tailwind CSS, and Lucide icons
- React 19 - Modern React with hooks
- Vite - Fast development server and build tool
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- Axios - HTTP client for API calls
- React Toastify - Notification system
- Lucide React - Beautiful icons
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - Authentication tokens
- bcryptjs - Password hashing
- CORS - Cross-origin resource sharing
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm (v9 or higher) or yarn
- MongoDB (running locally or MongoDB Atlas)
- Git
git clone <repository-url>
cd task-boardInstall both frontend and backend dependencies:
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../client
npm installCreate a .env file in the backend directory:
cd backend
cp .env.example .envUpdate the .env file with your configuration:
# Database
MONGODB_URI=mongodb://localhost:27017/taskboard
# JWT
JWT_SECRET=your_jwt_secret_key_here_make_it_long_and_random
COOKIE_EXPIRE=1
# Server
PORT=5000
NODE_ENV=developmentMake sure MongoDB is running on your system:
# For local MongoDB installation
mongod
# Or use MongoDB Atlas for cloud database
# Update MONGODB_URI in .env with your Atlas connection stringStart both the backend and frontend servers:
# Terminal 1 - Start backend server
cd backend
npm run dev
# Terminal 2 - Start frontend server
cd client
npm run devThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
For testing purposes, the application comes with two pre-created user accounts:
{
"firstname": "John",
"lastname": "Doe",
"email": "john89@example.com",
"password": "John@90"
}{
"firstname": "Mandeep",
"lastname": "Singh",
"email": "MandeepS89@example.com",
"password": "Mandep@156"
}These users already have projects and tasks created in the system, which you can use to explore the application's features without needing to create new accounts from scratch.
task-board/
βββ client/ # React frontend
β βββ public/ # Static assets and logo
β βββ src/
β β βββ components/ # Reusable React components
β β βββ context/ # React context providers
β β βββ assets/ # Images and styles
β β βββ App.jsx # Main App component
β β βββ main.jsx # App entry point
β βββ package.json
β βββ vite.config.js
βββ backend/ # Node.js backend
β βββ src/
β β βββ config/ # Database and server configuration
β β βββ controllers/ # Route controllers
β β βββ middleware/ # Express middleware
β β βββ models/ # Mongoose models
β β βββ app.js # Express app setup
β βββ .env.example # Environment variables template
β βββ package.json
βββ FRD.md # Functional Requirements Document
βββ README.md # This file
User Registration/Login β JWT Token Generation β Protected Route Access β Dashboard
Dashboard β Create Project β Project List β View Project Tasks
Select Project β Add Task β Update Status β Edit/Delete Task
POST /api/auth/register- User registrationPOST /api/auth/login- User login
GET /api/projects- Get all user projectsPOST /api/projects- Create new projectPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
GET /api/projects/:projectId/tasks- Get all tasks for a projectPOST /api/projects/:projectId/tasks- Create new taskPUT /api/tasks/:id- Update taskDELETE /api/tasks/:id- Delete task
Tasks can have one of three statuses:
- Todo - New tasks that haven't been started
- In Progress - Tasks currently being worked on
- Done - Completed tasks
- JWT-based authentication
- Password hashing with bcryptjs
- Input validation and sanitization
- CORS configuration
- Protected API routes
Currently, the project uses manual testing. To add automated testing:
# Backend testing (when implemented)
cd backend
npm test
# Frontend testing (when implemented)
cd client
npm testcd client
npm run buildcd backend
npm start- Build the frontend:
npm run build - Deploy the
distfolder to your hosting provider - Set environment variables for API URL
- Set environment variables in your hosting platform
- Deploy the backend directory
- Ensure MongoDB is accessible (Atlas recommended)
- Frontend: https://tws-task-board.vercel.app/
- Backend API: https://tws-task-board.onrender.com
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-name - Open a pull request
This project is licensed under the ISC License.
-
MongoDB Connection Error
- Ensure MongoDB is running
- Check MONGODB_URI in .env file
- Verify network connectivity
-
Port Already in Use
- Change PORT in backend .env file
- Kill processes using the port:
lsof -ti:5000 | xargs kill
-
CORS Issues
- Ensure frontend URL is allowed in backend CORS configuration
- Check API endpoints are correctly called
-
JWT Token Issues
- Clear browser localStorage
- Check JWT_SECRET in .env file
- Verify token expiration settings
For support and questions:
- Create an issue in the repository
- Check the FRD.md for detailed requirements
- Review the code comments for implementation details
Made with β€οΈ using MERN Stack
