Commit Graph

9 Commits

Author SHA1 Message Date
ea3a309b2d fix: fix nav scrolling and card layout on mobile
- App.jsx: use flex column layout so BottomNav stays at bottom and
  never scrolls away; Feed gets a proper definite height for scroll-snap
- Feed.css: feed-slot uses min-height so long cards can grow, align top
- PairCards.css: cap image at 40dvh so card always fits on screen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 15:35:31 +02:00
025b677257 fix: remove /languparent path prefix and align auth/feed flow with API
- Remove /languparent prefix from all API calls (routes are at /auth/* now)
- Align register/login token handling (JWT returned directly, no registration token)
- Feed rewritten to use new getFeedPairs endpoint with PairSentenceCard/YesNoCard/WordCard
- App.jsx: check language_native_id / language_target_id for profile completeness
- Profil.jsx: add logout button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 15:04:20 +02:00
f86f42526f fix: point production API URL to snakkimo endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 14:40:05 +02:00
b674178771 feat: card redesign with new placeholder format, confetti & layout
- New placeholder format {{label.w/o:uuid}} parsed in all card types
- 1:1 image ratio, header below image, section labels (Satz/Frage/Vokabeln)
- Chips styled as underline-italic in sentences
- Vocabulary pill chips (Lora italic, rounded)
- TTS + hold-to-translate buttons in PairSentenceCard
- Confetti on correct answers (canvas-confetti)
- Picture loaded via object_pairs join in feed API

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 13:47:52 +02:00
fb71af5f1d Redesign pair cards + add chip image highlight
- Complete CSS overhaul: refined typography, warm palette, 4:3 images, elegant chips
- Word chip click → popup badge with word + translation
- Object chip click → SVG bbox overlay dims image outside object bounds, draws amber outline
- All three card types (Sentence, YesNo, Word) updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 21:30:38 +02:00
520d0d139c security: K2 fix — registration token flow
registerUser() returns { registrationToken } (10-Min JWT)
createProfile() sends it as X-Registration-Token header
userId nie mehr aus Browser-Body — kommt aus signiertem Token

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:55:53 +02:00
bccec179a4 feat: migrate from Directus direct → API server (api.hejyou.com)
- directus.js: all calls now go to /languparent/* on api.hejyou.com
- Admin token and Directus URL no longer in the browser
- JWT issued by API server (30 days), stored in localStorage
- register: single call returns userId, profile step gets fresh JWT
- login: handles needsProfile flag (403) cleanly
- assetUrl: proxy via /languparent/assets/:fileId (no token in URL)
- .env.production: VITE_DIRECTUS_URL → VITE_API_URL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:43:36 +02:00
0730fe6e8e chore: add .env.production and simplify Dockerfile
Bake VITE_DIRECTUS_URL into production build via .env.production
so no Coolify build-arg configuration is needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:19:15 +02:00
a708152fc1 init: HejYou Language Learning App (React + Vite)
React SPA with Vite, Directus backend, canvas-confetti.
Includes Dockerfile (multi-stage Node → nginx) for Coolify deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 22:15:51 +02:00