Personlig morgen-readiness app der henter data fra Intervals.icu og Google Calendar, beregner Recovery-, Søvn- og Readiness-scores, og viser det i en mobil-first React-app.
backend/ Express/TypeScript API → hostes på Railway
frontend/ React/Vite app → hostes på Vercel
cd backend
cp .env.example .env # udfyld variablerne
npm install
npm run dev # kører på http://localhost:3001cd frontend
npm install
npm run dev # kører på http://localhost:3000Frontend proxyer automatisk /api-kald til localhost:3001 i dev-mode.
| Variabel | Beskrivelse |
|---|---|
INTERVALS_API_KEY |
API-nøgle fra intervals.icu/settings |
INTERVALS_ATHLETE_ID |
Dit athlete-ID fra Intervals.icu |
ICS_FYSISK_HELBRED |
Hemmelig iCal-URL fra Google Calendar (Indstillinger → kalender → "Hemmelig adresse i iCal-format") |
CORS_ORIGIN |
Frontend-URL i produktion, fx https://din-app.vercel.app |
- Tilslut dette repo i Railway
- Sæt Root Directory til
backend - Tilføj miljøvariabler under Variables
- Railway bygger og starter automatisk via
railway.json
- Tilslut dette repo i Vercel
- Vercel finder
vercel.jsoni roden automatisk - Tilføj environment variable:
VITE_API_URL=https://din-railway-url.up.railway.app
Alle beregninger sker i backend — ingen AI nødvendig til daglig drift.
| Score | Hvad den måler |
|---|---|
| Recovery | HRV, hvilepuls, søvntimer, TSB — vægtet z-score mod baseline |
| Søvn | Varighed, Garmin søvnscore, konsistens over 8 dage |
| Readiness | Gennemsnit af Recovery og Søvn (50/50) |
Verdict: 🟢 Grøn ≥ 65 · 🟡 Gul 45–64 · 🔴 Rød < 45