- Node.js 24 (matches
serverless.ymlruntime) - AWS CLI with profiles
AbstractPlayDevandAbstractPlayProdin~/.aws/credentials - Access to the
@abstractplayGitHub Packages scope
npm install
npm run buildnpm run build runs ESLint and TypeScript (tsc). To compile only:
npm run build-tsPrivate packages require a .npmrc:
@abstractplay:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=<PAT with read:packages>
CI creates this from the PAT_READ_PACKAGES secret (see .github/workflows/deploy-dev.js.yml).
To test against a local rules engine build:
npm install /path/to/gameslib.tgzOr point at a packed tarball from a gameslib checkout.
Lambda env vars are set in serverless.yml. Secrets are injected in CI from GitHub Actions secrets:
| Variable | Purpose |
|---|---|
TOTP_KEY |
Organizer TOTP validation |
VAPID_PUBLIC_KEY / VAPID_PRIVATE_KEY |
Web push |
OPENSSH_PRIVATE_KEY |
Some maintenance/crypto paths |
TEST_BOT_CLIENT_ID / TEST_BOT_CLIENT_SECRET |
Dev reference bot (dev only) |
Do not commit secret values. Names only are listed here.
The testBot Lambda is enabled on the dev stage only. Full protocol documentation is in the header of api/testBot.ts. See Bots.
api/ Main Lambda handlers (abstractplay.ts, sockets/, testBot.ts)
lib/ Shared libraries (bots, DDB, WebSocket broadcast)
utils/ Scheduled jobs (yourturn, bot-outbound consumer)
locales/ i18n strings for emails and push notifications
serverless.yml Infrastructure and function definitions