Culina
A recipe and food platform connecting structured ingredients, cookbooks and publishing workflows across React and native iOS.
- Status
- Active
From recipes to a connected food model
Culina brings recipe discovery, personal collections and the information behind a meal together. Users can browse and search recipes, inspect ingredients and preparation steps, save favorites and organize cookbooks. The web application also supports recipe authoring, media management and administrative review.
The web app is available at culina.qb8s.net.
Structure that supports discovery
Ingredients have their own records, categories, nutrition information and allergen relationships. Recipes connect them through quantities, units and ingredient groups, alongside ordered preparation steps. This gives an ingredient a useful identity beyond a line of recipe text: users can explore it and discover recipes that use it.
Recipe submissions have an explicit review workflow. Administrators can approve or reject them with review notes, connecting creation to a deliberate publication decision.
One backend, platform-specific clients
A React and TypeScript web application and a native SwiftUI iOS client share an ASP.NET Core API. The iOS experience covers recipes, cookbooks, ingredients, allergens and account settings through observable view models and service interfaces. English and German localization, personal settings and theme support are part of the product.
The web client uses MUI, TanStack Router and TanStack Query, with React Hook Form and Zod for forms. An OpenAPI-generated TypeScript client keeps API integration aligned with the backend contract.
Backend and persistence
The .NET 10 backend follows Clean Architecture with Domain, Application, Infrastructure and Web API projects. Controllers delegate to MediatR command and query handlers. FluentValidation checks input, AutoMapper supports representation mapping, and Entity Framework Core persists the relational model in PostgreSQL.
Media storage sits behind interfaces with local filesystem and Azure Blob Storage providers. Microsoft identity integration and JWT bearer authentication connect identity to API access.
Delivery and operations
Azure DevOps Pipelines build and validate the application. Deployment configuration lives separately from application code, using Docker, Kubernetes/k3s, Helm and Argo CD. Development, testing, staging and production have explicit environment configuration; non-production supports automatic synchronization, while production uses manual synchronization.
OpenTelemetry, Serilog and Seq provide application diagnostics, with Grafana, Prometheus, Loki and Tempo supporting logs, metrics and traces. Browser correlation identifiers connect client failures to backend diagnostics. Backend tests, frontend tests, Storybook and iOS tests support changes across the product.
Current scope and direction
The implemented product centers on recipes, ingredients and cookbooks. Meal planning, pantry management, shopping lists and dietary recommendations are roadmap directions. The structured food model provides a foundation for them without presenting those future capabilities as already available.
