Skip to content

Latest commit

 

History

History
43 lines (31 loc) · 2.03 KB

File metadata and controls

43 lines (31 loc) · 2.03 KB

tablo

Personal Prague public-transport departures SPA. Single Cloudflare Worker (static assets + API + Durable Objects), deployed with Alchemy V2, backend logic in Effect. React + Vite frontend, client-side stop selection. See docs/superpowers/specs/ for the design.

Effect Best Practices

IMPORTANT: Always consult effect-solutions before writing Effect code.

  1. Run effect-solutions list to see available guides
  2. Run effect-solutions show <topic>... for relevant patterns (supports multiple topics)
  3. Search ~/.local/share/effect-solutions/effect for real implementations

Topics: quick-start, project-setup, tsconfig, basics, services-and-layers, data-modeling, error-handling, config, testing, cli.

Never guess at Effect patterns - check the guide first.

Local Effect Source

The Effect v4 repository is cloned to ~/.local/share/effect-solutions/effect for reference. Use this to explore APIs, find usage examples, and understand implementation details when the documentation isn't enough.

Effect v4 (beta) notes for this repo

  • We use Effect v4, pinned exactly in package.json (4.0.0-beta.78, the Alchemy 2.0 peer floor) for a slimmer bundle.
  • Everything lives in the single effect package under effect/unstable/* — there is no @effect/platform on v4:
    • HttpApi → effect/unstable/httpapi
    • HttpClient / FetchHttpClient / HttpServer → effect/unstable/http
    • Schema → top-level effect/Schema (import { Schema } from "effect"); effect/unstable/schema holds only Model/VariantSchema
    • RateLimiter → effect/unstable/persistence
  • TypeScript 6 + the language-service patch work together. TS6 quirk: running tsc <file> with a tsconfig present needs --ignoreConfig.

Commit Convention

Use Conventional Commits: <type>(<scope>): <summary>. Types: feat, fix, docs, refactor, test, chore, build, ci, perf, style. Example: feat(api): add departures endpoint.