ReceptAkuten är en webbapp där användare kan skapa, spara och dela recept samt få hjälp med att planera sina måltider.Målet med projektet är att göra det enklare att hålla ordning på sina recept och minska tiden som läggs på att planera veckans mat.

Användare kan skapa egna recept, spara recept från andra användare och anpassa kopior av recept efter egna önskemål utan att ändra originalet.Det finns även möjlighet att skapa grupper där användare kan dela recept och innehåll med exempelvis familj eller vänner.

Systemet kan använda användarens valda recept för att skapa måltidsplaner och generera inköpslistor baserat på de planerade måltiderna.Projektet har utvecklats med fokus på en tydlig struktur där presentation, affärslogik och datalagring är separerade för att göra systemetenklare att vidareutveckla och underhålla.

Systemarkitektur

Receptakuten är uppbyggt som en klient-server-applikation där frontend, backend och databas är separerade från varandra. Frontenden är utvecklad i Vue.js 3 med Composition API och kommunicerar med ett REST API byggt i .NET 8. Systemets data lagras i en PostgreSQL-databas.

De olika delarna körs i separata Docker-containrar, vilket gör det enklare att utveckla och uppdatera varje del utan att påverka resten av systemet.Containrarna kommunicerar med varandra via interna nätverk och hanteras som separata tjänster.

I produktionsmiljön är frontenden tillgänglig via receptakuten.net och backend-API körs på en separat subdomän,api.receptakuten.net. För att kunna testa nya funktioner innan de släpps finns även en separat stagingmiljö medegna instanser av frontend och backend. Denna miljö är skyddad med Basic Authentication och används för att kontrolleraatt förändringar fungerar innan de distribueras till produktion.

Utvecklingen sker genom att nya funktioner först skapas i egna feature-brancher och sedan flyttas vidare genomolika miljöer innan de når produktion. Varje miljö har egna inställningar och miljövariabler för att separeratestmiljön från produktionsmiljön och undvika påverkan på riktig användardata.