Skip to main content

CI

Source: .github/workflows/ci.yml. Runs on every push to master and every pull request.

verify

Lint, typecheck, turbo run build, and pnpm check — self-checks inside @betweenus/auth, @betweenus/nest-common, @betweenus/permissions, @betweenus/storage and auth-service, each an assert-based check of a security-relevant primitive (token algorithm pinning, rate-limit client address resolution, permission resolution, storage allowlists, and login end-to-end against an in-memory database).

integration

Postgres and Redis as service containers, migrations applied, every backend service started from its built dist/main.js and polled on /health, then the real smoke scripts run against the live stack over REST and WebSocket:

node apps/services/chat-service/smoke.mjs
node apps/services/presence-service/smoke.mjs
node apps/services/notification-service/smoke.mjs
node apps/services/remote-gateway/smoke.mjs

This is deliberately not a second, parallel test suite — the smoke scripts already walk the real surface end to end, so the cheapest useful CI is giving them a real stack to run against. They had to be made to exit non-zero on a failed assertion first; a failure used to print ok false and exit 0.

android

Debug unit tests, a debug APK build (the real check — it exercises the manifest, every resource, and the Compose compiler, none of which a unit test touches), and compiling (not running) the instrumented tests, so they don't rot even though an emulator isn't run on every PR. No google-services.json and no local.properties here on purpose — a pull request has to build the way a fresh clone does.

Docs

A separate workflow, .github/workflows/docs.yml, builds and deploys this site — see Docs Deployment.