v0.1.0 — base app + stack from Flight-Ops, scificn-ui Mission Control interface #1

Merged
kamilkrzywda merged 9 commits from scaffold-base into master 2026-09-28 18:37:08 +02:00
Owner

Initial scaffold of SpaceWanderer (turn-based space adventure, single-player only):

  • Base stack copied/adapted from ../flight: Next.js 16 App Router + React 19 + TS strict, bun, SQLite via Drizzle + sql.js (empty schema + _meta persistence plumbing)
  • Frontend: scificn-ui v0.1.0 (copy-paste model, Radix + Tailwind v4), SCI-FI theme with brightened --text-muted; interface base = Mission Control showcase layout (header/stats/3-col panels/footer, placeholder ship content)
  • API pattern: /api/version + OpenAPI 3.x generated in code (lib/openapi.ts) at /api/openapi
  • CI/e2e/docker mirror Flight-Ops: single job CI / build + unit + e2e (pull request) on dind, isolated stack space-wanderer-ci (static IP), e2e smoke + mid-run compose-restart state spec; prod compose with Traefik labels for space-wanderer.dev.kkhost.pl
  • No auth/accounts/multiplayer by design (single-player only)

Local verification: tsc --noEmit ✓, vitest 7/7 ✓, playwright test --list ✓, next build clean.

Initial scaffold of SpaceWanderer (turn-based space adventure, single-player only): - Base stack copied/adapted from ../flight: Next.js 16 App Router + React 19 + TS strict, bun, SQLite via Drizzle + sql.js (empty schema + `_meta` persistence plumbing) - Frontend: scificn-ui v0.1.0 (copy-paste model, Radix + Tailwind v4), SCI-FI theme with brightened `--text-muted`; interface base = Mission Control showcase layout (header/stats/3-col panels/footer, placeholder ship content) - API pattern: `/api/version` + OpenAPI 3.x generated in code (`lib/openapi.ts`) at `/api/openapi` - CI/e2e/docker mirror Flight-Ops: single job `CI / build + unit + e2e (pull request)` on dind, isolated stack `space-wanderer-ci` (static IP), e2e smoke + mid-run compose-restart state spec; prod compose with Traefik labels for space-wanderer.dev.kkhost.pl - No auth/accounts/multiplayer by design (single-player only) Local verification: tsc --noEmit ✓, vitest 7/7 ✓, playwright test --list ✓, next build clean.
kamilkrzywda added 8 commits 2026-09-28 18:15:47 +02:00
Copied/adapted from Flight-Ops (../flight): tsconfig/next/vitest configs verbatim,
Dockerfile two-stage node:22-slim with node_modules in build context (zero outbound
network at image-build time), .dockerignore/.gitignore adapted. package.json renamed
to space-wanderer v0.1.0; dropped maplibre-gl + assets:download; added Tailwind v4,
Radix slot, cva/clsx/tailwind-merge for the scificn-ui component layer.
Prod compose: Traefik labels for space-wanderer.dev.kkhost.pl, ./db volume mount.
CI compose: project space-wanderer-ci on external network space-wanderer-ci-e2e with
the app pinned to static IP 172.39.0.10 (Flight-Ops mechanism verbatim, distinct
network name so both stacks coexist on the shared dind daemon), fresh named DB volume
per run. ci.yml: single 'build + unit + e2e' job — required status check name kept;
flaky-uplink retry loops, dep/browser caches, dind cleanup + prune carried over.
scificn-ui v0.1.0 integrated copy-paste per its docs: Button/Panel/Badge/Card/Alert
in components/ui/, cn() helper in lib/utils.ts, theme tokens in app/globals.css.
Deliberate deviation from upstream: --text-muted #4A4A40 -> #6B6B5C (+12pt lightness)
for readability on the near-black background (default SCI-FI theme only). Landing page
proves the integration; no game UI yet.
lib/openapi.ts is the machine-readable spec (served at /api/openapi) per AGENTS.md;
info.version sourced from package.json. Unit tests pin the spec shape and version sync.
Flight-Ops plumbing minus game code: in-memory WASM DB, persist() via tmp+rename,
globalThis singleton. Schema is empty at scaffold stage; _meta plumbing table stamps
created_at on first open so the ./db volume holds a valid SQLite file from boot
(a brand-new sql.js database exports as zero bytes). instrumentation.ts opens it at
server start behind a runtime-guarded dynamic import (keeps node:fs out of the Edge
instrumentation bundle).
playwright.config.ts mirrors Flight-Ops shape (remote browser default ws://192.168.1.4:3000/,
PW_REMOTE_BROWSER=0 local, E2E_BASE_URL/E2E_DEPLOY_CMD optional). smoke.spec.ts: landing
page + scificn components + /api/version. state.spec.ts: mid-run docker compose restart
via E2E_COMPOSE_ARGS, re-asserts the app serves (no auth — single player by design).
kamilkrzywda added 1 commit 2026-09-28 18:33:28 +02:00
e2e: fix smoke spec tab locators (Radix Tabs render role="tab", not button)
CI / build + unit + e2e (pull_request) Successful in 2m31s
ed2e346100
kamilkrzywda merged commit 15096f15d5 into master 2026-09-28 18:37:08 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OpenCode/SpaceWanderer#1