Der Abnehm- & Fitness-Tracker dient zur Kontrolle, Auswertung und Motivation beim Abnehmen und fit werden.
Find a file
2026-04-10 20:57:13 +02:00
.github added plan for nutrition data aquisition 2026-04-01 15:09:16 +02:00
docs fixed amount values in meals and recipes while editing; implemented copy from any date and meal 2026-04-10 20:57:13 +02:00
e2e added main chart with logic 2026-03-03 12:00:34 +01:00
packages fixed amount values in meals and recipes while editing; implemented copy from any date and meal 2026-04-10 20:57:13 +02:00
playwright-report added main chart with logic 2026-03-03 12:00:34 +01:00
test-results added main chart with logic 2026-03-03 12:00:34 +01:00
.dockerignore removed nutrition data from dockerignore, we need them in prod 2026-04-01 16:37:21 +02:00
.env.example migrated from SQLite to PostgreSQL; created deployment stuff 2026-03-06 12:55:29 +01:00
.gitignore migrated from SQLite to PostgreSQL; created deployment stuff 2026-03-06 12:55:29 +01:00
.npmrc fixed bugs with barcode scanner, mobile layout breaking viewport, calculations after edit nutrition 2026-04-02 14:22:11 +02:00
.prettierrc initial implementation 2026-03-02 13:08:37 +01:00
backup-local-db.sh added local backup/restore 2026-03-07 14:39:19 +01:00
deploy.sh added admin function to import nutrition data from excel 2026-04-01 16:26:36 +02:00
docker-compose.registry.yml migrated from SQLite to PostgreSQL; created deployment stuff 2026-03-06 12:55:29 +01:00
docker-compose.yml troubleshooting production db problems 2026-03-07 16:23:15 +01:00
LICENSE Initial commit 2026-03-02 09:10:06 +00:00
package.json fixed build process 2026-03-06 21:15:40 +01:00
playwright.config.ts added main chart with logic 2026-03-03 12:00:34 +01:00
pnpm-lock.yaml WIP: nutrition data acquisition; barcode scanner, API to OFF and so on 2026-04-01 18:22:53 +02:00
pnpm-workspace.yaml initial implementation 2026-03-02 13:08:37 +01:00
README.md initial implementation 2026-03-02 13:08:37 +01:00
tsconfig.base.json initial implementation 2026-03-02 13:08:37 +01:00

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

Rolle E-Mail Passwort
Admin admin@weighttracker.local admin123
User max@weighttracker.local user1234

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.