No description
Find a file
Arthur Belleville 3232309388
Make tablo icon selection dynamic based on color using nearest palette
match

Instead of selecting icons based on tablo name length, compute the
closest matching icon from a predefined palette by comparing hex color
values. This ensures consistent icon-color pairing and better visual
harmony.
2026-05-10 14:18:33 +02:00
.github/workflows CI for go-backend on github actions 2026-05-08 16:28:48 +02:00
.superpowers/brainstorm Retry signup tests with Stripe CLI 2026-03-15 19:09:35 +01:00
.vscode Initial commit 2025-01-18 22:40:32 +01:00
.zed Split components, add sessions to the DB and make the apercu page 2026-05-08 16:03:54 +02:00
apps fix: make revenuecat config optional in api 2026-05-06 23:44:02 +02:00
backend Some improvements with login 2025-03-25 21:45:20 +01:00
docs Add co-located CSS sources and semantic token infrastructure to Go 2026-05-10 11:47:42 +02:00
go-backend Make tablo icon selection dynamic based on color using nearest palette 2026-05-10 14:18:33 +02:00
infra First work on infra with traefik 2025-02-24 14:58:59 +01:00
packages feat: add apple billing flow for expo app 2026-05-03 09:28:46 +02:00
prompts Merge branch 'main' into work-2 2026-04-29 15:46:46 +02:00
scripts Modify backend 2025-03-15 08:46:51 +01:00
supabase feat: add apple billing flow for expo app 2026-05-03 09:28:46 +02:00
xtablo-expo feat: add apple billing flow for expo app 2026-05-03 09:28:46 +02:00
.dockerignore Use github CI instead of circle ci 2026-04-19 17:28:11 +02:00
.gitignore Build go-backend auth app with Podman dev flow 2026-05-08 12:08:53 +02:00
.pre-commit-config.yaml Fix lint 2025-10-10 11:10:28 +02:00
biome.json merge: resolve develop conflicts 2026-04-24 17:05:56 +02:00
CLAUDE.md Add task management 2025-11-15 22:58:18 +01:00
DEVELOPMENT.md Lint and format 2025-10-23 21:36:21 +02:00
justfile Add task management 2025-11-15 22:58:18 +01:00
package.json merge: resolve develop conflicts 2026-04-24 17:05:56 +02:00
pnpm-lock.yaml feat: add go-backend design system and tablos UI 2026-05-09 20:18:24 +02:00
pnpm-workspace.yaml feat: add go-backend design system and tablos UI 2026-05-09 20:18:24 +02:00
README.md Lint and format 2025-10-23 21:36:21 +02:00
SECURITY_NOTICE.md Remove secrets from env files 2025-11-04 10:53:31 +01:00
static-analysis.datadog.yml Add a lot of tests 2025-10-11 12:32:52 +02:00
turbo.json merge: resolve develop conflicts 2026-04-24 17:05:56 +02:00

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 application
    • apps/external/ - Separate microfrontend for booking widgets
    • packages/ui/ - Shared UI components
    • packages/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:

  1. Add to the appropriate package (ui for UI components, shared for logic/utils)
  2. Export from the package's appropriate entry point
  3. Use the workspace import in your apps

For more details, see DEVELOPMENT.md

License

[Your License Here]