A full-stack project management platform with real-time workflows, team collaboration, and organization-level access control.
- 🔐 Authentication & Organizations — Powered by Clerk with support for multi-org workspaces, invitations, and role-based access
- 📁 Project Management — Create, assign, and track projects and tasks across your team
- 📬 Email Notifications — Automated email workflows via Inngest with SendGrid and Nodemailer
- ⚡ Real-time Background Jobs — Inngest-powered event-driven workflows for async task processing
- 🎨 Modern UI — Clean and responsive interface built with React + Tailwind CSS
- 🚀 Fast Development — Vite for lightning-fast HMR and optimized builds
project-management/
├── client/ # React + Vite frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Route-level pages
│ │ ├── hooks/ # Custom React hooks
│ │ └── main.jsx # App entry point
│ ├── index.html
│ ├── vite.config.js
│ └── tailwind.config.js
│
└── server/ # Node.js + Express backend
├── routes/ # API route handlers
├── inngest/ # Background job functions
├── middleware/ # Auth & request middleware
└── index.js # Server entry point
- Node.js
v18+ - A Clerk account (for auth + organizations)
- A SendGrid account (for transactional email)
- An Inngest account (for background jobs)
git clone https://github.com/your-username/project-management-2025.git
cd project-management-2025# Install client dependencies
cd client
npm install
# Install server dependencies
cd ../server
npm installClient — create client/.env:
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_API_BASE_URL=http://localhost:5000Server — create server/.env:
CLERK_SECRET_KEY=your_clerk_secret_key
SENDGRID_API_KEY=your_sendgrid_api_key
NODEMAILER_USER=your_email@gmail.com
NODEMAILER_PASS=your_email_password
INNGEST_EVENT_KEY=your_inngest_event_key
INNGEST_SIGNING_KEY=your_inngest_signing_key
PORT=5000# Start the backend
cd server
npm run dev
# Start the frontend (in a new terminal)
cd client
npm run devOpen http://localhost:5173 in your browser.
Clerk handles user sign-up, login, session management, and organization workspaces. Users can be invited to organizations and assigned roles (admin / member).
Inngest is used for event-driven background jobs such as:
- Sending welcome emails on user registration
- Notifying team members on task assignment
- Scheduled project reminders
Transactional emails are sent via SendGrid (production) and Nodemailer (development/testing), keeping your communication workflow flexible.
| Layer | Platform |
|---|---|
| Frontend | Vercel |
| Backend | Render / Railway |
| Auth | Clerk (hosted) |
| Jobs | Inngest Cloud |
| SendGrid |
This project is licensed under the MIT License.
- GreatStack — for the original tutorial and project inspiration
- Clerk, Inngest, SendGrid — for their excellent developer tools
