Bakgrund
Traditionella receptsidor är ofta fokuserade på masskonsumtion och vackra, ljusa bilder. För en seriös "Pitmaster" handlar grillning snarare om en obsessiv process. Att loggföra temperaturer, bränsleval och rökutveckling för att kunna återskapa det perfekta resultatet.
Behovet var en digital verkstad; en plats som känns mer som ett tekniskt arkiv eller en hemligstämplad loggbok än en vanlig kokbok.
Målet
Att bygga en plattform som stöder "The Modular Meal". Istället för att bara spara ett isolerat recept på en oxbringa, ville jag skapa ett system där användaren kan bygga en hel måltid genom att koppla samman moduler som rubs, såser och sidorätter.
Teknisk Leverans & Arkitektur
"Single Table Inheritance" för Modulär Receptdata
För att möjliggöra en smidig sök- och filterupplevelse valde jag att samla alla recepttyper (huvudrätter, såser, rubs) i en och samma PostgreSQL-tabell. Genom en type-kolumn och villkorlig rendering i formulären kan användaren skapa specialiserade recept utan att systemet blir fragmenterat.
Identitetsprotokoll & URL-säkerhet
För att undvika trasiga länkar och optimera SEO implementerade jag ett strikt slug-system för användarnamn. Vid registrering valideras användarnamnet mot databasen, och vid kollision genereras unika identifierare, vilket säkrar permanenta och läsbara URL:er som /profile/johan-smoke.
Visuell Identitet: Brutalist BBQ
Designen är medvetet rå och industriell: "The Brutalist Craftsman". Genom att använda Tailwind-klasser som grayscale, font-mono och border-white/5 skapade jag ett gränssnitt som förstärker känslan av eld, rök och tunga grillredskap. Det handlar om att ge användaren känslan av att stå vid grillen och föra logg i en sotig miljö.
Utmaningar & Lösningar
- Data Integrity: Genom att använda Drizzle ORM:s relationer kunde jag säkra att "Field Reports" (användarkommentarer) och kopplingar mellan recept alltid har en tydlig avsändare och mottagare, med
onDelete: cascadeför att hålla databasen ren. - Bildhantering: Integration med Uploadthing för säker och snabb uppladdning av högupplösta bilder från fältet, direktkopplat till receptets livscykel.
Framtida Skalbarhet
Versioning & Social Tracking:
För att stödja den iterativa processen inom BBQ – där ett recept ofta förfinas över tid – har arkitekturen förberetts för Recipe Versioning. Genom en dedikerad historiktabell kan användaren spara ändringar som nya "snapshots" istället för att bara skriva över data. Detta möjliggör även en "Follow"-funktion där prenumeranter kan notifieras när en Pitmaster publicerar en uppdaterad version (t.ex. "V2.1 - Justerad röktid för ek") av ett populärt protokoll.
Prestanda vid skalning (Pagination):
För att säkerställa snabba laddningstider när en profil växer till hundratals recept, implementerades en effektiv Pagination-strategi. Genom att kombinera Next.js Server Components med Drizzles limit och offset hämtas endast relevant data för den aktuella vyn. Detta minimerar dataöverföringen (payload) och håller gränssnittet responsivt, samtidigt som det bibehåller applikationens SEO-värde genom tydlig URL-baserad navigering (t.ex. ?page=2).
Resultat
En robust, snabb och visuellt unik plattform som bryter mot standardmallen för receptappar. Den visar på förmågan att designa för en nischad målgrupp och bygga komplexa relationer i en modern tech-stack.



