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.
IMPORTANT: Always consult effect-solutions before writing Effect code.
- Run
effect-solutions listto see available guides - Run
effect-solutions show <topic>...for relevant patterns (supports multiple topics) - Search
~/.local/share/effect-solutions/effectfor 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.
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.
- 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
effectpackage undereffect/unstable/*— there is no@effect/platformon v4:- HttpApi →
effect/unstable/httpapi - HttpClient / FetchHttpClient / HttpServer →
effect/unstable/http - Schema → top-level
effect/Schema(import { Schema } from "effect");effect/unstable/schemaholds onlyModel/VariantSchema - RateLimiter →
effect/unstable/persistence
- HttpApi →
- TypeScript 6 + the language-service patch work together. TS6 quirk: running
tsc <file>with a tsconfig present needs--ignoreConfig.
Use Conventional Commits: <type>(<scope>): <summary>.
Types: feat, fix, docs, refactor, test, chore, build, ci, perf, style.
Example: feat(api): add departures endpoint.