Weighttracker – Abnehm- & Fitness-Tracker
Der Abnehm- & Fitness-Tracker dient zur Kontrolle, Auswertung und Motivation beim Abnehmen und fit werden.
Features
- Tägliche Einträge: Gewicht, Körpermaße, Herzdaten, Protein, Food Noise, Verdauung, Notizen
- Medikamente & Supplemente: Tracking von Peptiden, Supplementen und Medikamenten mit Dosierung
- Aktivitäten: Kraft- und Cardio-Training mit Dauer
- Fotos: Fortschrittsfotos (Front, Back, Side) pro Tag
- Dashboard: Übersicht mit Gewichtsverlauf, Trends und Kennzahlen
- Multi-User: Registrierung mit Admin-Freigabe, Rollen (ADMIN/USER)
- Dark Mode: Umschaltbar zwischen Light und Dark Theme
Tech Stack
| Bereich |
Technologie |
| Frontend |
React 18, Vite, TypeScript, Tailwind CSS, shadcn/ui |
| Backend |
Node.js, Fastify, TypeScript |
| Datenbank |
SQLite mit Prisma ORM |
| Auth |
Oslo.js (SHA-256 + Session-basiertes RBAC) |
| Charts |
Recharts |
| State |
Zustand (UI), TanStack Query (Server) |
| Monorepo |
pnpm Workspaces |
Projektstruktur
weighttracker/
├── packages/
│ ├── backend/ # Fastify API Server
│ │ ├── src/
│ │ │ ├── index.ts # Server Entry Point
│ │ │ ├── routes/ # API Route Handler
│ │ │ ├── services/ # Business Logic
│ │ │ ├── middleware/ # Auth Middleware
│ │ │ └── lib/ # Auth Utilities, Prisma Client
│ │ └── prisma/
│ │ ├── schema.prisma # Datenbank-Schema
│ │ └── seed.ts # Test-Daten
│ │
│ ├── frontend/ # React SPA
│ │ ├── src/
│ │ │ ├── pages/ # Route-Seiten
│ │ │ ├── components/ # UI-Komponenten
│ │ │ ├── hooks/ # TanStack Query Hooks
│ │ │ ├── stores/ # Zustand Stores
│ │ │ ├── services/ # API Client
│ │ │ ├── contexts/ # Auth Context
│ │ │ └── lib/ # Utilities
│ │ └── index.html
│ │
│ └── shared/ # Geteilte Schemas & Types
│ └── src/
│ ├── schemas.ts # Zod Validierungsschemas
│ ├── types.ts # TypeScript Types
│ └── index.ts
│
├── docs/
│ ├── features/ # Feature-Dokumentation
│ └── feature_requests/ # Feature-Anforderungen
│
├── pnpm-workspace.yaml
└── package.json
Schnellstart
Voraussetzungen
- Node.js >= 20.0.0
- pnpm >= 9.0.0
Installation
# Dependencies installieren
pnpm install
# Datenbank einrichten
cd packages/backend
npx prisma generate
npx prisma migrate dev
npx tsx prisma/seed.ts
# Zurück ins Root
cd ../..
Entwicklung starten
# Beide Server gleichzeitig starten (Backend: 3001, Frontend: 5173)
pnpm dev
Oder einzeln:
# Backend
cd packages/backend
pnpm dev
# Frontend (in neuem Terminal)
cd packages/frontend
pnpm dev
Test-Accounts
Häufige Befehle
# Entwicklung
pnpm dev # Alle Dev-Server starten
# Build
pnpm build # Alle Packages bauen
pnpm typecheck # TypeScript prüfen
# Tests
pnpm test # Alle Tests
pnpm test:coverage # Tests mit Coverage
# Code-Qualität
pnpm format # Code formatieren (Prettier)
pnpm format:check # Formatierung prüfen
# Datenbank
cd packages/backend
npx prisma studio # Prisma Studio öffnen
npx prisma migrate dev --name <name> # Neue Migration
npx prisma db seed # Seed-Daten laden
API-Endpunkte
Auth
| Methode |
Pfad |
Beschreibung |
| POST |
/api/auth/register |
Registrierung |
| POST |
/api/auth/login |
Anmeldung |
| POST |
/api/auth/logout |
Abmeldung |
| GET |
/api/auth/me |
Aktueller User |
Tageseinträge
| Methode |
Pfad |
Beschreibung |
| GET |
/api/entries |
Alle Einträge |
| GET |
/api/entries/:date |
Eintrag nach Datum |
| POST |
/api/entries |
Neuer Eintrag |
| PATCH |
/api/entries/:id |
Eintrag aktualisieren |
| DELETE |
/api/entries/:id |
Eintrag löschen |
Medikamente
| Methode |
Pfad |
Beschreibung |
| GET |
/api/medications |
Alle Medikamente |
| POST |
/api/medications |
Neues Medikament (Admin) |
| DELETE |
/api/medications/:id |
Löschen (Admin) |
Admin
| Methode |
Pfad |
Beschreibung |
| GET |
/api/admin/users |
Alle User |
| PATCH |
/api/admin/users/:id/status |
Status ändern |
| PATCH |
/api/admin/users/:id/role |
Rolle ändern |
| GET |
/api/health |
Health Check |
Lizenz
Siehe LICENSE.