d2b4b67e448a3278ea8e52c08134b33d69e94da3
- the 7 catalog admin files (softwares, releases, external_links, platform_links, images, files page, downloads) move to the engine's app/admin; the host ActiveAdmin instance loads them via ActiveAdmin.application.load_paths (single admin, URLs unchanged) - engine initializers: Zeitwerk ignore for app/admin (production eager load) and load_paths + watchable_dirs registration, guarded by defined?(ActiveAdmin) so the admin-less dummy app boots - images admin reads image owners from WarpEngine.config.image_owners; the host registers the Member owner in config/initializers/warp_engine.rb; the interim ImageUsage registry is gone - fix: SoftwareImage.distinct.pluck clashed with its order(:position) default scope on MySQL (unscope(:order)) — introduced in phase 0, caught by the first authenticated /admin/images smoke test - files page: download links use the public /file/ URL instead of the raw container path; the picker's stored path comes from config Verified: both suites green, zeitwerk:check (production) clean, JSON baselines intact, authenticated admin smoke test on every page incl. the 3-level nested software form and Files picker mode. 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%