Pulse is a modern project management platform that helps teams organize projects, manage tasks, and collaborate efficiently. It features secure authentication, Role-Based Access Control (RBAC), AI-powered workspace insights, and a responsive dashboard.
- 🔐 JWT Authentication
- 🌐 Google & GitHub OAuth
- 👥 Role-Based Access Control (Owner, Admin, Manager, Member, Viewer)
- 📁 Project Management
- ✅ Task Management
- 📊 Interactive Dashboard & Analytics
- 🤖 AI Workspace Insights
- 👤 User Profile & Settings
- 🎨 Responsive Modern UI
Frontend
- React
- TypeScript
- Vite
- Tailwind CSS
Backend
- Node.js
- Express.js
- PostgreSQL
- JWT Authentication
- Passport.js
- Google OAuth
- GitHub OAuth
- Docker Desktop
git clone https://github.com/Parvchaudhary040/pulse.git
cd pulsedocker compose up --buildOpen:
- Frontend → http://localhost:3000
- Backend → http://localhost:5000
| Role | Access |
|---|---|
| 👑 Owner | Full Access |
| 🛡 Admin | Manage Users, Projects & Tasks |
| 📋 Manager | Manage Projects & Tasks |
| 👤 Member | Manage Assigned Tasks |
| 👀 Viewer | Read Only |
Frontend: https://pulse-zeta-fawn.vercel.app/
Backend: https://pulse-backend-nw5t.onrender.com
- Create a Neon database and run
database/schema.sqlin the Neon SQL editor. - Create a Render Blueprint from this repository.
render.yamlbuilds and runs the backend service. - In Render, set
DATABASE_URLto Neon's pooled connection string. SetFRONTEND_URLandCORS_ORIGINSto your Vercel URL, then configure both OAuth callback URLs with your Render API URL. - Import this repository into Vercel with
frontendas the Root Directory. SetVITE_API_URLtohttps://YOUR-RENDER-SERVICE.onrender.com/apifor Production, Preview, and Development. Optionally setVITE_APP_URLto your canonical Vercel URL for QR codes; otherwise the QR code uses the current deployed URL.frontend/vercel.jsonkeeps React routes working after a page refresh.
For local Docker, no Neon credentials are required: Compose starts PostgreSQL and explicitly disables database TLS. Copy backend/.env.example only when local OAuth secrets are needed; keep DATABASE_URL empty while using the Docker database.
Parv Chaudhary