ProTask is a production-ready, full-stack visual task management and workflow orchestration application built with React 19, TypeScript, Node.js, Express, and MongoDB. It provides an intuitive, high-performance Kanban experience featuring drag-and-drop columns, rich task cards with checklist subtasks, multi-board workspaces, instant productivity metrics, and secure JWT-based authentication.
- Core Features
- System Architecture & Tech Stack
- Design Philosophy & UI/UX
- Directory Structure
- REST API Reference
- Getting Started & Local Setup
- Environment Configuration
- Database Resilience Strategy
- Scripts Reference
- Smooth DnD Interactions: Powered by
@hello-pangea/dndfor fluid task reordering within the same column and cross-column transitions. - Optimistic State Updates: UI updates instantly upon drop while persisting changes asynchronously to MongoDB in the background.
- Dynamic Columns: Add custom workflow stages (e.g., Backlog, In Progress, Review, Completed), rename column headers inline, and delete empty columns.
- Multiple Isolated Workspaces: Create dedicated boards for different projects or teams.
- Board Switcher Drawer: A slide-out drawer accessible from the sidebar and header to quickly switch between boards, see task counts, or create new boards with starter templates.
- Board Operations: Inline board renaming, column customization, and protected deletion (with safeguard preventing accidental deletion of the last remaining board).
- Priority Categorization: Color-coded badges for Urgent, High, Medium, and Low priorities.
- Due Dates & Deadlines: Calendar picker with dynamic overdue warnings and formatted dates.
- Custom Tags: Color-coded tags (e.g., Frontend, API, Bug, Feature) for rapid categorization.
- Detailed Task Modal: Full editing dialog for title, description, priority, due date, tags, and checklist subtasks.
- Micro-Progress Tracking: Add nested subtasks to any task card.
- Dynamic Progress Bar: Visual completion percentage calculated in real time.
- Quick-Toggle: Check off items directly from the task card or inside the task modal.
- Real-Time Text Search: Filter tasks by title or description as you type.
- Priority Filtering: Narrow down boards to specific priority tiers.
- Tag Filtering: Filter cards by specific labels.
- Smart Sorting: Order tasks by creation date, alphabetically, or by upcoming due date.
- Personalized Metrics Modal: View account details (name, email, member since date) alongside productivity statistics:
- Total workspaces owned
- Total tasks created
- Completed tasks with completion rate (%)
- In-progress tasks
- Urgent/high-priority task tally
- Live Profile Editor: Update display name and email with validation.
- Dedicated Sign-Out: Clear separation between profile management and logout actions.
- JWT & Bcrypt Security: Industry-standard authentication flow with hashed passwords and Bearer tokens.
- 1-Click Instant Demo Login: Test drive all features instantly with pre-seeded boards and demo data without manual registration.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Client (Browser) β
β React 19 + TypeScript + Tailwind CSS v4 + Zustand Store β
β @hello-pangea/dnd (Drag-and-Drop) β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β REST API (JSON / Bearer JWT)
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β Express Backend Server β
β Vite Dev Middleware (Dev) / Static Dist Serving (Prod) β
β Auth Middleware (JWT Verify) + Input Validation β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β Mongoose ODM
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β MongoDB Database β
β Real MongoDB Atlas / Local URI (Primary) β
β Automatic Fallback: In-Memory MongoDB Server (Zero-Conf)β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Domain | Technology | Purpose |
|---|---|---|
| Frontend Framework | React 19 | Declarative, component-driven UI with modern hooks |
| Language | TypeScript 5.8 | End-to-end type safety across client and server |
| Styling | Tailwind CSS v4 | Modern, utility-first CSS engine with zero-runtime overhead |
| State Management | Zustand 5 | Lightweight, boilerplate-free state store with persistence |
| Drag & Drop | @hello-pangea/dnd |
Accessible and touch-compatible drag-and-drop system |
| Icons | Lucide React | Clean, consistent SVG icon set |
| Server Framework | Express 4.21 | Robust Node.js web and API server |
| Database & ODM | MongoDB + Mongoose 9 | Document database with schema enforcement |
| Security & Auth | JSON Web Tokens & bcryptjs | Token-based auth with salted password hashing |
| Bundler & Tooling | Vite 6 + esbuild + tsx | Instant HMR development and optimized production bundles |
ProTask adheres to a modern, high-contrast dark theme engineered for deep focus and productivity:
- Surface Palette: Pure
#09090bcanvas with#0d0d0fand#121216layered surface cards, providing subtle depth without visual clutter. - Accent Glow: Rich Indigo (
#4f46e5/#6366f1) accents and ambient radial gradients for active states, badges, and focus rings. - Status Semantics:
- π’ Emerald: Completed status, healthy database connectivity, high completion rates.
- π‘ Amber: Medium priority, in-progress stages, pending tasks.
- π΄ Rose: Urgent/high priority, overdue deadlines, critical alerts.
- π΅ Indigo / Sky: Standard workflows, active boards, informational badges.
- Typographic Hierarchy: High-contrast, clean sans-serif typography with monospace accents for IDs and technical counters.
- Responsive Layout: Designed desktop-first for wide multi-column Kanban workflows, with collapsible sidebars and responsive touch targets for tablet and mobile devices.
βββ metadata.json # App metadata and permissions
βββ package.json # Dependencies and build scripts
βββ server.ts # Express server entry point & Vite middleware
βββ tsconfig.json # TypeScript root configuration
βββ vite.config.ts # Vite bundler configuration
β
βββ src/ # Frontend source code
β βββ main.tsx # Client React entry point
β βββ App.tsx # Main application frame & navigation
β βββ index.css # Global styles & Tailwind CSS v4 import
β βββ components/
β β βββ LiveBoard.tsx # Core Kanban board container with filter bar
β β βββ KanbanColumn.tsx # Droppable column with task cards & inline add
β β βββ TaskCard.tsx # Draggable task card with subtasks & badges
β β βββ TaskModal.tsx # Comprehensive task creation & edit dialog
β β βββ BoardDrawer.tsx # Slide-over multi-board switcher drawer
β β βββ UserProfileModal.tsx # Profile editor & productivity statistics modal
β βββ store/
β β βββ kanbanStore.ts # Central Zustand state store & API integrations
β βββ types/
β βββ kanban.ts # Shared TypeScript interfaces (User, Board, Column, Task)
β
βββ server/ # Backend API & Database layer
βββ db/
β βββ connect.ts # Mongoose connection with in-memory fallback
βββ models/
β βββ User.ts # Mongoose schema for user accounts
β βββ Board.ts # Mongoose schema for boards
β βββ Column.tsx # Mongoose schema for workflow columns
β βββ Task.ts # Mongoose schema for tasks & subtasks
βββ middleware/
β βββ auth.ts # Bearer JWT verification middleware
βββ routes/
βββ auth.routes.ts # Auth endpoints (login, register, me, stats, profile)
βββ board.routes.ts # Board CRUD endpoints
βββ column.routes.ts # Column management and ordering endpoints
βββ task.routes.ts # Task CRUD, move/reorder, and subtask routes
All protected endpoints require the Authorization: Bearer <token> header.
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/auth/register |
Create a new user account with default starter board | No |
POST |
/api/auth/login |
Authenticate with email & password | No |
GET |
/api/auth/me |
Fetch active user credentials and profile data | Yes |
PUT |
/api/auth/profile |
Update user display name or email address | Yes |
GET |
/api/auth/stats |
Fetch aggregated task & workspace productivity metrics | Yes |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/boards |
List all boards owned by the authenticated user | Yes |
POST |
/api/boards |
Create a new board (optional starter columns) | Yes |
GET |
/api/boards/:id |
Fetch a board by ID with its columns and tasks | Yes |
PUT |
/api/boards/:id |
Update board title or description | Yes |
DELETE |
/api/boards/:id |
Delete a board and all associated columns and tasks | Yes |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/columns |
Create a new column in a board | Yes |
PUT |
/api/columns/:id |
Rename a column | Yes |
DELETE |
/api/columns/:id |
Delete a column and its tasks | Yes |
PUT |
/api/columns/reorder |
Update column display order | Yes |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/tasks |
Create a new task in a specified column | Yes |
PUT |
/api/tasks/:id |
Update task details (title, priority, due date, etc.) | Yes |
DELETE |
/api/tasks/:id |
Delete a task | Yes |
PUT |
/api/tasks/:id/move |
Move task to a different column or reorder positions | Yes |
POST |
/api/tasks/:id/subtasks |
Add a new subtask checklist item | Yes |
PATCH |
/api/tasks/:id/subtasks/:subtaskId |
Toggle subtask completion status | Yes |
DELETE |
/api/tasks/:id/subtasks/:subtaskId |
Remove a subtask checklist item | Yes |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/health |
Check API and MongoDB connection status | No |
- Node.js v18.0.0 or higher
- npm v9.0.0 or higher
- (Optional) A running MongoDB instance or MongoDB Atlas connection string (an in-memory MongoDB fallback is built-in if no URI is supplied).
# Clone the repository
git clone <repository-url>
cd protask
# Install project dependencies
npm installCreate a .env file in the root directory (refer to .env.example):
cp .env.example .envSet your configuration values:
PORT=3000
NODE_ENV=development
JWT_SECRET=your_super_secret_jwt_key_here
MONGODB_URI=mongodb://localhost:27017/protaskNote: If
MONGODB_URIis omitted or points to an unavailable server, ProTask will automatically spin up an embedded in-memory MongoDB instance for instant zero-configuration development.
npm run devThe application will be accessible at:
- Local Application: http://localhost:3000
- API Health Endpoint: http://localhost:3000/api/health
ProTask is architected for zero-downtime development and resilience:
- Primary Connection: Attempts connection to
process.env.MONGODB_URI(such as MongoDB Atlas or local MongoDB). - Automated Fallback: If the URI is missing, unreachable, or times out, the backend automatically provisions an ephemeral in-memory database using
mongodb-memory-server. - Seed Reliability: Automatically provisions starter boards and demo tasks so developers and users can start testing immediately without manual database setup.
| Script | Command | Description |
|---|---|---|
npm run dev |
tsx server.ts |
Starts the Express server with Vite middleware in development mode |
npm run build |
vite build && esbuild server.ts ... |
Compiles client assets and bundles server.ts into dist/server.cjs |
npm start |
node dist/server.cjs |
Runs the compiled production server |
npm run lint |
tsc --noEmit |
Runs the TypeScript compiler to check for type errors |
npm run clean |
rm -rf dist server.js |
Cleans up build output artifacts |
This project is licensed under the MIT License. Feel free to use, modify, and distribute it for personal or commercial projects.