Show the active subscription plan pill (Founder/Teams/Solo) next to the user's name on the overview greeting and in the settings page header. Made-with: Cursor |
||
|---|---|---|
| .circleci | ||
| .superpowers/brainstorm | ||
| .vscode | ||
| apps | ||
| backend | ||
| docs | ||
| go_backend | ||
| infra | ||
| packages | ||
| scripts | ||
| supabase | ||
| xtablo-expo | ||
| .dockerignore | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| biome.json | ||
| CLAUDE.md | ||
| DEVELOPMENT.md | ||
| justfile | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| SECURITY_NOTICE.md | ||
| static-analysis.datadog.yml | ||
| turbo.json | ||
Xtablo Monorepo
This is a Turborepo-based monorepo for the Xtablo project, containing multiple apps and shared packages.
Project Structure
xtablo-source/
├── apps/
│ ├── main/ # Main UI application
│ └── external/ # External booking widget microfrontend
├── packages/
│ ├── ui/ # Shared UI components (buttons, inputs, etc.)
│ └── shared/ # Shared utilities, hooks, contexts, and types
├── api/ # TypeScript/Node.js API
├── backend/ # Python backend
├── go_backend/ # Go backend
└── xtablo-expo/ # React Native Expo app
Getting Started
Prerequisites
- Node.js 18+ and pnpm 10.19.0+
- For other services: Python 3.11+, Go 1.21+
Quick Start
# Install dependencies
pnpm install
# Start development (packages are source-only, no build needed)
pnpm dev
For detailed development workflows, see DEVELOPMENT.md.
Common Commands
# Development
pnpm dev # Run all apps
pnpm dev:main # Run main app only
pnpm dev:external # Run external app only
# Building
pnpm build # Build all apps
pnpm build:apps # Build apps only
pnpm build:staging # Build main app for staging
pnpm build:prod # Build main app for production
# Testing & Quality
pnpm test # Run all tests
pnpm lint # Check all packages
pnpm lint:fix # Fix linting issues
pnpm typecheck # Type check everything
# Cleaning
pnpm clean # Clean all build artifacts
Packages
@xtablo/ui
Shared UI components library used across the main and external apps. Contains all base UI components like buttons, inputs, dialogs, etc.
Usage:
import { Button } from "@xtablo/ui/components/button";
import { Input } from "@xtablo/ui/components/input";
@xtablo/shared
Shared utilities, hooks, contexts, and types used across apps.
Usage:
import { useSession } from "@xtablo/shared/contexts/SessionContext";
import { api } from "@xtablo/shared/lib/api";
import { Tables } from "@xtablo/shared/types/database.types";
Apps
Main (@xtablo/main)
The main Xtablo application with full dashboard, planning, chat, and administrative features.
Local URL: http://localhost:5173
External (@xtablo/external)
Embeddable booking widget that can be integrated into external websites. Supports both embedded and floating widget modes.
Local URL: http://localhost:5174
Usage:
- Embedded mode:
?mode=embed&eventTypeId=... - Floating widget:
?mode=widget&eventTypeId=...
Turborepo Features
This monorepo uses Turborepo for:
- Fast builds: Parallel task execution and intelligent caching
- Dependency management: Automatic build ordering based on package dependencies
- Code sharing: Easy sharing of components and utilities between apps
Development Workflow
For comprehensive development documentation including:
- Package development workflow
- Testing strategies
- Troubleshooting guide
- CI/CD setup
See DEVELOPMENT.md
Adding a New Package
See the "Adding a New Package" section in DEVELOPMENT.md for detailed instructions.
Migration Notes
This project was migrated from a single UI app to a Turborepo monorepo with the following changes:
- Before: Single
ui/directory with all code - After:
apps/main/- Main applicationapps/external/- Separate microfrontend for booking widgetspackages/ui/- Shared UI componentspackages/shared/- Shared utilities and logic
All import paths have been updated to use workspace packages (@xtablo/ui, @xtablo/shared).
Contributing
When adding new shared code:
- Add to the appropriate package (
uifor UI components,sharedfor logic/utils) - Export from the package's appropriate entry point
- Use the workspace import in your apps
For more details, see DEVELOPMENT.md
License
[Your License Here]