Tableu is an AI-powered tarot reading application built around a React web client and a Cloudflare Worker backend. The reading experience combines deterministic card draws, structured spread semantics, knowledge-graph pattern detection, and LLM-generated narrative synthesis.
- Frontend: React 19 + Vite in
src/ - Backend: Cloudflare Worker router in
src/worker/index.jswith handlers infunctions/api/ - Shared logic:
shared/ - Data and migrations:
data/,migrations/
- Multiple spread types, including One-Card Insight, Three-Card Story, Five-Card Clarity, Decision/Two-Path, Relationship Snapshot, and Celtic Cross
- LLM-generated readings with Azure OpenAI as primary and Claude/local-composer fallback paths
- Knowledge-graph and GraphRAG-assisted narrative context
- Azure OpenAI TTS, Azure Speech SDK, and Hume-backed narration options
- Journal, sharing, follow-ups, and subscription-aware feature gating
- Optional vision research flow for card-photo proofing and telemetry
- PWA support, accessibility features, and reduced-motion support
| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS |
| Backend | Cloudflare Workers |
| AI | Azure OpenAI, Azure Anthropic Claude, local composer |
| Data | Cloudflare D1, KV, R2 |
src/ React frontend
functions/ Worker route handlers and backend libraries
shared/ Isomorphic contracts and shared logic
scripts/ Evaluation, training, deployment, and tooling scripts
docs/ Documentation
migrations/ Database migrations
- Node.js 20+
- npm
- Cloudflare account for Worker deployment
git clone https://github.com/henryperkins/tarot.git
cd tarot
npm installCreate .dev.vars with the required local secrets, then verify it:
npm run config:checkSee docs/DEVELOPER_ONBOARDING.md for the current variable list and setup workflow.
npm run devStarts Vite on http://localhost:5173 (or 5174) and Wrangler Worker dev on http://localhost:8787. (dev:vite is an alias for the same script.)
| Command | Description |
|---|---|
npm run dev |
Full-stack local development (Vite + Worker) |
npm run dev:frontend |
Vite only |
npm run dev:workers |
Wrangler Worker dev |
npm run build |
Production frontend build |
npm test |
Unit tests |
npm run test:e2e |
Playwright E2E tests |
npm run test:a11y |
Static accessibility checks |
npm run gate:vision |
Vision quality gate |
npm run gate:narrative |
Narrative quality gate |
npm run lint |
ESLint |
npm run deployThe deploy flow is managed by scripts/deploy.js and supports migrations, dry runs, and local migration application via the npm scripts in package.json.
docs/README.md- documentation indexdocs/DEVELOPER_ONBOARDING.md- contributor setup and architecture orientationdocs/architecture/full-system-diagrams.md- detailed architecture diagramsdocs/vision-pipeline.md- current vision pipeline and evaluation flowdocs/monetization/monetization-logic.md- implemented monetization behavior
- Use Conventional Commit prefixes like
feat:,fix:,docs:, andtest:. - Run relevant tests before opening a PR.
- Keep documentation changes aligned with code changes.
- Prefer updating canonical reference docs over adding new one-off notes.