A full-stack task tracking application with unlimited subtask nesting, multi-project support, dashboards, calendar views, and configurable database backend.
- Hierarchical Task Management: Unlimited nesting levels with visual tree structure
- Multi-Project Support: Organize tasks across multiple projects
- Collapsible Projects: Expand/collapse project views
- Drag & Drop: Reorder tasks and change hierarchy (planned)
- Rich Task Properties:
- Status: Pending, In Progress, On Track, Blocked, Overdue, Done
- Phase: Dev, Test, Review
- Progress tracking (0-100%)
- Due dates
- Owner assignment
- Tags with custom colors
- Project Summary: Donut charts showing task distribution per project
- 30-Day Progress: Area chart tracking completion rates over time
- Blockers Table: Quick view of all blocked tasks
- Pending Tasks: Overview of pending and overdue items
- Statistics Cards: Total projects, tasks, completion rates
- Monthly/Weekly/Daily Views: Visualize tasks by due date
- Color-Coded Tasks: Status-based color indicators
- Day Selection: Click any day to see tasks scheduled
- Per-Project Checklists: Separate from tasks
- Progress Tracking: Visual progress bars
- Quick Toggle: Mark items complete/incomplete inline
- User Profiles: Avatar, email, task count
- Custom Tags: Color-coded labels for organization
- Task Assignment: Assign tasks to team members
- React 18 with Vite
- TailwindCSS for styling
- shadcn/ui components
- React Query for data fetching
- Zustand for state management
- React Router for navigation
- Recharts for data visualization
- React Big Calendar for calendar views
- dnd-kit for drag & drop (ready to implement)
- Node.js with Express
- Prisma ORM with SQLite (dev)
- Zod for validation
- CORS enabled
- SQLite (development)
- DynamoDB adapter ready (Phase 6)
- Switchable via
DB_PROVIDERenvironment variable
- Node.js 18+ and npm
- Git
- Clone the repository
git clone <repository-url>
cd projectview- Install dependencies and setup
npm run setupThis command will:
- Install root dependencies
- Install client dependencies
- Generate Prisma client
- Push database schema
- Seed the database with sample data
# Install root dependencies
npm install
# Install client dependencies
cd client
npm install
cd ..
# Setup Prisma
npx prisma generate
npx prisma db push
# Seed database
node prisma/seed.jsStart both backend and frontend concurrently:
npm run devThis will start:
- Backend: http://localhost:3001
- Frontend: http://localhost:3000
Backend only:
npm run serverFrontend only:
npm run clientprojectview/
├── client/ # React frontend
│ ├── src/
│ │ ├── api/ # API client functions
│ │ ├── components/ # React components
│ │ │ ├── calendar/ # Calendar view
│ │ │ ├── checklist/ # Checklist components
│ │ │ ├── common/ # Reusable UI components
│ │ │ ├── dashboard/ # Dashboard widgets
│ │ │ ├── layout/ # Layout components
│ │ │ ├── projects/ # Project components
│ │ │ └── tasks/ # Task components
│ │ ├── hooks/ # React Query hooks
│ │ ├── lib/ # Utilities
│ │ ├── pages/ # Page components
│ │ ├── store/ # Zustand stores
│ │ ├── App.jsx # Main app component
│ │ └── main.jsx # Entry point
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
├── server/ # Express backend
│ ├── config/ # Configuration
│ │ └── db.js # Database provider switch
│ ├── lib/ # Libraries
│ │ ├── prisma.js # Prisma client
│ │ ├── dynamoAdapter.js # DynamoDB adapter
│ │ └── taskTree.js # Tree building utilities
│ ├── middleware/ # Express middleware
│ │ └── errorHandler.js
│ ├── routes/ # API routes
│ │ ├── projects.js
│ │ ├── tasks.js
│ │ ├── users.js
│ │ ├── tags.js
│ │ ├── checklists.js
│ │ └── dashboard.js
│ └── index.js # Server entry point
├── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.js # Seed data
├── .env # Environment variables
├── package.json
└── README.md
Create a .env file in the root directory:
# Database Provider (sqlite | dynamodb)
DB_PROVIDER=sqlite
# SQLite Database URL
DATABASE_URL="file:./dev.db"
# DynamoDB Configuration (when DB_PROVIDER=dynamodb)
# AWS_REGION=us-east-1
# AWS_ACCESS_KEY_ID=your_access_key
# AWS_SECRET_ACCESS_KEY=your_secret_key
# DYNAMO_TABLE_NAME=task-tracker
# Server Port
PORT=3001- Set
DB_PROVIDER=dynamodbin.env - Configure AWS credentials
- Implement DynamoDB adapter methods in
server/lib/dynamoAdapter.js - The application will automatically use DynamoDB instead of SQLite
- User: Team members with avatar and email
- Project: Top-level organization with color coding
- ProjectMember: Many-to-many relationship with roles
- Task: Hierarchical tasks with unlimited nesting
- Tag: Color-coded labels for tasks
- Checklist: Per-project checklists
- ChecklistItem: Individual checklist items
- Tasks can have parent tasks (self-referential)
- Tasks belong to projects
- Tasks can have multiple tags
- Projects have multiple members
- Checklists belong to projects
GET /api/projects- List all projectsPOST /api/projects- Create projectPATCH /api/projects/:id- Update projectDELETE /api/projects/:id- Delete projectGET /api/projects/:id/tasks- Get project tasks (nested tree)
GET /api/tasks/:id- Get single taskPOST /api/tasks- Create taskPATCH /api/tasks/:id- Update taskPATCH /api/tasks/:id/reorder- Reorder taskDELETE /api/tasks/:id- Delete task (cascades to children)
GET /api/users- List all usersPOST /api/users- Create userPATCH /api/users/:id- Update userDELETE /api/users/:id- Delete user
GET /api/tags- List all tagsPOST /api/tags- Create tagPATCH /api/tags/:id- Update tagDELETE /api/tags/:id- Delete tag
GET /api/checklists/project/:projectId- Get project checklistsPOST /api/checklists- Create checklistPOST /api/checklists/:id/items- Add itemPATCH /api/checklists/items/:itemId- Update itemDELETE /api/checklists/:id- Delete checklist
GET /api/dashboard/project-summary- Project statisticsGET /api/dashboard/day-progress- 30-day completion ratesGET /api/dashboard/blockers- All blocked tasksGET /api/dashboard/pending- Pending/overdue tasksGET /api/dashboard/calendar- Tasks by date rangeGET /api/dashboard/stats- Overall statistics
- Infinite nesting with visual indentation
- Tree connector lines
- Expand/collapse children
- Inline editing (status, phase, progress)
- Hover actions (add subtask, delete)
- Drag handle for reordering
- Click to cycle through options
- Color-coded for quick identification
- Consistent design system
- Visual progress bars
- Inline number input
- Color changes based on completion
- Mobile-friendly layouts
- Collapsible sidebar
- Scrollable content areas
- JWT-based auth
- User login/logout
- Role-based permissions
- WebSocket integration
- Live collaboration
- Presence indicators
- Task dependencies
- Gantt chart view
- Time tracking
- File attachments
- Comments & mentions
- Slack notifications
- Email reminders
- GitHub integration
- Export to PDF/Excel
- Complete DynamoDB adapter
- Single-table design
- GSI optimization
- Migration scripts
# Kill process on port 3001 (backend)
npx kill-port 3001
# Kill process on port 3000 (frontend)
npx kill-port 3000# Reset database
rm dev.db
npx prisma db push
node prisma/seed.jsnpx prisma generateThe seed script creates:
- 3 users (Alice, Bob, Carol)
- 3 projects (Website Redesign, Mobile App, Infrastructure Upgrade)
- 30+ tasks with 4 levels of nesting
- 4 tags (frontend, backend, design, infra)
- 3 checklists with 5 items each
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
MIT License - feel free to use this project for learning or commercial purposes.
- React and the React ecosystem
- Prisma for excellent ORM
- TailwindCSS for utility-first styling
- Recharts for beautiful charts
- React Big Calendar for calendar views
Built with ❤️ using React, Node.js, and Prisma