b79a73d62dcc346a1df674477d839a9ac1e340f2
- update, files and the 6 /api catalog controllers now live in the engine on a new WarpEngine::ApiController base (same rescue/mime behavior as host) - engine routes serve /update, /file/*path, /api/software*, /api/builds*, /api/image/:id, /api/download at unchanged public paths via the root mount; host routes keep only TTG endpoints (events, members, wiki, rss, swagger) - /update secret comes from WarpEngine.config.update_secret and an unconfigured secret now rejects every request (previously an empty UPDATE_SECRET env accepted empty secrets) - apipie-rails is an engine dependency (DSL in engine controllers); dummy app configures apipie with validation off, mirroring the host - engine request specs: catalog controller specs moved from host plus new /update auth contract spec Verified: engine suite 53 green, host suite 6 green, /api/software and /api/builds byte-identical to baselines, /update 401/400 behavior intact, admin and TTG endpoints OK. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Teletype Games
Monorepo: Vue 3 frontend + Rails 8 API.
Projekt struktúra
apps/
frontend/ # Vue 3 + Vite + TypeScript + Tailwind
api/ # Rails 8 API + ActiveAdmin
Fejlesztői környezet
docker compose up -d
| Szolgáltatás | URL |
|---|---|
| Frontend | http://${WEBAPP_DOMAIN} |
| API | http://${WEBAPP_DOMAIN}/api |
| Admin | http://${WEBAPP_DOMAIN}/admin |
| API Docs | http://${WEBAPP_DOMAIN}/api/swagger |
Linting
Backend (RuboCop)
# Ellenőrzés
docker compose run --rm --no-deps api bundle exec rubocop
# Automatikus javítás
docker compose run --rm --no-deps api bundle exec rubocop -A
Konfig: apps/api/.rubocop.yml (rubocop-rails-omakase preset)
Frontend (ESLint)
# Ellenőrzés
docker compose run --rm --no-deps frontend npm run lint
# Automatikus javítás
docker compose run --rm --no-deps frontend npm run lint:fix
Konfig: apps/frontend/eslint.config.js (ESLint 9 flat config, Vue + TypeScript)
Languages
Ruby
43.8%
Vue
27.8%
TypeScript
13%
CSS
10.2%
JavaScript
3.3%
Other
1.8%