System backendowy REST API zaprojektowany do obsługi gabinetu dietetycznego. Aplikacja umożliwia dietetykom zarządzanie bazą pacjentów, katalogiem produktów spożywczych oraz tworzenie spersonalizowanych jadłospisów z automatycznym przeliczaniem wartości odżywczych i kalorii.
-
Autentykacja i role (AuthModule, UserModule):
- Rejestracja i logowanie użytkowników z hashowaniem haseł (bcrypt).
- Uwierzytelnianie bezstanowe oparte o tokeny JWT (Bearer token).
- Podział ról w systemie: DIETITIAN (Dietetyk) oraz PATIENT (Pacjent).
-
Katalog produktów (ProductModule):
- Pełny CRUD produktów spożywczych (kalorie, białko, tłuszcz, węglowodany na 100g).
- Wyszukiwanie produktów po nazwie (?search=).
- Modyfikacja bazy ograniczona wyłącznie do roli dietetyka.
-
Karty medyczne pacjentów (PatientModule):
- Zakładanie profili pacjentów powiązanych z dietetykiem prowadzącym.
- Rejestracja parametrów: wzrost, waga początkowa, waga docelowa, data urodzenia, notatki medyczne.
-
Jadłospisy i kalkulacja wartości odżywczych (DietPlanModule):
- Tworzenie planów diety dla konkretnego pacjenta.
- Przypisywanie posiłków do określonych dni tygodnia (1–7) oraz typów posiłków (BREAKFAST, LUNCH, itp.).
- Dodawanie produktów o zdefiniowanej gramaturze do poszczególnych dań.
- Automatyczna kalkulacja sumarycznych kalorii oraz makroskładników per posiłek.
- Framework: NestJS
- Język: TypeScript
- Baza danych: PostgreSQL
- ORM: Prisma
- Autentykacja: Passport JWT (@nestjs/passport, passport-jwt, bcrypt)
- Walidacja danych: class-validator, class-transformer
- Dokumentacja API: Swagger UI (@nestjs/swagger)
git clone <URL_REPOZYTORIUM>
cd DietAppAPI
npm installSkopiuj plik z przykładową konfiguracją środowiskową:
cp .env.example .envNastępnie uzupełnij w pliku .env poprawne dane logowania do bazy PostgreSQL (DATABASE_URL).
Zastosuj schemat bazy za pomocą Prismy i zasil słownik produktów danymi początkowymi:
npx prisma migrate dev --name init
npx prisma db seedTryb deweloperski:
npm run start:devTryb produkcyjny:
npm run build
npm run start:prodAplikacja wystartuje pod adresem: http://localhost
Kompletna, interaktywna dokumentacja wszystkich endpointów REST API wraz ze schematami DTO jest dostępna pod adresem: