- SidebarInset: use min-w-0 + overflow-x-hidden instead of w-full - Calendar: measure container width instead of viewport width - Remove unnecessary max-w-screen-2xl from main content area
TaskFlow - Personal Task Management Application
A modern, mobile-first task management application built with React, TypeScript, and Express. TaskFlow helps you organize and track your tasks efficiently with multiple views including calendar scheduling, kanban boards, and project templates.
Features
- 📱 Mobile-First Design - Fully responsive with touch-friendly interactions
- 📅 Calendar View - Schedule tasks with drag-and-drop functionality
- 📊 Kanban Board - Visualize workflow with traditional, weekly, and monthly views
- ⏱️ Time Tracking - Built-in timer to track time spent on tasks
- 🏷️ Labels & Priorities - Color-coded organization system
- 📁 Project Templates - Reusable templates for common workflows
- 🌓 Dark Mode - Automatic theme switching
- 🐳 Docker Ready - Production-ready Docker deployment
Tech Stack
- Frontend: React 18, TypeScript, Tailwind CSS, shadcn/ui
- Backend: Express.js, Node.js
- Database: PostgreSQL with Drizzle ORM
- State Management: TanStack Query
- Build Tools: Vite, ESBuild
Quick Start
Development (Local)
-
Install dependencies:
npm install -
Start development server:
npm run dev -
Open in browser:
http://localhost:5000
The development version uses in-memory storage by default.
Production (Docker)
📦 Complete Docker Compose Guide - Step-by-step deployment instructions
Quick Docker Start:
-
Create
.envfile:cp .env.example .env -
Edit
.envand set a secure password:POSTGRES_PASSWORD=your_secure_password_here -
Start services:
docker-compose up -d -
Access application:
http://localhost:5000
For detailed instructions including environment variables, security settings, troubleshooting, and database management, see DOCKER-COMPOSE.md.
Project Structure
taskflow/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ └── lib/ # Utilities and hooks
│ └── index.html
├── server/ # Express backend
│ ├── index.ts # Server entry point
│ ├── routes.ts # API routes
│ ├── storage.ts # Storage implementations
│ └── db.ts # Database connection
├── shared/ # Shared types and schemas
│ └── schema.ts # Database schema & types
├── Dockerfile # Production Docker image
├── docker-compose.yml # Docker orchestration
└── DEPLOYMENT.md # Deployment guide
Available Scripts
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm start- Start production servernpm run check- TypeScript type checkingnpm run db:push- Push database schema changes
Environment Variables
Development
NODE_ENV=development
PORT=5000
Production (Docker)
NODE_ENV=production
DATABASE_URL=postgresql://user:password@postgres:5432/taskflow
PORT=5000
See .env.example for all available options.
Database
TaskFlow uses PostgreSQL with Drizzle ORM for type-safe database operations.
Schema
- users - User accounts (future multi-user support)
- labels - Color-coded task labels
- tasks - Task items with metadata
Switching to Database in Development
To use the PostgreSQL database in development:
-
Set environment variable:
export USE_DB=true -
Ensure
DATABASE_URLis set in your environment -
Start the development server
API Endpoints
Labels
GET /api/labels- Get all labelsGET /api/labels/:id- Get specific labelPOST /api/labels- Create new labelPATCH /api/labels/:id- Update labelDELETE /api/labels/:id- Delete label
Tasks
GET /api/tasks- Get all tasksGET /api/tasks/:id- Get specific taskPOST /api/tasks- Create new taskPATCH /api/tasks/:id- Update taskDELETE /api/tasks/:id- Delete task
Health
GET /api/health- Health check endpoint
Contributing
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
License
MIT License - see LICENSE file for details
Support
For deployment help, see DEPLOYMENT.md
For issues and questions, please open an issue on the repository.