Skip to content

kampusublreborn/Project-Management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧩 Project Management System

A web-based project and task management application built with Node.js, Express, EJS, PostgreSQL, and Prisma ORM.
This application enables teams to manage projects, assign tasks, track progress, and collaborate effectively.


πŸš€ Features

🧱 Core Features

  • βœ… Project Management β€” Create, edit, and delete projects
  • βœ… Task Management β€” Manage tasks with priorities, deadlines, and statuses
  • βœ… Team Collaboration β€” Assign tasks to team members
  • βœ… Progress Tracking β€” Monitor project and task progress in real-time
  • βœ… Responsive Interface β€” Access from desktop, tablet, or mobile

πŸ” Security Features

  • πŸ”‘ User Authentication β€” Login/register with session management
  • πŸ‘οΈ Public Access β€” View projects and tasks without login (read-only)
  • πŸ›‘οΈ Role-based Access β€” Only project owners can edit

βš™οΈ Advanced Features

  • πŸ“Š Statistics Dashboard β€” Review project and task metrics
  • πŸ”” Status Notifications β€” Alerts for approaching deadlines
  • 🎯 Task Prioritization β€” Priority system (Low, Medium, High, Urgent)
  • πŸ“… Time Management β€” Manage timelines and deadlines
  • πŸ’» Modern UI/UX β€” Built with Bootstrap 5 for a user-friendly experience

πŸ› οΈ Technology Stack

Backend

  • Node.js β€” JavaScript runtime
  • Express.js β€” Web framework
  • Express Session β€” Session management
  • BCryptJS β€” Password encryption
  • Connect Flash β€” Flash message system

Frontend

  • EJS β€” Template engine
  • Bootstrap 5 β€” CSS framework
  • Font Awesome β€” Icons
  • JavaScript β€” Client-side scripting

Database & ORM

  • PostgreSQL β€” Relational database
  • Prisma ORM β€” Database toolkit and ORM
  • Docker β€” Containerization

Development Tools

  • Nodemon β€” Auto-restart during development
  • Dotenv β€” Manage environment variables

πŸ“ Project Structure

web-pm/
β”œβ”€ src/
β”‚  β”œβ”€ controllers/
β”‚  β”‚  β”œβ”€ authController.js
β”‚  β”‚  β”œβ”€ projectController.js
β”‚  β”‚  └─ taskController.js
β”‚  β”œβ”€ middlewares/
β”‚  β”‚  β”œβ”€ auth.js
β”‚  β”‚  └─ flash.js
β”‚  β”œβ”€ routes/
β”‚  β”‚  β”œβ”€ auth.js
β”‚  β”‚  β”œβ”€ projects.js
β”‚  β”‚  β”œβ”€ tasks.js
β”‚  β”‚  └─ public.js
β”‚  β”œβ”€ views/
β”‚  β”‚  β”œβ”€ layouts/
β”‚  β”‚  β”‚  β”œβ”€ main.ejs
β”‚  β”‚  β”‚  └─ public.ejs
β”‚  β”‚  β”œβ”€ public/
β”‚  β”‚  β”‚  β”œβ”€ projects.ejs
β”‚  β”‚  β”‚  β”œβ”€ project-detail.ejs
β”‚  β”‚  β”‚  └─ tasks.ejs
β”‚  β”‚  β”œβ”€ projects/
β”‚  β”‚  β”‚  β”œβ”€ list.ejs
β”‚  β”‚  β”‚  β”œβ”€ show.ejs
β”‚  β”‚  β”‚  └─ edit.ejs
β”‚  β”‚  β”œβ”€ tasks/
β”‚  β”‚  β”‚  β”œβ”€ list.ejs
β”‚  β”‚  β”‚  └─ show.ejs
β”‚  β”‚  β”œβ”€ index.ejs
β”‚  β”‚  β”œβ”€ login.ejs
β”‚  β”‚  └─ register.ejs
β”‚  β”œβ”€ utils/
β”‚  β”‚  └─ password.js
β”‚  β”œβ”€ prismaClient.js
β”‚  └─ app.js
β”œβ”€ prisma/
β”‚  β”œβ”€ schema.prisma
β”‚  └─ seed.js
β”œβ”€ .env
β”œβ”€ docker-compose.yml
β”œβ”€ package.json
└─ README.md

βš™οΈ Installation & Setup

πŸ“‹ Prerequisites

  • Node.js (v16 or higher)
  • Docker & Docker Compose
  • PostgreSQL (or use Docker container)

🧩 Steps

  1. Clone repository

    git clone <repository-url>
    cd web-pm
  2. Install dependencies

    npm install
  3. Setup environment variables

    cp .env.example .env

    Edit .env file:

    DATABASE_URL="postgresql://admin:password@localhost:5432/project_management?schema=public"
    SESSION_SECRET="your-secret-key-here"
    PORT=3000
  4. Run database with Docker

    docker-compose up -d
  5. Setup Prisma and seed database

    npx prisma generate
    npx prisma db push
    npm run db:seed
  6. Run the application

    # Development
    npm run dev
    
    # Production
    npm start
  7. Access the application


πŸ‘€ Default Account

Email Password
admin@example.com password123

πŸ—„οΈ Database Models

User

Field Description
id Unique identifier
email User email (unique)
password Encrypted password
name Full name
projects One-to-many relation to Project
tasks One-to-many relation to Task

Project

Field Description
id Unique identifier
name Project name
description Project description
startDate Start date
endDate End date
managerId User who created the project
tasks One-to-many relation to Task

Task

Field Description
id Unique identifier
title Task title
description Task description
status Task status (PENDING, IN_PROGRESS, COMPLETED, CANCELLED)
priority Priority (LOW, MEDIUM, HIGH, URGENT)
dueDate Deadline
projectId Related project ID
assigneeId Assigned user ID

🌐 Routes & Endpoints

Public Routes

  • GET / β€” Home page
  • GET /public/projects β€” List public projects
  • GET /public/projects/:id β€” Project details
  • GET /public/tasks β€” List public tasks

Authentication Routes

  • GET /login β€” Login form
  • POST /auth/login β€” Login
  • GET /register β€” Registration form
  • POST /auth/register β€” Register
  • POST /auth/logout β€” Logout

Protected Routes (Require Login)

Projects

  • GET /projects β€” List user’s projects
  • GET /projects/:id β€” View project details
  • GET /projects/:id/edit β€” Edit project
  • POST /projects β€” Create project
  • PUT /projects/:id β€” Update project
  • DELETE /projects/:id β€” Delete project

Tasks

  • GET /tasks β€” List tasks
  • GET /tasks/:id β€” Task details
  • POST /tasks β€” Create task
  • PUT /tasks/:id β€” Update task
  • PATCH /tasks/:id/status β€” Update status
  • DELETE /tasks/:id β€” Delete task

πŸ’‘ Usage Guide

For New Users

  1. Register an account
  2. Login with your credentials
  3. Create a project
  4. Add tasks to your project

Main Features

  • Create/edit/delete projects and tasks
  • Assign members and manage priorities
  • Track project progress
  • View dashboards and notifications

Public Access

  • Guests can view projects/tasks (read-only)
  • Share project links publicly

πŸ› Troubleshooting

Issue Solution
Database connection error Ensure Docker is running and .env is configured correctly
Prisma client error Run npx prisma generate then restart app
Session error Set SESSION_SECRET in .env and clear cookies
Port already in use Change PORT in .env or stop conflicting process

🧰 Development Commands

# Run app with auto reload
npm run dev

# Prisma commands
npx prisma db push
npx prisma studio
npm run db:seed

# Production mode
npm start

🀝 Contributing

  1. Fork the repository
  2. Create a new branch
    git checkout -b feature/awesome-feature
  3. Commit your changes
    git commit -m "Add awesome feature"
  4. Push to branch
    git push origin feature/awesome-feature
  5. Create a Pull Request

Guidelines

  • Follow existing coding style
  • Add tests for new features
  • Update documentation
  • Ensure all tests pass

πŸ“ License

Distributed under the MIT License.
See the LICENSE file for more information.


πŸ‘₯ Development Team

Developed with ❀️ by the Web-PM Development Team.


πŸ“ž Support

If you encounter issues or have questions:

  • Check the Troubleshooting section
  • Create an issue in the repository
  • Contact the development team

Releases

No releases published

Packages

 
 
 

Contributors