Iver Finne

PikNik

PikNik

PikNik - Collaborative Cooking Reinvented

PikNik transforms cooking into a real-time collaborative event. Families, friends, and food lovers can now combine creativity and technology, making every cooking session an interactive and joyful experience.


Oversikt

PikNik er ei plattform der brukarar kan skape kreative måltid i fellesskap, gjennom å samarbeide om ingrediensane dei har tilgjengeleg. Gjennom sanntidsinteraksjon og AI-assistert oppskriftsgenerering, tilbyr PikNik ei sosial og innovativ tilnærming til matlaging.

PikNik er ei interaktiv matlagingsapp der brukarar kan samarbeide i sanntid for å lage kreative oppskrifter basert på ingrediensane dei har.

PikNik Reducing Food Waste

Filstruktur

Filstruktur

piknik/
  ├─ app/
  │  ├─ [code]/
  │  │  └─ page.tsx
  │  ├─ fonts/
  │  │  ├─ GeistMonoVF.woff
  │  │  └─ GeistVF.woff
  │  ├─ favicon.ico
  │  ├─ globals.css
  │  ├─ layout.tsx
  │  └─ page.tsx
  ├─ components/
  │  ├─ ui/
  │  │  ├─ button.tsx
  │  │  ├─ card.tsx
  │  │  ├─ checkbox.tsx
  │  │  ├─ dialog.tsx
  │  │  ├─ input.tsx
  │  │  ├─ label.tsx
  │  │  ├─ scroll-area.tsx
  │  │  ├─ select.tsx
  │  │  ├─ switch.tsx
  │  │  ├─ table.tsx
  │  │  ├─ toast.tsx
  │  │  ├─ toaster.tsx
  │  │  ├─ tooltip.tsx
  │  │  └─ use-toast.ts
  │  └─ piknik.tsx
  ├─ hooks/
  │  └─ use-toast.ts
  ├─ lib/
  │  └─ utils.ts
  ├─ public/
  │  └─ music/
  │     ├─ alt03-answer_010sec.mp3
  │     └─ lobby-classic-game.mp3
  ├─ .env
  ├─ .eslintrc.json
  ├─ .gitignore
  ├─ components.json
  ├─ filetree.txt
  ├─ next.config.mjs
  ├─ package-lock.json
  ├─ package.json
  ├─ postcss.config.mjs
  ├─ README.md
  ├─ tailwind.config.ts
  └─ tsconfig.json

Teknisk Funksjonalitet

FunksjonalitetTeknologiBeskriving
FrontendReact, Next.jsUtvikling av eit responsivt og brukarvennleg grensesnitt.
BackendNode.js, ExpressHandtering av brukarforespørslar og kommunikasjon mellom frontend og AI-tenester.
SanntidskommunikasjonWebSockets (socket.io)Moglegheit for at fleire brukarar kan samhandle i sanntid.
AI-drevet OppskriftsgenereringAnthropic APIGenerering av oppskrifter basert på ingrediensane lagt til av brukarane.
DatabaseMongoDB eller PostgreSQLLagring av øktdata, ingrediensar og oppskrifter midlertidig under ei økt.
AutentiseringJSON Web Tokens (JWT)Autentisering av brukarar som opprettar eller blir med i ei økt.
Responsivt DesignCSS, Tailwind CSSFunksjonalitet som fungerer sømlaus både på skrivebord og mobile einingar.

Hovudfunksjonar

  • Sanntids Samarbeid: Brukarar kan opprette eller bli med i ei økt (opp til seks personar) for å legge til ingrediensar.
  • Ingredienshåndtering: Brukarar kan legge til, redigere og slette ingrediensar.
  • AI-drevet Oppskriftsgenerering: Bruk AI for å generere ei oppskrift basert på valde ingrediensar.
  • Øktstyring: Den som opprettar ei økt kan styre prosessen, inkludert avstemming og nedteljing.

Brukargrensesnitt

  • Innlogging: Start ei ny økt eller bli med i ei eksisterande ved å bruke ein 4-sifra kode.
  • Hovudskjerm: Liste over ingrediensar som brukarar kan leggje til, redigere eller slette.
  • Oppskriftsgenerering: Generer oppskrifter ved hjelp av AI og last dei ned eller del dei.

Brukarforteljingar

  1. Småbarnsfamilien

    Beskrivelse: Kari og familien brukar PikNik til å lage middag saman. Barna legg til ingrediensar dei finn på kjøkenet, og AI-en lagar ei enkel oppskrift som alle kan vere med på å lage.

  2. Kollektivet

    Beskrivelse: Med få ingrediensar igjen bestemmer kollektivet seg for å lage noko saman. Etter avstemming vel dei alle ingrediensane, og PikNik lagar ei oppskrift på ein enkel pastarett.

  3. Matsvinn-entusiasten

    Beskrivelse: Ola inviterer vener til ei økt for å redusere matsvinn. Dei legg til restane dei har, og PikNik gir dei ei oppskrift på ein smakfull wok som nyttar alle ingrediensane utan at noko går til spille.


Datamodell

DatamodellAttributtBeskriving
ØktØkt-kodeUnik identifikator for økta.
Liste over deltakararInneheld alle deltakarane i ei økt.
Liste over ingrediensarInneheld alle ingrediensane lagt til av deltakarane i økta.
IngrediensNamnNamnet på ingrediensen.
MengdeMengda av ingrediensen, t.d. 500 gram.
EiningEining som blir brukt, t.d. gram, stk, ss.
KategoriKategori som ingrediensen høyrer til, t.d. grønsaker, kjøt, krydder.
BrukarBrukaren som la til ingrediensen
OppskriftTittelTittel på oppskrifta.
SkildringKort skildring av retten.
IngredienslisteListe over ingrediensane som blir brukt i oppskrifta.
FramgangsmåteSteg-for-steg instruksjonar for korleis ein lagar retten.