mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:01:08 +02:00
Final cleanup of references missed in previous rename commits: - Dockerfiles: PUBLIC_MANA_CORE_AUTH_URL → PUBLIC_MANA_AUTH_URL - Go modules: github.com/manacore/* → github.com/mana/* (7 go.mod files) - launchd plists: com.manacore.* → com.mana.* (14 files renamed + content) - Image assets: *_Manacore_AI_Credits* → *_Mana_AI_Credits* (11 files) - .env.example files: ManaCore brand strings → Mana - .prettierignore: stale apps/manacore/* paths → apps/mana/* - Markdown docs (CLAUDE.md, /docs/*): mana-core-auth → mana-auth, etc. Excluded from rename: .claude/, devlog/, manascore/ (historical content), client testimonials, blueprints, npm package refs (@mana-core/*). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
159 lines
5 KiB
Markdown
159 lines
5 KiB
Markdown
# Arcade - CLAUDE.md
|
|
|
|
AI-powered browser games platform mit 22+ Spielen und KI-Spielgenerierung.
|
|
|
|
## Projektstruktur
|
|
|
|
```
|
|
games/arcade/
|
|
├── apps/
|
|
│ ├── web/ # SvelteKit Web-App (@arcade/web)
|
|
│ │ ├── src/
|
|
│ │ │ ├── routes/ # SvelteKit-Routen
|
|
│ │ │ │ ├── (app)/ # App-Routen mit PillNavigation
|
|
│ │ │ │ │ ├── play/[slug] # Spiel im iframe
|
|
│ │ │ │ │ ├── create/ # AI Game Generator
|
|
│ │ │ │ │ ├── community/ # Community-Spiele
|
|
│ │ │ │ │ ├── stats/ # Spieler-Statistiken
|
|
│ │ │ │ │ └── play-generated/ # Generierte Spiele
|
|
│ │ │ │ └── (auth)/ # Login/Register
|
|
│ │ │ └── lib/
|
|
│ │ │ ├── components/ # Svelte 5 Komponenten
|
|
│ │ │ ├── data/ # Local-first Store, Game-Katalog
|
|
│ │ │ ├── stores/ # Theme, Auth, Navigation
|
|
│ │ │ ├── services/ # Game-Kommunikation (postMessage)
|
|
│ │ │ └── i18n/ # DE + EN Übersetzungen
|
|
│ │ └── static/
|
|
│ │ ├── games/ # 22 HTML-Spiele
|
|
│ │ └── screenshots/ # Game-Thumbnails
|
|
│ ├── web-astro/ # Alte Astro-App (Referenz, zum Löschen)
|
|
│ └── server/ # Hono/Bun Compute Server (@arcade/server)
|
|
│ └── src/
|
|
│ ├── routes/
|
|
│ │ └── games.ts # AI-Spielgenerierung + Community-Einreichungen
|
|
│ └── index.ts
|
|
└── package.json # Root (arcade)
|
|
```
|
|
|
|
## Tech Stack
|
|
|
|
| Aspekt | Technologie |
|
|
|--------|-------------|
|
|
| Frontend | SvelteKit 2 + Svelte 5 (Runes) |
|
|
| Styling | Tailwind CSS 4 + @mana/shared-tailwind |
|
|
| Auth | @mana/shared-auth (SSO) |
|
|
| PWA | @vite-pwa/sveltekit + @mana/shared-pwa |
|
|
| State | @mana/local-store (Dexie.js + sync) |
|
|
| i18n | svelte-i18n (DE + EN) |
|
|
| UI | @mana/shared-ui (PillNav, AuthGate, etc.) |
|
|
| Theming | @mana/shared-theme (multi-theme) |
|
|
| Server | Hono + Bun (AI-Generierung, Community) |
|
|
|
|
## Entwicklung
|
|
|
|
```bash
|
|
# Alles starten (Web + Backend)
|
|
pnpm arcade:dev
|
|
|
|
# Nur Web (SvelteKit)
|
|
pnpm dev:arcade:web
|
|
|
|
# Nur Server (Hono/Bun)
|
|
pnpm dev:arcade:server
|
|
|
|
# Web + Backend zusammen
|
|
pnpm dev:arcade:app
|
|
```
|
|
|
|
**Ports:**
|
|
- Web: http://localhost:5210
|
|
- Server: http://localhost:3011
|
|
|
|
## Local-First Daten
|
|
|
|
Stats und generierte Spiele werden in IndexedDB gespeichert (Dexie.js) mit optionalem Sync:
|
|
|
|
**Collections:**
|
|
- `gameStats` — Highscores, Spielzeit, Spiele pro Game
|
|
- `generatedGames` — Mit KI erstellte Spiele (HTML, Prompt, Modell)
|
|
- `favorites` — Favorisierte Spiele
|
|
|
|
**Dateien:**
|
|
- `src/lib/data/local-store.ts` — Dexie-Store Definition
|
|
- `src/lib/data/queries.ts` — Reactive Queries (useLiveQuery)
|
|
- `src/lib/data/games.ts` — Statischer Spielekatalog (21 Spiele)
|
|
|
|
## API Endpoints
|
|
|
|
| Endpoint | Method | Beschreibung |
|
|
|----------|--------|--------------|
|
|
| `/api/health` | GET | Health Check |
|
|
| `/api/games/generate` | POST | AI-Spielgenerierung |
|
|
| `/api/games/submit` | POST | Community-Einreichung |
|
|
|
|
### POST /api/games/generate
|
|
|
|
```json
|
|
{
|
|
"description": "Ein Snake-Spiel im Neon-Stil",
|
|
"mode": "create",
|
|
"model": "gemini-2.0-flash",
|
|
"originalPrompt": "...",
|
|
"currentCode": "..."
|
|
}
|
|
```
|
|
|
|
**Unterstützte Modelle:**
|
|
|
|
| Modell | Provider | Beschreibung |
|
|
|--------|----------|--------------|
|
|
| `gemini-2.0-flash` | Google | Schnell & günstig (Standard) |
|
|
| `gemini-2.5-flash` | Google | Schnell & gut |
|
|
| `gemini-2.5-pro` | Google | Höchste Qualität |
|
|
| `claude-3.5-haiku` | Anthropic | Schnell & präzise |
|
|
| `claude-3.5-sonnet` | Anthropic | Beste Code-Qualität |
|
|
| `gpt-4o-mini` | Azure OpenAI | Ausgewogen |
|
|
| `gpt-4o` | Azure OpenAI | Sehr gut |
|
|
|
|
## Environment Variables
|
|
|
|
```bash
|
|
MANA_GAMES_BACKEND_PORT=3011
|
|
MANA_GAMES_GOOGLE_GENAI_API_KEY=your_key
|
|
MANA_GAMES_ANTHROPIC_API_KEY=your_key
|
|
MANA_GAMES_AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com
|
|
MANA_GAMES_AZURE_OPENAI_API_KEY=your_key
|
|
MANA_GAMES_AZURE_OPENAI_DEPLOYMENT=gpt-4o
|
|
MANA_GAMES_GITHUB_TOKEN=your_token
|
|
MANA_GAMES_GITHUB_OWNER=tillschneider
|
|
MANA_GAMES_GITHUB_REPO=arcade
|
|
```
|
|
|
|
## Spiel hinzufügen
|
|
|
|
1. HTML-Datei in `apps/web/static/games/spiel_name.html`
|
|
2. Screenshot in `apps/web/static/screenshots/spiel-name.jpg`
|
|
3. Registrieren in `apps/web/src/lib/data/games.ts`
|
|
|
|
## Spiel-postMessage Integration
|
|
|
|
```javascript
|
|
// Beim Laden
|
|
window.parent.postMessage({ type: 'GAME_LOADED', gameId: 'spiel-slug' }, '*');
|
|
|
|
// Bei Score-Update
|
|
window.parent.postMessage({
|
|
type: 'GAME_EVENT', gameId: 'spiel-slug',
|
|
event: 'SCORE_UPDATE', data: { score: 123 }
|
|
}, '*');
|
|
|
|
// Bei Game Over
|
|
window.parent.postMessage({
|
|
type: 'GAME_EVENT', gameId: 'spiel-slug',
|
|
event: 'GAME_OVER', data: { score: 123 }
|
|
}, '*');
|
|
```
|
|
|
|
## Spielekatalog
|
|
|
|
**21 Spiele** in folgenden Genres: Arcade, Puzzle, Tower Defense, Idle/Incremental, Jump 'n' Run, Action, Strategie
|