shinkan-jinkendo/.claude/docs/working/HANDOVER_NEXT_SESSION.md
Lars b1142070e9
All checks were successful
Deploy Development / deploy (push) Successful in 35s
docs: Add comprehensive session handover document
2026-04-22 15:09:07 +02:00

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

  • /skills Route (Read-only, bereits geseedet)
  • /methods Route (Read-only, bereits geseedet)

5. Übungen ↔ Skills verknüpfen - 1h

  • M:N Relationship über exercise_skills Tabelle
  • 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

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 Mitai
  • auth_type, verification_expires, trial_ends_at - mussten hinzugefügt werden
  • created vs created_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:

  1. Login/Logout (erledigt)
  2. Übungen verwalten (CRUD)
  3. Vereine anlegen
  4. Trainingsgruppen anlegen
  5. Übungen Skills zuordnen
  6. 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! 🥋