Skip to content

Latest commit

Β 

History

81 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’ΌProject Management PlatformπŸ“Š

Modern Full-Stack Project Management with Real-time Collaboration & Automated Notifications

Last Commit Languages License Version

Built with cutting-edge technologies for modern team collaboration:

React Express PostgreSQL Node.js Clerk Prisma Tailwind CSS

πŸš€ Live Demo

Visit the πŸ‘‰ LINK πŸ”—

Dashboard View Project Management
Dashboard Projects

πŸ“‹ Table of Contents


✨ Features

🏒 Organization Management

  • Create multiple organizations
  • Invite and manage team members
  • Role-based access control
  • Workspace isolation

πŸ“‹ Project & Task Management

  • Create and manage projects
  • Create tasks with assignees and due dates
  • Task prioritization and categorization
  • Real-time project updates

πŸ”” Smart Notifications

  • Email notifications for new task assignments
  • Due date reminder emails
  • Real-time in-app notifications
  • Background job processing with Inngest

πŸ‘₯ Team Collaboration

  • Invite team members via email
  • Assign tasks to team members
  • Track team activity and performance
  • Project analytics and insights

πŸ›  Tech Stack

Frontend

React Redux Toolkit React Router Tailwind CSS Vite Axios

Backend

Node.js Express.js PostgreSQL Prisma

Services & APIs

Clerk Inngest Neon PostgreSQL WebSockets


πŸ—οΈ Project Structure

project-management/
β”œβ”€β”€ πŸ“ client/                    # React Frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”‚   β”œβ”€β”€ store.js         # Redux store configuration
β”‚   β”‚   β”‚   └── themeSlice.js    # Theme management
β”‚   β”‚   β”œβ”€β”€ assets/              # Static assets
β”‚   β”‚   β”œβ”€β”€ components/          # Reusable React components
β”‚   β”‚   β”œβ”€β”€ configs/
β”‚   β”‚   β”œβ”€β”€ features/            # Feature slices
β”‚   β”‚   β”œβ”€β”€ pages/               # Application pages
β”‚   β”‚   β”œβ”€β”€ App.jsx              # Main App component
β”‚   β”‚   β”œβ”€β”€ index.css            # Global styles
β”‚   β”‚   └── main.jsx             # Entry point
β”‚   β”œβ”€β”€ .env                     # Environment variables
β”‚   β”œβ”€β”€ package.json             # Frontend dependencies
β”‚   └── vite.config.js           # Vite configuration
β”‚
β”œβ”€β”€ πŸ“ server/                   # Express Backend
β”‚   β”œβ”€β”€ configs/
β”‚   β”œβ”€β”€ controllers/             # Route controllers
β”‚   β”œβ”€β”€ inngest/                 # Background jobs
β”‚   β”œβ”€β”€ middlewares/             # Express middlewares
β”‚   β”œβ”€β”€ prisma/                  # Database schema
β”‚   β”œβ”€β”€ routes/                  # API routes
β”‚   β”œβ”€β”€ .env                     # Server environment variables
β”‚   β”œβ”€β”€ package.json             # Backend dependencies
β”‚   └── server.js               # Server entry point
β”‚
β”œβ”€β”€ LICENSE                      # ISC License
└── README.md                   # This file

πŸ“¦ Package Scripts

Frontend (Client):

{
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint .",
    "preview": "vite preview"
  }
}

Backend (Server):

{
  "scripts": {
    "postinstall": "npx prisma generate",
    "server": "nodemon server.js",
    "start": "prisma generate && node server.js"
  }
}

⚑ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • PostgreSQL (or Neon PostgreSQL account)
  • Clerk account for authentication
  • Inngest account for background jobs

Clone the repository:

git clone https://github.com/elyse502/project-management.git
cd project-management

Backend Setup

cd server
npm install
cp .env.example .env
# Configure your environment variables
npm run server

Frontend Setup

cd client
npm install
cp .env.example .env
# Configure your environment variables
npm run dev

Environment Variables

Server (.env):

DATABASE_URL="neon_postgresql_connection_string"
CLERK_SECRET_KEY="your_clerk_secret_key"
INNGEST_EVENT_KEY="your_inngest_event_key"
EMAIL_HOST="smtp.gmail.com"
EMAIL_PORT=587
EMAIL_USER="your_email@gmail.com"
EMAIL_PASS="your_app_password"

Client (.env):

VITE_CLERK_PUBLISHABLE_KEY="your_clerk_publishable_key"
VITE_API_URL="http://localhost:5000/api"

πŸ—„οΈ Database Schema

The application uses Neon PostgreSQL with Prisma ORM. Core models include:

  • User - Managed by Clerk authentication
  • Organization - Workspace/company entities
  • Member - Organization team members
  • Project - Projects within organizations
  • Task - Individual tasks with assignees
  • Comment - Task/project comments
  • Notification - User notifications

πŸ“‘ API Endpoints

Authentication (Clerk)

  • User signup/login via Clerk
  • Organization-based access control
  • Protected API routes with middleware

Workspaces

  • GET /api/workspaces - List user's workspaces
  • POST /api/workspaces - Create new workspace
  • POST /api/workspaces/:id/invite - Invite members

Projects

  • GET /api/projects - List organization projects
  • POST /api/projects - Create new project
  • GET /api/projects/:id - Get project details
  • PUT /api/projects/:id - Update project
  • DELETE /api/projects/:id - Delete project

Tasks

  • GET /api/tasks - List project tasks
  • POST /api/tasks - Create new task
  • PUT /api/tasks/:id - Update task status
  • POST /api/tasks/:id/assign - Assign task to member

πŸ”„ Background Jobs

The application uses Inngest for handling background jobs:

  1. Email Notifications - Send task assignment emails
  2. Due Date Reminders - Send reminder emails 24h before due date
  3. Clerk Webhooks - Handle user/organization sync events
  4. Analytics Processing - Process project statistics

🎨 UI/UX Features

  • Responsive Design - Works on all devices
  • Dark/Light Mode - Theme toggle support
  • Real-time Updates - WebSocket connections for live updates
  • Drag & Drop - Task status updates
  • Charts & Analytics - Project insights with Recharts
  • Calendar View - Task scheduling and due dates

πŸš€ Deployment

Vercel Deployment

Both client and server are configured for Vercel deployment with vercel.json configuration files.

Database

  • Uses Neon PostgreSQL for serverless database
  • Connection pooling for optimal performance
  • Automatic backups and scaling

πŸ“Š Future Enhancements

  • File attachments for tasks
  • Time tracking for tasks
  • Gantt chart visualization
  • Mobile application
  • Integrations (Slack, GitHub, etc.)
  • Advanced reporting and exports

πŸ“ License

This project is licensed under the MIT License. See the LICENSE file for details.


🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Support

For support, email elyseniyibizi502@gmail.com or create an issue in the GitHub repository.


πŸ“ž Contact

For any questions or support, please contact:

LinkedIn @phenrysay pH-7


Built with ❀️ using modern web technologies πŸš€

Streamline your team's workflow with powerful project management tools

⬆ Back to Top