Files
recipe-app/TEKNISK_BESKRIVNING.md
T

5.0 KiB
Raw Blame History

Teknisk beskrivning av Recipe App

Översikt

Recipe App är en fullstack-applikation för hantering av hemmavaror, recept och inköpsplanering. Systemet är byggt med Next.js (frontend), NestJS (backend), Prisma ORM och MariaDB. Applikationen är containeriserad med Docker och använder Caddy som reverse proxy.


Versionsinformation

Delsystem Teknik Version
Frontend Next.js 16.2
React 19.2
TypeScript 5.4.5
Node 22.x (via @types/node 22.15.29)
Backend NestJS 10.3
Prisma 6.12.0
TypeScript 5.4.5
Node 22.x (via @types/node 22.15.29)
Databas MariaDB 11
Proxy Caddy 2.x
Container Docker 24+

Frontend

  • Framework: Next.js 16.2 (App Router, server + client components)
  • Språk: TypeScript 5.4.5
  • UI: React 19.2, ingen CSS-ramverk (ren CSS-in-JS och inline-stilar)
  • Bygg: Standalone output, körs i Docker-container
  • API-anrop: Fetch mot backend och Next.js API routes
  • Felhantering: Global parseErrorResponse utility, svenska felmeddelanden

Funktioner (frontend)

  • Inventarielista:
    • Sök, filtrera och sortera hemmavaror (namn, plats, bäst före, A–Ö)
    • Lägg till, redigera, konsumera och ta bort varor
    • Konsumtionshistorik med enheter
  • Recept:
    • Lista, skapa, redigera och ta bort recept
    • Jämför recept mot hemmavaror (räcker/saknas/enhetskonflikt)
    • Visar instruktioner och saknade ingredienser för valt recept
    • Sidebar med snabblista över recept
  • Admin: Produkter:
    • Sök och sortera produkter (A–Ö, senast tillagda)
    • Redigera canonical name
    • Merge preview för produktnamn
  • Felhantering:
    • Svenska felmeddelanden, tydliga varningar vid valideringsfel
  • Responsiv design:
    • Fungerar på mobil, surfplatta och desktop

Backend

  • Framework: NestJS 10.3
  • Språk: TypeScript 5.4.5
  • Databas: MariaDB 11 (via Prisma 6.12.0)
  • API: REST, validering med class-validator
  • Felhantering: GlobalExceptionFilter (svenska felmeddelanden)
  • Hälsokontroll: /health endpoint med status, uptime, DB-latens
  • Bygg: Körs i Docker-container, byggs med nest build

Funktioner (backend)

  • Inventarie-API:
    • CRUD för hemmavaror
    • Konsumtionshistorik (med enheter)
    • Sortering och filtrering (plats, bäst före, namn)
  • Recept-API:
    • CRUD för recept och ingredienser
    • Preview mot hemmavaror (räcker/saknas/enhetskonflikt)
  • Produkt-API:
    • CRUD för produkter
    • Merge preview och canonical name
  • Felhantering:
    • Svenska felmeddelanden, 400/503 status
  • Hälsokontroll:
    • /health endpoint (200/503, DB-status, uptime)

Infrastruktur & DevOps

  • Docker Compose: Orkestrerar frontend, backend, databas och proxy
  • Caddy: Reverse proxy, hanterar Next.js API routes och backend
  • Miljövariabler: Hanterar DB-url, ports etc
  • Backup-script: backup_recipe_app.sh

Viktiga filer & mappar

  • frontend/app/ Next.js app directory (pages, komponenter)
  • backend/src/ NestJS API (controllers, services, modules)
  • backend/prisma/schema.prisma Prisma datamodell
  • compose.yml Docker Compose setup
  • Caddyfile Proxyregler

Funktionell översikt

Hemmavaror

  • Lägg till, redigera, ta bort och konsumera varor
  • Sök, filtrera (plats), sortera (bäst före, namn)
  • Konsumtionshistorik med enheter

Recept

  • Skapa, redigera, ta bort recept
  • Jämför mot hemmavaror (räcker/saknas/enhetskonflikt)
  • Visar instruktioner och saknade ingredienser

Produkter (Admin)

  • Sök, sortera, redigera canonical name
  • Merge preview

Hälsa & Fel

  • /health endpoint (status, uptime, DB)
  • Svenska felmeddelanden i hela systemet

Exempel på API-endpoints

  • GET /api/inventory Lista hemmavaror
  • POST /api/inventory Lägg till vara
  • PATCH /api/inventory/:id Uppdatera vara
  • DELETE /api/inventory/:id Ta bort vara
  • GET /api/recipes Lista recept
  • POST /api/recipes Skapa recept
  • PATCH /api/recipes/:id Uppdatera recept
  • DELETE /api/recipes/:id Ta bort recept
  • GET /api/products Lista produkter
  • PATCH /api/products/:id Uppdatera produkt
  • GET /health Hälsokontroll

Säkerhet

  • Ingen auth i grundutförande (kan enkelt byggas på)
  • Validering av all input (class-validator)
  • Felmeddelanden på svenska

Utbyggbarhet

  • Lätt att lägga till fler fält, filter och funktioner
  • Kan utökas med auth, shoppinglistor, delning m.m.

Kontakt

För frågor, kontakta utvecklaren.