A modern task management application built with React and Node.js that allows users to create, edit, and manage tasks across different status columns.
- Task Management: Create, edit, update, and delete tasks
- Status Tracking: Organize tasks by status (In Progress, Completed, Won't Do)
- Editable Board: Click-to-edit board name functionality
- Persistent Storage: Tasks and boards saved to MongoDB
- Unique Board URLs: Each board accessible via
/board/:board-id - Responsive Design: Mobile-friendly interface
- Real-time Updates: Instant UI updates with optimistic rendering
- React 19 - UI framework
- Zustand - State management
- Tailwind CSS - Styling
- Vite - Build tool and dev server
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database
- Mongoose - ODM for MongoDB
- CORS - Cross-origin resource sharing
- Morgan - HTTP request logger
task-board/
├── backend/
│ ├── src/
│ │ ├── controllers/ # Request handlers
│ │ ├── models/ # Database schemas
│ │ ├── routes/ # API routes
│ │ ├── config/ # Database configuration
│ │ └── app.js # Express app setup
│ ├── server.js # Server entry point
│ └── package.json
├── frontend/
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── store/ # Zustand store
│ │ ├── api/ # API client
│ │ └── data/ # Static data
│ ├── public/ # Static assets
│ └── package.json
└── README.md
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- npm or yarn
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
MONGO_URI=mongodb://localhost:27017/taskboard
PORT=3000- Start the server:
npm run devBackend will run on http://localhost:3000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Create
.env.localfile:
VITE_API_BASE_URL=http://localhost:3000- Start the development server:
npm run devFrontend will run on http://localhost:5173
POST /api/boards- Create new boardGET /api/boards/:id- Get board by IDPUT /api/boards/:id- Update boardDELETE /api/boards/:id- Delete board
POST /api/tasks- Create new taskPUT /api/tasks/:id- Update taskDELETE /api/tasks/:id- Delete task
- First Visit: A new board is automatically created with default tasks
- Task Management: Click on tasks to edit name, description, icon, and status
- Add Tasks: Click "Add new task" to create new tasks
- Edit Board: Click on board title to rename it
- Persistent URLs: Each board has a unique URL for easy sharing
- State Management: Zustand store handles all application state
- API Integration: Custom API client with error handling
- URL Routing: Manual URL handling for board-specific routes
- Data Persistence: localStorage backup with MongoDB primary storage
- Optimistic Updates: UI updates immediately, syncs with backend
For production deployment:
- Build frontend:
cd frontend && npm run build- Set production environment variables
- Deploy backend to your preferred hosting service
- Deploy frontend build to static hosting service
MIT License - feel free to use this project for learning and development.