Technology Stack
Frontend
- React 19 with TypeScript
- Vite for build tooling
- TanStack Query for state management
- Radix UI component primitives
- Tailwind CSS for styling
Backend
- Supabase (PostgreSQL)
- Row Level Security (RLS)
- Database functions for complex operations
- Real-time subscriptions
Landing Page
- Next.js 15 with App Router
- React 19
- MDX for content
- Server-side rendering
Infrastructure
- Monorepo with npm workspaces
- Database migrations via Supabase CLI
- Type-safe API layer
Architectural Principles
Repository Pattern
The application uses a repository pattern to abstract data access:- Clear separation between business logic and data access
- Easy testing with mock implementations
- Single source of truth for data operations
- Type safety across the application
Domain-Driven Design
Domain types are centralized inpackages/app/src/domain/types.ts:
Security-First Design
Security is enforced at the database level:Security Definer Functions
Database functions run with elevated privileges but validate user permissions
Key Features
Multi-Tenancy
The platform supports multiple organizations (tenants) with isolated data:- Each tenant has its own workspace with projects
- Projects belong to exactly one tenant
- Users can be members of multiple tenants
- Three-tier role hierarchy: tenant roles and project roles
Gantt Chart & Task Management
Comprehensive task management with dependencies:- Kanban workflow columns (backlog, todo, in_progress, done, custom)
- Task dependencies (Finish-to-Start)
- Task priorities (p0, p1, p2)
- Assignees, labels, checklists, attachments
- Milestones and estimates
Real-Time Collaboration
Built on Supabase real-time infrastructure:- Instant updates across connected clients
- Optimistic UI updates with background sync
- TanStack Query for caching and invalidation
Performance Optimization
Database Indexing
Database Indexing
Strategic indexes on frequently queried columns:
Query Optimization
Query Optimization
- Materialized views for dashboard metrics
- Database functions for complex aggregations
- Single-query data fetching with JOINs
Client-Side Caching
Client-Side Caching
TanStack Query provides:
- Automatic background refetching
- Request deduplication
- Optimistic updates
- Stale-while-revalidate pattern
Development Workflow
Next Steps
Monorepo Structure
Explore the folder structure and workspace organization
Database Schema
Dive into the PostgreSQL schema and relationships
Multi-Tenancy
Understand the tenant isolation model
API Reference
Browse the unified API documentation