A production-ready full-stack collaborative task management application built with modern web technologies, real-time updates, secure authentication, and cloud deployment.
- User authentication with secure HTTP-only cookies
- Create, update, delete tasks (CRUD)
- Assign tasks to other users
- Role-based access control
- Filter & sort tasks by status, priority, and due date
- Socket.IO powered real-time task updates
- Assigned users see updates instantly without page refresh
- Email notifications when a task is assigned
(Nodemailer + SMTP)
- JWT authentication stored in HTTP-only cookies
- Production-ready CORS configuration
- Environment-based secrets (no hardcoded credentials)
- React + TypeScript
- Vite
- Tailwind CSS
- ShadcnUI
- React Query (server-state & caching)
- Socket.IO Client
- zod
- React-hook-form
- Node.js + Express
- TypeScript
- Prisma ORM (v7)
- Socket.IO
- Nodemailer
- Zod for validation
- PostgreSQL (Neon – Serverless Postgres)
- Docker (frontend & backend)
- Render (cloud deployment)
client (React)
|
| HTTP + Cookies
| WebSockets
↓
server (Express + Socket.IO)
|
| Prisma ORM
↓
PostgreSQL (Neon)
-
Frontend deployed as a static site
-
Backend runs as a Dockerized web service
-
Database managed externally via Neon
- User logs in
- Backend issues a JWT
- JWT stored in an HTTP-only cookie
- Cookie is sent automatically on every request
- Backend validates JWT via middleware
- ✔ No tokens stored in localStorage
- ✔ All protected routes enforced on the backend
- Client establishes a WebSocket connection
- Task CRUD actions emit socket events
- Other connected clients receive updates
- React Query cache is invalidated automatically
- ➡️ Result: Instant UI updates across users
- Task is assigned to a user
- Backend sends an email via SMTP
- Assignee receives notification with task details
- Runs on every push and pull_request.
- Install dependencies
- Generate Prisma Client
- Build backend & frontend
- Build Docker images ✅ Ensures build stability before deployment
Backend
- Render Web Service
- Docker-based deployment
- Environment variables injected securely
- Connected to Neon PostgreSQL
Frontend
- Render Static Site
- Optimized Vite production build
- Environment-specific API base URL
Backend
DATABASE_URL=postgresql://...
JWT_SECRET=your_secret
FRONTEND_URL=https://your-frontend.onrender.com
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_password
Frontend
VITE_API_BASE_URL=https://your-backend.onrender.com/api/v1
- Real-world full-stack architecture
- Secure authentication patterns
- Realtime systems using WebSockets
- ORM-based SQL database design
- Production deployment with Docker
- Clean, scalable code structure