A full-stack team task management web application built for collaborative project and task management. This application allows users to create projects, assign tasks, track progress, and manage team members with role-based access control. It's designed as a simplified version of tools like Trello or Asana.
This project demonstrates full-stack development skills including frontend, backend, database design, authentication, and deployment.
- User registration with name, email, and password
- Secure login using JWT authentication
- Password hashing with bcrypt
- Create new projects (creator automatically becomes Admin)
- Admin can add/remove team members by email
- Members can view projects they are assigned to
- Create tasks with title, description, due date, and priority
- Assign tasks to specific users
- Update task status: To Do, In Progress, Done
- Track task progress within projects
- Overview of total tasks
- Tasks grouped by status
- Tasks assigned per user
- Identification of overdue tasks
- Admin: Full access to manage tasks, users, and project members
- Member: Can view and update only their assigned tasks
- React 19
- Vite (build tool)
- React Router DOM (routing)
- Axios (HTTP client)
- CSS (styling)
- Node.js
- Express.js
- Prisma ORM
- PostgreSQL (database)
- JWT (authentication)
- bcrypt (password hashing)
- CORS (cross-origin resource sharing)
- Render (Backend deployment)
- Vercel (Frontend Deployment)
- Node.js (v16 or higher)
- npm
- PostgreSQL database
- Git
- Clone the repository:
git clone https://github.com/your-username/team-task-manager.git
cd team-task-manager- Install dependencies for both frontend and backend:
# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm installCopy the example environment file and configure it:
cd backend
cp .env.example .envEdit backend/.env with your values:
DATABASE_URL=your_postgresql_database_url
JWT_SECRET=your_jwt_secret_key
PORT=5000
FRONTEND_URL=https://team-task-manager-black-one.vercel.app/Copy the example environment file and configure it:
cd ../frontend
cp .env.example .envEdit frontend/.env with your values:
VITE_API_URL=https://team-task-manager-h8th.onrender.comcd backend
npx prisma migrate dev
npm run devThe backend will run on http://localhost:5000
cd frontend
npm run devThe frontend will run on http://localhost:5173
This application is deployed using Render for the backend and Vercel for the frontend. Follow these steps to deploy:
- Create a new Render service for your backend
- Connect your GitHub repository
- Set the build command:
npm install - Set the start command:
npm run dev - Set environment variables in Render:
DATABASE_URL: Your PostgreSQL database URLJWT_SECRET: A secure JWT secretPORT: 5000 (or Render's assigned port)FRONTEND_URL: Your frontend Vercel URL
- Deploy the backend service
- Create a new Vercel project for the frontend
- Connect the same repository
- Set the root directory to
frontend - Set build command:
npm run build - Set environment variables:
VITE_API_URL: Your backend Render URL
- Deploy the frontend service
- Use Render's PostgreSQL service or connect to an external PostgreSQL instance
- Run migrations:
npx prisma migrate deploy
POST /api/auth/register- User registrationPOST /api/auth/login- User login
GET /api/projects- Get user's projectsPOST /api/projects- Create new projectGET /api/projects/:id- Get project detailsPUT /api/projects/:id/members- Add/remove members (Admin only)
GET /api/tasks- Get user's tasksPOST /api/tasks- Create new taskPUT /api/tasks/:id- Update taskDELETE /api/tasks/:id- Delete task
- Register a new account or login
- Create a new project
- Add team members to the project (as Admin)
- Create tasks and assign them to team members
- Update task status as work progresses
- View dashboard for project overview
Demo Video - 2-5 minute explanation of the project
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the ISC License.
- Create a PostgreSQL database on Render.
- Copy the Render database external connection string.
- Create a Render Web Service for the
backendfolder. - Set build command:
npm install- Set start command:
npm start-
Add backend environment variables:
DATABASE_URLJWT_SECRETFRONTEND_URL=https://your-frontend.vercel.app
-
After deploy, run the migration command from the backend service shell:
npx prisma migrate deployHealth check:
GET https://your-backend.onrender.com/
Expected response:
API is running
- Import the
frontendfolder into Vercel. - Set build command:
npm run build- Set output directory:
dist
- Add frontend environment variable:
VITE_API_URL=https://your-backend.onrender.com- Redeploy after adding the environment variable.
- Live Vercel frontend URL
- Live Render backend URL
- GitHub repository URL
- README with setup and deployment steps
- 2-5 minute demo video covering auth, projects, members, tasks, dashboard, and role-based access