Produktionsnahe Web-App: Live-Zoom-Interviews mit Speech2Text (Whisper) + STAR-Antworten (GPT-4o), Auth (Supabase), Zahlungen (Stripe: SEPA, Karte, Klarna).
- Frontend: Vite/React, Tailwind-Γ€hnliches CSS, React Router
- Backend: FastAPI (async, Uvicorn)
- Auth: Supabase (E-Mail + Google)
- Zahlung: Stripe (SEPA-Lastschrift, Kreditkarte, Klarna; PCI-DSS-konform, tokenbasiert)
- AI: OpenAI Whisper + GPT-4o-mini (Speech2Text + STAR-Antworten)
interview-copilot-de/
βββ src/
β βββ App.jsx, main.jsx
β βββ context/AuthContext.jsx
β βββ pages/Login.jsx, Dashboard.jsx, Interview.jsx
β βββ components/UpgradeBanner.jsx
β βββ lib/supabase.js
βββ backend/main.py # FastAPI + Auth-Middleware + Stripe
βββ backend/requirements.txt
βββ .env.example
βββ vercel.json
-
Dependencies
npm install cd backend && pip install -r requirements.txt
-
Umgebungsvariablen
- Projektroot:
.envmitVITE_SUPABASE_URL,VITE_SUPABASE_ANON_KEY(optional: ohne = Demo-Modus, 3 Sessions) - Backend:
backend/.envmitOPENAI_API_KEY,SUPABASE_JWT_SECRET,STRIPE_SECRET_KEY,STRIPE_PRICE_ID,STRIPE_WEBHOOK_SECRET(siehe .env.example)
- Projektroot:
-
Backend starten
cd backend python -m uvicorn main:app --reload --host 127.0.0.1 --port 8000 -
Frontend starten
npm run dev
β http://localhost:3000 (oder 3001 falls 3000 belegt)
- /login: E-Mail/Passwort + βContinue with Googleβ, DSGVO-Checkbox
- Zustand:
user.isLoggedIn,user.currentPlan(free/pro),user.remainingSessions(z. B. 3 kostenlos) - Nach Login β /dashboard
- GET /api/me: JWT aus Header
Authorizationoderx-supabase-authβ User-Meta (plan, remaining_sessions)
- Upgrade-Banner bei
remainingSessions β€ 0: βUpgrade to Pro β 19,99 β¬/Monatβ β Checkout-Button - POST /api/create-checkout-session: erstellt Stripe Checkout (SEPA, Karte, Klarna); Redirect zu Stripe
- POST /api/webhook: Stripe-Webhook setzt nach erfolgreicher Zahlung
current_plan: pro, unbegrenzte Sessions - Keine Kartendaten im Backend (PCI-DSS-konform)
- Dark-Stealth-Overlay (z-index: 999999) fΓΌr Zoom/Teams
- Mikrofon β Speech2Text (Whisper) β STAR-Antwort (GPT-4o-mini)
- Lebenslauf PDF Drag & Drop (clientseitig), RAG fΓΌr personalisierte Antworten
- XING/StepStone URL β Fragen extrahieren
- Session-Limit (Free: 3 Sessions; Pro: unbegrenzt)
- Frontend: Vercel β
vercel - Backend: Railway/Render β
VITE_API_URLim Frontend auf Backend-URL setzen - Stripe Webhook: URL z. B.
https://your-backend.com/webhook, Signatur mitSTRIPE_WEBHOOK_SECRETprΓΌfen