βββββββ βββββββ βββββββ βββββββββββ ββββββββββββββββ
βββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
βββββββββββββββββββ βββ βββββββββ βββ βββ
βββββββ βββββββββββ βββββ βββββββββ βββ βββ
βββ βββ ββββββββββββββββββββββββββββββββββββ βββ
βββ βββ βββ βββββββ ββββββ ββββββββ βββββββ βββ
A modern, feature-rich project management platform built for teams who move fast.
- β¨ Overview
- π― Live Demo
- πΌοΈ Features
- π οΈ Tech Stack
- π Project Structure
- βοΈ Getting Started
- π Environment Variables
- π Deployment
- π Database Schema
- π API Reference
- π€ Contributing
- π License
ProJect is a full-stack project management application designed to help teams collaborate, organize work, and stay on top of deadlines β all from a single, beautiful interface.
Whether you're managing a startup, running a dev team, or coordinating a side project, ProJect gives you everything you need:
- π’ Multi-workspace support β manage multiple organizations under one account
- π Project & task pipelines β create, assign, and track with precision
- π₯ Team collaboration β invite members, set roles, and work together
- π§ Smart email notifications β get notified on task assignments and due date reminders
- π Analytics & calendar views β visualize your work, track progress at a glance
- π Light & Dark mode β because good tools respect your preferences
Sign up with Google or email to explore the full application. Create a workspace, spin up projects, invite collaborators, and manage tasks β all live.
- Secure sign-up and sign-in via email or Google OAuth
- Profile management with avatar support
- Session-based protected routes
- Create and switch between multiple organizations/workspaces
- Invite team members to workspaces via email
- Role-based access control within workspaces
- Create, update, and delete projects within workspaces
- Add specific members to individual projects
- View project details, team, and associated tasks in one place
- Project settings for name, description, and member management
- Create detailed tasks with title, description, status, and priority
- Assign tasks to specific team members
- Set and track due dates
- Update task statuses:
Todo β In Progress β In Review β Done - Delete tasks with confirmation
- Add comments to tasks for discussion and updates
- Threaded communication directly on task cards
- Real-time updates on comment submissions
- Automatic email on task assignment β assignees get notified instantly
- Due date reminder emails β scheduled reminders sent before deadlines
- HTML-formatted, professional email templates
- Overview stats: total projects, completed projects, assigned tasks, overdue tasks
- Task Summary panel with status breakdown
- Recent Activity feed across the workspace
- Project Analytics with visual charts (Recharts)
- Calendar view for date-based task management
- Bell icon in the navbar with a live unread badge counter
- Personalized notifications using the logged-in user's name via Clerk
- Notification types supported:
task assignment,workspace invitation,mention,deadline - Click any notification to mark it as read β unread items highlighted in blue
- "Mark all read" button to clear the badge in one click
- Dismiss individual notifications with the β button
- Empty state with "No notifications yet" when the list is clear
- Dropdown closes automatically on outside click
- Timestamps displayed as relative time β
2m ago,1h ago,3h ago
- Light / Dark mode toggle
- Fully responsive design for desktop and mobile
- Clean sidebar navigation with workspace context
| Technology | Purpose |
|---|---|
| ReactJS 18 | UI framework |
| Tailwind CSS | Utility-first styling |
| Redux Toolkit | Global state management |
| React Router DOM | Client-side routing |
| Recharts | Data visualization / analytics charts |
| Lucide React | Icon library |
| React Hot Toast | Notifications & toasts |
| Technology | Purpose |
|---|---|
| Node.js | Runtime environment |
| Express.js | REST API framework |
| Prisma ORM | Database schema & queries |
| Cors / Dotenv | Middleware & config |
| Nodemailer | Email sending |
| Service | Purpose |
|---|---|
| Neon (Serverless PostgreSQL) | Primary database |
| Clerk | Authentication & organization management |
| Inngest | Background jobs, webhooks & email scheduling |
| Vercel | Frontend & backend deployment |
π¦ project-management-app
β£ π client # React Frontend
β β£ π public
β β β π favicon.ico
β β£ π src
β β β£ π app
β β β β π store.js # Redux store configuration
β β β£ π assets # Static assets (images, icons)
β β β£ π components # Reusable UI components
β β β β£ π AddProjectMember.jsx
β β β β£ π CreateProjectDialog.jsx
β β β β£ π CreateTaskDialog.jsx
β β β β£ π InviteMemberDialog.jsx
β β β β£ π MyTasksSidebar.jsx
β β β β£ π Navbar.jsx
β β β β£ π ProjectAnalytics.jsx
β β β β£ π ProjectCalendar.jsx
β β β β£ π ProjectCard.jsx
β β β β£ π ProjectOverview.jsx
β β β β£ π ProjectSettings.jsx
β β β β£ π ProjectsSidebar.jsx
β β β β£ π ProjectTasks.jsx
β β β β£ π RecentActivity.jsx
β β β β£ π Sidebar.jsx
β β β β£ π StatsGrid.jsx
β β β β£ π TasksSummary.jsx
β β β β π WorkspaceDropdown.jsx
β β β£ π configs
β β β β π api.js # Axios API config
β β β£ π features
β β β β£ π themeSlice.js # Dark/light mode state
β β β β π workspaceSlice.js # Workspace state & async thunks
β β β£ π pages
β β β β£ π Dashboard.jsx
β β β β£ π Layout.jsx
β β β β£ π ProjectDetails.jsx
β β β β£ π Projects.jsx
β β β β£ π TaskDetails.jsx
β β β β π Team.jsx
β β β£ π App.jsx
β β β£ π index.css
β β β π main.jsx
β β£ π .env
β β£ π index.html
β β£ π package.json
β β£ π vercel.json
β β π vite.config.js
β£ π server # Express Backend
β β£ π configs
β β β£ π nodemailer.js # Email transporter setup
β β β π prisma.js # Prisma client instance
β β£ π controllers
β β β£ π commentController.js
β β β£ π projectController.js
β β β£ π taskController.js
β β β π workspaceController.js
β β£ π inngest
β β β π index.js # Background job functions
β β£ π middlewares
β β β π authMiddleware.js # Clerk auth protection
β β£ π prisma
β β β π schema.prisma # DB schema
β β£ π routes
β β β£ π commentRoutes.js
β β β£ π projectRoutes.js
β β β£ π taskRoutes.js
β β β π workspaceRoutes.js
β β£ π .env
β β£ π package.json
β β£ π server.js
β β π vercel.json
β π .gitignore
Before you begin, make sure you have the following installed:
- Node.js v18+
- npm or yarn
- A Clerk account β clerk.com
- A Neon account β neon.tech
- An Inngest account β inngest.com
- An SMTP provider for emails (e.g., Brevo, Gmail, SendGrid)
git clone https://github.com/Saket22-CS/project-management-app.git
cd project-management-appcd client
npm installCreate a .env file inside /client:
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_BACKEND_URL=http://localhost:5000Start the development server:
npm run devThe frontend will run at http://localhost:5173
cd server
npm installCreate a .env file inside /server (see Environment Variables section below).
Push the database schema to Neon:
npx prisma db push
npx prisma generateStart the backend server:
npm run devThe backend will run at http://localhost:5000
In a new terminal:
npx inngest-cli@latest devThis starts the local Inngest runner, which processes webhook events and scheduled email jobs.
VITE_CLERK_PUBLISHABLE_KEY=pk_test_xxxxxxxxxxxxxxxxxxxx
VITE_BACKEND_URL=http://localhost:5000# Clerk
CLERK_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxx
CLERK_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxx
# Neon PostgreSQL
DATABASE_URL=postgresql://user:password@host/dbname?sslmode=require
# Inngest
INNGEST_EVENT_KEY=xxxxxxxxxxxxxxxxxxxx
INNGEST_SIGNING_KEY=signkey-prod-xxxxxxxxxxxxxxxxxxxx
# Email (SMTP via Brevo / SendGrid / Gmail)
SMTP_HOST=smtp-relay.brevo.com
SMTP_PORT=587
SMTP_USER=your_smtp_username
SMTP_PASS=your_smtp_password
EMAIL_FROM=noreply@yourdomain.com
β οΈ Never commit your.envfiles. They are already listed in.gitignore.
This project is deployed using Vercel β both frontend and backend are served independently.
cd client
vercel --prodSet the environment variables in the Vercel dashboard under your project settings.
cd server
vercel --prodThe vercel.json in /server configures the Express app as a serverless function.
- Update Clerk webhook URL β Set the Inngest HTTP endpoint as your Clerk webhook URL in the Clerk dashboard.
- Sync Inngest β Deploy Inngest functions to the cloud by visiting the Inngest dashboard and syncing your deployed backend URL.
- Update frontend API URL β Make sure
VITE_BACKEND_URLin Vercel points to your live backend URL.
The application uses Prisma ORM with a Neon (PostgreSQL) database. Key models:
User β Synced from Clerk via webhooks
Workspace β Represents an organization
Project β Belongs to a workspace
Task β Belongs to a project, assigned to a user
Comment β Belongs to a task
Member β Join table for workspace/project membership
To view or modify the schema:
server/prisma/schema.prisma
Apply any schema changes:
npx prisma db push
npx prisma generateAll routes are prefixed with /api and protected by Clerk authentication middleware.
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Get all workspaces for the current user |
POST |
/add-member |
Add a member to a workspace |
| Method | Endpoint | Description |
|---|---|---|
POST |
/create |
Create a new project |
PUT |
/update/:id |
Update project details |
POST |
/add-member |
Add a member to a project |
| Method | Endpoint | Description |
|---|---|---|
POST |
/create |
Create a new task |
PUT |
/update/:id |
Update task details / status |
DELETE |
/delete/:id |
Delete a task |
| Method | Endpoint | Description |
|---|---|---|
POST |
/add |
Add a comment to a task |
GET |
/:taskId |
Get all comments for a task |
Contributions are welcome! Here's how to get involved:
- Fork the repository
- Create a new branch β
git checkout -b feature/your-feature-name - Commit your changes β
git commit -m 'feat: add your feature' - Push to your branch β
git push origin feature/your-feature-name - Open a Pull Request
Please read the CONTRIBUTING.md and follow the CODE_OF_CONDUCT.md before submitting.
- π Real-time notifications (WebSockets)
- π File attachments on tasks
- π·οΈ Task labels and tagging system
- π Global search across workspaces
- π± Mobile-first responsive improvements
- π Internationalization (i18n)
This project is licensed under the MIT License β see the LICENSE.md file for details.