9.3 KiB
Shinkan Jinkendo - Session Handover
Datum: 2026-04-22
Kontext: App-Entwicklung nach Login-Setup - Kern-Features implementieren
🎯 Projekt-Mission
Shinkan Jinkendo (真観) - Trainer- und Vereinsplattform für Kampfsport-Trainingsplanung.
NICHT: Persönliches Athleten-Tracking (das ist Mitai)
SONDERN: Trainer verwalten Vereine, Gruppen, Übungen, Training
📚 Pflicht-Dokumentation (ZUERST LESEN!)
Fachliches Design
c:\Dev\shinkan-jinkendo\.claude\docs\working\SHINKAN_PROJECT_SETUP.md
Enthält:
- Domain Model (Clubs, Groups, Skills, Methods, Exercises)
- MVP Features
- Datenbank-Schema
- User Stories
Technisches Setup (bereits erstellt von vorheriger Session)
Siehe: SHINKAN_PROJECT_SETUP.md - Abschnitte:
- Tech Stack (React 18, FastAPI, PostgreSQL 16, Docker)
- Ports: Dev 3098/8098, Prod 3003/8003
- Deployment: Gitea Actions auf develop Branch
Referenz-Codebase
c:\Dev\mitai-jinkendo\
Nutzen für Standards:
- Router-Struktur (
backend/routers/) - Frontend-Patterns (
frontend/src/pages/) - CSS-System (
frontend/src/app.css)
⚠️ WARNUNG: Mitai-Code NICHT blind kopieren!
- Mitai hat AI-Features, Export, komplexes Membership
- Shinkan ist einfacher, andere DB-Spalten
- Immer Schema prüfen vor Copy/Paste!
🔧 Aktueller Stand
✅ Was funktioniert
- Login/Auth: lars@stommer.com / 12345678 (admin, premium)
- Backend API: http://192.168.2.49:8098
- Frontend: http://192.168.2.49:3098
- Datenbank:
- profiles, sessions (Auth)
- clubs, divisions, training_groups (Organisation)
- skills (12 Einträge), training_methods (8 Einträge) - bereits geseedet!
- exercises, exercise_skills (leer)
❌ Bekannte Probleme
1. Navigation erscheint nicht im Browser
- Code existiert:
frontend/src/components/Navigation.jsx - Routes hinzugefügt: ProfilePage, ExercisesPage, ClubsPage
- Deploy erfolgt (Commit
c4b1b54) - Problem: Nicht im Browser sichtbar - vermutlich Browser-Cache oder Build-Issue
2. Sessions funktionieren nicht
- User muss sich ständig neu einloggen
- Backend-Fix gepusht (Commit
08326bd) - Mitai-Spalten entfernt - Problem: Unklar ob Fix deployed wurde
Erste Aufgabe: Diese beiden Issues fixen, DANN Features bauen!
📁 Code-Struktur
c:\Dev\shinkan-jinkendo\
├── backend/
│ ├── main.py (FastAPI setup, Router registration)
│ ├── auth.py (Session management, require_auth)
│ ├── db.py (PostgreSQL connection pool)
│ ├── models.py (Pydantic models)
│ ├── routers/
│ │ ├── auth.py (Login, Register, Logout)
│ │ └── profiles.py (User profile CRUD)
│ └── migrations/
│ ├── 001_auth_membership.sql
│ ├── 002_organization.sql
│ ├── 003_catalogs.sql (Skills + Methods seeded!)
│ └── 004_add_auth_columns.sql
│
├── frontend/src/
│ ├── App.jsx (Routing + ProtectedRoute)
│ ├── context/
│ │ └── AuthContext.jsx (User state, login/logout)
│ ├── components/
│ │ └── Navigation.jsx (Header-Menü - NICHT SICHTBAR)
│ ├── pages/
│ │ ├── LoginPage.jsx (✅ funktioniert)
│ │ ├── Dashboard.jsx (✅ zeigt Welcome)
│ │ ├── ProfilePage.jsx (NEU - Platzhalter)
│ │ ├── ExercisesPage.jsx (NEU - leer)
│ │ └── ClubsPage.jsx (NEU - leer)
│ └── utils/
│ └── api.js (Zentrale API-Client mit Token-Injektion)
│
└── .claude/docs/
└── working/
└── SHINKAN_PROJECT_SETUP.md (LESEN!)
🚀 Was JETZT gebaut werden muss (MVP Scope)
Phase 1: Core CRUD (Priorität)
1. Übungsverwaltung (Kernobjekt) - 2-3h
backend/routers/exercises.py- GET /exercises (Liste mit Filter)
- POST /exercises (Create)
- GET /exercises/{id} (Detail)
- PUT /exercises/{id} (Update)
- DELETE /exercises/{id}
frontend/src/pages/ExercisesPage.jsx- Liste (Tabelle oder Cards)
- Create-Modal/Form
- Edit inline oder Modal
- Delete mit Confirm
Schema: Siehe migrations/001_auth_membership.sql - Tabelle exercises
Felder:
- title, summary, goal, execution, preparation, trainer_notes
- equipment (JSONB array), duration_min/max, group_size_min/max
- age_groups (JSONB), focus_area, secondary_areas (JSONB)
- training_character, visibility (private/club/public)
- primary_method_id, secondary_method_ids (JSONB)
Referenz: Mitai hat ähnliche CRUD-Pattern in routers/weight.py, routers/activity.py
2. Vereinsverwaltung - 1-2h
backend/routers/clubs.py- CRUD für clubs
- CRUD für divisions (optional)
frontend/src/pages/ClubsPage.jsx
Schema: Siehe migrations/002_organization.sql
3. Gruppenverwaltung - 1-2h
backend/routers/groups.py- CRUD für training_groups
- Zuordnung zu Clubs
- Trainer-Zuordnung (trainer_id, co_trainer_ids)
frontend/src/pages/GroupsPage.jsx
Phase 2: Kataloge & Zuordnungen (Später)
4. Skills & Methods anzeigen - 0.5h
/skillsRoute (Read-only, bereits geseedet)/methodsRoute (Read-only, bereits geseedet)
5. Übungen ↔ Skills verknüpfen - 1h
- M:N Relationship über
exercise_skillsTabelle - UI: Multi-Select für Skills beim Übung-Erstellen
🔍 Debugging-Checkliste (Vor neuen Features!)
Problem: Navigation nicht sichtbar
# SSH zum Server
ssh lars@192.168.2.49
# Frontend Container prüfen
docker exec dev-shinkan-ui ls -la /usr/share/nginx/html/assets/
# Erwartung: Datei index-CYNK--85.js oder neuer
# Prüfen ob Navigation.jsx im Bundle
docker exec dev-shinkan-ui grep -o "Navigation\|Übungen" /usr/share/nginx/html/assets/index-*.js | head -5
# Falls nicht: Frontend neu bauen
cd /home/lars/docker/shinkan-dev
git pull
docker compose -f docker-compose.dev-env.yml build --no-cache frontend
docker compose -f docker-compose.dev-env.yml up -d
Problem: Sessions funktionieren nicht
# Backend Logs prüfen
docker logs dev-shinkan-api --tail 50 | grep -E "error|Error|column.*does not exist"
# Erwartung: KEINE "column p.ai_enabled does not exist" Fehler mehr
# Session-Test
curl -X POST http://192.168.2.49:8098/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"lars@stommer.com","password":"12345678"}' | python3 -m json.tool
# Erwartung: {"token": "...", "role": "admin", ...}
🛠️ Entwicklungs-Workflow
1. Feature implementieren (Lokal)
# Backend
cd c:\Dev\shinkan-jinkendo
# Router erstellen: backend/routers/exercises.py
# Models ergänzen: backend/models.py
# Router registrieren: backend/main.py
# Frontend
# Seite erstellen: frontend/src/pages/ExercisesPage.jsx
# API-Funktionen: frontend/src/utils/api.js
# Route in App.jsx
2. Committen & Pushen
git add -A
git commit -m "feat: Exercise CRUD implementation"
git push origin develop
3. Gitea Action deployt automatisch
- Kein manuelles
docker composemehr! - Warte 1-2 Min
- Prüfe: http://192.168.2.49:3098
4. Testen im Browser
- Login: lars@stommer.com / 12345678
- Feature testen
- Console prüfen (F12) bei Fehlern
📊 Datenbank-Zugriff
# SSH
ssh lars@192.168.2.49
# PostgreSQL CLI
docker exec -it dev-shinkan-postgres psql -U shinkan_dev -d shinkan_dev
# Hilfreiche Queries
\d profiles # Schema anzeigen
\d exercises # Exercise-Schema
SELECT * FROM skills; # Alle Skills (12 Einträge)
SELECT * FROM training_methods; # Alle Methods (8 Einträge)
⚠️ Lessons Learned (Vermeide diese Fehler!)
1. Mitai vs Shinkan Schema
Problem: Auth.py von Mitai kopiert, aber Spalten fehlen in Shinkan
Fehler:
ai_enabled,ai_limit_day,export_enabled- existieren nur in Mitaiauth_type,verification_expires,trial_ends_at- mussten hinzugefügt werdencreatedvscreated_at- unterschiedliche Spaltennamen
Regel: Vor Mitai-Code kopieren → Schema prüfen!
2. Frontend-Cache
Problem: Code deployed aber nicht sichtbar im Browser
Lösung:
- Browser-Cache leeren (Ctrl+Shift+R)
- Oder
docker compose build --no-cache frontend
3. Gitea Actions nicht mit manuellen Deploys mischen
Problem: Container-Namens-Konflikte
Regel: Nur git push → Gitea macht den Rest
📞 Server-Info
| System | Wert |
|---|---|
| Pi IP | 192.168.2.49 |
| Gitea | http://192.168.2.144:3000/Lars/shinkan-jinkendo |
| Dev Frontend | http://192.168.2.49:3098 |
| Dev Backend | http://192.168.2.49:8098 |
| Deploy Path | /home/lars/docker/shinkan-dev |
| DB Name | shinkan_dev |
| DB User | shinkan_dev |
| DB Pass | dev_password |
🎯 Erfolgs-Kriterien MVP
Nach MVP soll User können:
- ✅ Login/Logout (erledigt)
- ⏳ Übungen verwalten (CRUD)
- ⏳ Vereine anlegen
- ⏳ Trainingsgruppen anlegen
- ⏳ Übungen Skills zuordnen
- ⏳ Skills/Methods katalog ansehen
Geschätzte Zeit: 6-8h für Punkte 2-6
🚦 Start-Kommando für neue Session
Ich übernehme die Entwicklung von Shinkan Jinkendo.
Kontext gelesen: HANDOVER_NEXT_SESSION.md
Erste Schritte:
1. Navigation + Sessions debuggen
2. Dann: Exercise CRUD implementieren
Bitte bestätige dass du bereit bist und zeige mir den aktuellen Status (Container, letzte Commits, bekannte Probleme).
Viel Erfolg! 🥋