generated from nholtware/service-template-express
No description
|
|
||
|---|---|---|
| .forgejo | ||
| .github/workflows | ||
| migrations | ||
| src | ||
| stories | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc.json | ||
| CLAUDE.md | ||
| commitlint.config.js | ||
| Dockerfile | ||
| eslint.config.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
adventure
Backend for the choose-your-adventure builder/player (Express 5 + Postgres), scaffolded
by platform/new-service adventure --kind backend --with postgres. Frontend: adventure-web.
A story is one JSONB doc: { start, nodes: { key: { title, text, ending?, choices: [{label, to}] } } }.
Validation (src/lib/story.ts): errors block publishing (missing start/targets, dead ends,
no reachable ending); warnings are advisory (unreachable scenes, choices on endings).
| Method | Path | |
|---|---|---|
| GET | /stories |
published stories (?mine=1 includes drafts) |
| GET | /stories/:id |
story + issues |
| POST / PUT | /stories, /stories/:id |
create / replace; 400 on bad shape |
| POST | /stories/:id/publish |
422 + issues if errors |
| POST | /stories/:id/unpublish |
|
| DELETE | /stories/:id |
204 |
No auth (homelab). Without DATABASE_URL an in-memory store is used (tests).