albertonline.org docs
Apps

api-server

The consolidated Effect v4 server — store RPC + better-auth, chess (Stockfish + WebSocket RPC), CVM media/commerce, and the reference HttpApi.

Overview

api-server is the monorepo's single Effect v4 HTTP server (port 3040). It absorbed the former lila-server, cvm-server and effect-app:

  • Store — StoreRpc at POST /rpc, better-auth at /api/auth/*, Contentful→Stripe sync at /api/sync/*. Serves the it-f-store-cf Cloudflare Worker.
  • Chess (src/chess/) — REST at /games*, WebSocket RPC at /chess/rpc (Stockfish engine, guest sessions). Serves the portal's chess routes via the chess-api.* Traefik hostname.
  • CVM (src/cvm/) — clips/transcribe/render, /catalog, /commerce/*, /newsletter. Serves the portal store via cvm-api.*.
  • Reference HttpApi (src/reference/) — accounts/groups/people demo with SQLite persistence and Swagger at /docs.

One /health, one Prometheus /metrics (api_http_requests).

Stack

  • Effect v4 (@effect/platform-node, HttpRouter + RpcServer + HttpApi)
  • Drizzle ORM + store Postgres (chess tables included) · SQLite (reference)
  • Stripe, Resend, Contentful, better-auth, Sentry

Develop

pnpm -F api-server dev    # tsx watch, :3040
pnpm -F api-server test

Deploy

One Docker Compose service (api) on the VPS, built from the root Dockerfile (APP=api-server), fronted by Traefik under the chess-api.*, cvm-api.* and api.* hostnames. Deployable via Openship (deploy-openship.yml, API_SERVER_PROJECT_ID).

See the root README for monorepo-wide commands.

On this page