| Environment | ๐ URL | ๐ Status |
|---|---|---|
| ๐จ Frontend (Vercel) |
๐ข Active | |
| ๐๏ธ Database (Neon PostgreSQL) |
๐ข Active |
Task Manager Pro is a professional full-stack task management application built with modern technologies and best practices. It features secure JWT authentication, real-time optimistic updates, and a responsive dark-themed UI. The application is fully containerized with Docker and deployed to production with CI/CD pipelines.
๐ง Architected by Marcelo Adรกn
"Code orchestrated by me with AI support as a development tool, maintaining professional standards and architectural decisions typical of a Full-Stack developer."
| Dark Mode Dashboard | Light Mode Dashboard |
|---|---|
![]() |
![]() |
| Task Creation Modal | Mobile Responsive View |
|---|---|
![]() |
![]() |
| Image | Description |
|---|---|
| Dark Mode | Main dashboard with dark theme, showing task list with priority badges (MEDIUM, HIGH, URGENT) and "In Progress" status indicators |
| Dashboard | Light mode overview with task statistics (3 total, 0 completed) and progress bars showing 50% completion rate |
| Task Creation | Modal form for creating new tasks with title (8/100 chars), description (0/500 chars), and priority selector (Medium selected) |
| Mobile View | Responsive mobile layout with search bar, progress overview (25% complete), and task cards with "Read More" options |
| Feature | Location |
|---|---|
| โ Dark/Light theme toggle | Both dashboard views |
| โ Priority badges (LOW/MEDIUM/HIGH/URGENT) | Dark Mode screenshot |
| โ Progress tracking | Dashboard (50% bar) |
| โ Form validation | Task Creation (character counters) |
| โ Responsive design | Mobile View |
| โ Task metadata (date, status) | All views |
| โ Optimistic updates | Task Creation footer |
- โ JWT Authentication - Secure login with token-based authentication
- ๐ก๏ธ Password Hashing - Bcrypt for secure password storage
- ๐ Protected Routes - Middleware for endpoint authorization
- ๐ฆ Rate Limiting - Protection against brute-force attacks
- ๐ก๏ธ Helmet.js - Secure HTTP headers configuration
- โ Create Tasks - Add new tasks with title, description, and priority
- โ๏ธ Edit Tasks - Modify existing task details
- โ Toggle Completion - Mark tasks as complete/incomplete
- ๐๏ธ Delete Tasks - Remove tasks from the system
- ๐ฏ Priority Levels - LOW, MEDIUM, HIGH, URGENT
- ๐ Dark Mode - Toggle between light and dark themes
- ๐ฑ Responsive Design - Mobile-first approach for all devices
- โก Optimistic Updates - Instant UI feedback with React Query
- ๐ฏ Priority Badges - Color-coded priority indicators
- ๐ Loading States - Skeleton loaders and progress indicators
- โก Next.js 16 App Router - Modern React framework with server components
- ๐ญ TypeScript Strict Mode - 0 errors, end-to-end type safety
- ๐ React Query v5 - Advanced caching and optimistic updates
- ๐๏ธ PostgreSQL + Prisma - Type-safe database ORM with migrations
- ๐ณ Docker Multi-stage - Optimized container builds
- ๐ง CI/CD Pipeline - Automated deployments via GitHub
- ๐ GraphQL API - Apollo Server with full CRUD operations
- ๐ฅ CSV Export - Client-side generation with file-saver
- ๐ PDF Export - Professional PDF generation with jsPDF
๐ Click to expand full project structure
task-manager-pro/
โ
โโโ ๐ frontend/ # Next.js 16 + TypeScript
โ โโโ ๐ src/
โ โ โโโ ๐ app/ # App Router
โ โ โ โโโ ๐ layout.tsx # Root layout
โ โ โ โโโ ๐ page.tsx # Dashboard
โ โ โ โโโ ๐ login/ # Login page
โ โ โ
โ โ โโโ ๐ components/ # UI Components
โ โ โ โโโ ๐ TaskCard/ # Task card
โ โ โ โโโ ๐ TaskForm/ # Create task
โ โ โ โโโ ๐ TaskList/ # Task list
โ โ โ โโโ ๐ TaskEditModal/ # Edit modal
โ โ โ โโโ ๐ DarkModeToggle/ # Theme switcher
โ โ โ
โ โ โโโ ๐ context/ # React Context
โ โ โ โโโ ๐ AuthContext.tsx # Auth state
โ โ โ โโโ ๐ ThemeContext.tsx # Dark/light theme
โ โ โ
โ โ โโโ ๐ hooks/ # Custom Hooks
โ โ โ โโโ ๐ useTasks.ts # React Query
โ โ โ โโโ ๐ useTasks.test.tsx
โ โ โ
โ โ โโโ ๐ lib/ # Utilities
โ โ โ โโโ ๐ api/ # API client
โ โ โ โโโ ๐ types/ # TypeScript types
โ โ โ
โ โ โโโ ๐ __tests__/ # Frontend tests (56)
โ โ
โ โโโ ๐ config/ # Configuration files
โ โโโ ๐ Dockerfile
โ โโโ ๐ vercel.json
โ โโโ ๐ next.config.js
โ โโโ ๐ tailwind.config.js
โ โโโ ๐ jest.config.js
โ โโโ ๐ package.json
โ
โโโ ๐ backend/ # Express + TypeScript + Prisma
โ โโโ ๐ src/
โ โ โโโ ๐ controllers/ # Business logic
โ โ โ โโโ ๐ auth.controller.ts # Login/register
โ โ โ โโโ ๐ task.controller.ts # Task CRUD
โ โ โ
โ โ โโโ ๐ middleware/ # Express middleware
โ โ โ โโโ ๐ auth.middleware.ts # JWT
โ โ โ โโโ ๐ validate.ts # Zod
โ โ โ โโโ ๐ rateLimit.ts # Rate limiting
โ โ โ โโโ ๐ helmet.ts # Security
โ โ โ
โ โ โโโ ๐ routes/ # API endpoints
โ โ โ โโโ ๐ auth.routes.ts
โ โ โ โโโ ๐ task.routes.ts
โ โ โ
โ โ โโโ ๐ validators/ # Zod schemas
โ โ โ โโโ ๐ auth.validator.ts
โ โ โ โโโ ๐ task.validator.ts
โ โ โ
โ โ โโโ ๐ database/ # Prisma client
โ โ โ โโโ ๐ prisma.ts
โ โ โ
โ โ โโโ ๐ config/ # Configuration
โ โ โ โโโ ๐ env.ts # Validation
โ โ โ โโโ ๐ cors.ts # CORS
โ โ โ
โ โ โโโ ๐ server.ts # Entry point
โ โ
โ โโโ ๐ prisma/ # Database
โ โ โโโ ๐ schema.prisma # Models
โ โ โโโ ๐ migrations/ # SQL migrations
โ โ โโโ ๐ seed.js # Demo data
โ โ
โ โโโ ๐ tests/ # Backend tests (30)
โ โ โโโ ๐ unit/
โ โ โโโ ๐ setup/
โ โ
โ โโโ ๐ config/ # Configuration files
โ โโโ ๐ Dockerfile
โ โโโ ๐ render.yaml
โ โโโ ๐ jest.config.js
โ โโโ ๐ tsconfig.json
โ โโโ ๐ package.json
โ
โโโ ๐ docker-compose.yml # Local development stack
โ
โโโ ๐ .gitignore # Git ignored files
โ
โโโ ๐ README.md # This documentation
Simply visit:
https://taskmanager-pro-pi.vercel.app
Use demo credentials:
Email: demo@taskmanager.com
Password: demo123
- Node.js 20.x or higher
- npm 9.x or higher
- PostgreSQL 15 (optional, if not using Docker)
# 1. Clone the repository
git clone https://github.com/MarceloAdan73/task-manager-pro.git
cd task-manager-pro
# 2. Backend setup
cd backend
cp .env.example .env
npm install
npx prisma migrate dev
npm run dev
# Backend runs on http://localhost:3005
# 3. Frontend setup (new terminal)
cd frontend
cp .env.local.example .env.local
npm install
npm run dev
# Frontend runs on http://localhost:3004
# 4. Open browser
# http://localhost:3004# 1. Clone repository
git clone https://github.com/MarceloAdan73/task-manager-pro.git
cd task-manager-pro
# 2. Start all services
docker-compose up -d
# 3. Access application
# Frontend: http://localhost:3004
# Backend API: http://localhost:3005/api/health
# WebSocket Server: ws://localhost:3005
# 4. View logs (optional)
docker-compose logs -f
# 5. Stop services
docker-compose downโก WebSocket Feature: Real-time notifications via Socket.io are available only in local Docker setup. Production deployment (Vercel + Render) has NO WebSocket support.
- Navigate to the login page
- Use demo credentials or register
- JWT token auto-stored in localStorage
| Action | How to |
|---|---|
| Create Task | Click "Add Task" โ Fill form โ Submit |
| Edit Task | Click on task card โ Modify โ Save |
| Complete Task | Click checkbox on task card |
| Delete Task | Click trash icon on task card |
| Filter Tasks | Use tabs (All/Pending/Completed) |
| Change Priority | Edit task โ Select priority |
- ๐ Dark Mode - Click sun/moon icon in header
- ๐ฑ Responsive - Works on mobile, tablet, desktop
- โก Real-time - Optimistic updates with React Query
| Command | Description |
|---|---|
docker-compose up -d |
Start all services |
docker-compose logs -f |
View real-time logs |
docker-compose down |
Stop all services |
docker-compose down -v |
Stop and delete database |
docker-compose build backend |
Rebuild backend only |
The application implements real-time bidirectional communication using Socket.io, available exclusively in the local Docker environment for demonstration purposes.
| Layer | Technology | Description |
|---|---|---|
| Transport | WebSocket + Polling | Dual transport with automatic fallback |
| Protocol | Socket.io 4.8.3 | Event-based real-time protocol |
| Authentication | JWT (jsonwebtoken) | Token passed via handshake auth |
| Authorization | Middleware | Per-connection JWT verification |
// Socket.io server with JWT authentication
const io = new Server(httpServer, { cors: { ... } });
io.use(authMiddleware); // JWT verification on every connection
io.on('connection', (socket) => {
socket.on('join:user', (userId) => socket.join(`user:${userId}`));
});| Event | Payload | Description |
|---|---|---|
task:created |
{ taskId, userId, data, timestamp } |
New task created |
task:updated |
{ taskId, userId, data, timestamp } |
Task modified |
task:deleted |
{ taskId, userId, timestamp } |
Task removed |
// Frontend hook pattern
const socket = io(url, {
auth: { token: jwt },
transports: ['websocket', 'polling'],
reconnection: true,
reconnectionAttempts: 5,
});
socket.emit('join:user', userId);# WebSocket endpoint
ws://localhost:3005
# Or with wscat
npx wscat -c ws://localhost:3005 -t "Bearer <jwt_token>"Note: WebSocket functionality is restricted to local Docker deployment for demonstration. Production deployments (Vercel + Render) have NO WebSocket support.
| Command | Description |
|---|---|
docker exec -it taskmanager-backend sh |
Access container shell |
docker ps |
List running containers |
docker stats |
View resource usage |
cd backend
npm test # Run all tests
npm test:watch # Watch mode
npm test:coverage # Coverage reportcd frontend
npm test # Run all tests
npm test:watch # Watch mode
npm test:coverage # Coverage reportcd frontend
npx playwright test # Run E2E tests
npx playwright test --ui # UI modeโ
Backend: 30/30 tests
โข Auth Controller
โข Task Controller
โข Middleware
โข Utilities
โ
Frontend: 56 tests (44 passed + 12 skipped)
โข Components
โข Hooks
โข API Client
โข Contexts
โ
E2E: 8/8 tests (Playwright)
โข Login
โข CRUD Tasks
โข Dark Mode
| Short Term | Medium Term | Long Term |
|---|---|---|
| โ CSV/PDF export | ๐ฅ Team collaboration | ๐ฑ Mobile app |
| โ GraphQL API | ๐ WebSockets real-time | ๐ค AI task suggestions |
| ๐ Dashboard with charts | ๐ท๏ธ Categories/Tags | ๐ File attachments |
| โฐ Due dates/Reminders | ๐ง Email notifications | ๐ Calendar integration |
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- โ Write tests for new features
- โ Maintain 100% TypeScript strictness
- โ Follow existing code style
- โ Update documentation
This project is licensed under the MIT License - see the LICENSE file for details.
Marcelo Adรกn - Full-Stack Developer
๐ง Architectural Note: This project's codebase is orchestrated by Marcelo Adรกn, with AI assistance as a development tool to accelerate implementation while maintaining professional standards and senior-level architectural decisions.
- Next.js Documentation
- Prisma Documentation
- React Query Documentation
- Render Documentation
- Vercel Documentation
If you find this project useful, please consider giving it a star on GitHub!



