A comprehensive project management application designed to streamline task assignments, project tracking, collaboration, and progress monitoring. Built using Next.js, Tailwind CSS, PostgreSQL, and Prisma, this application ensures an intuitive, user-friendly experience for teams of all sizes.
The Project Management App allows teams to effectively manage their projects, tasks, and collaboration efforts in one platform. With role-based permissions, users can create and manage projects, assign tasks, track progress using a Kanban board, and monitor deadlines. The app is scalable and responsive, ensuring optimal performance on both desktop and mobile devices.
Frontend:
Backend:
Database:
Authentication:
git clone https://github.com/NoviceLab/project-management-app.git
cd project-management-app
npm install
Create a .env
file and configure the following:
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
JWT_SECRET=your_jwt_secret
npx prisma migrate dev
npm run dev
/login
- User login page./signup
- User registration page./projects
- List of projects for a user./projects/[id]
- Detailed view of a specific project, including tasks and team members./tasks/[id]
- Detailed view of a specific task./profile
- User profile management.POST /api/auth/signup
- Register a new user.POST /api/auth/login
- User login.GET /api/projects
- Fetch all projects for a user.POST /api/projects
- Create a new project.PUT /api/projects/[id]
- Update a specific project.DELETE /api/projects/[id]
- Delete a specific project.GET /api/tasks/[projectId]
- Fetch tasks for a specific project.POST /api/tasks
- Create a new task.PUT /api/tasks/[id]
- Update a specific task.DELETE /api/tasks/[id]
- Delete a specific task.Using Prisma ORM, the database is structured with the following schema:
model User {
id Int @id @default(autoincrement())
name String
email String @unique
password String
role Role @default(USER)
projects Project[]
}
model Project {
id Int @id @default(autoincrement())
name String
description String?
deadline DateTime?
ownerId Int
owner User @relation(fields: [ownerId], references: [id])
tasks Task[]
}
model Task {
id Int @id @default(autoincrement())
title String
description String?
status Status @default(TODO)
projectId Int
project Project @relation(fields: [projectId], references: [id])
assignedTo User? @relation(fields: [assignedToId], references: [id])
assignedToId Int?
}
enum Role {
ADMIN
MANAGER
USER
}
enum Status {
TODO
IN_PROGRESS
COMPLETED
}
We welcome contributions from the open-source community. Below are our contributors:
This project is licensed under the MIT License - see the LICENSE file for details.