Culinary Intelligence and Smart Home domain. Named after the Greek goddess of the hearth and home.
Hestia is the Oshun culinary intelligence platform. Where most recipe apps are essentially databases with search, Hestia is a full culinary operating system — connecting ingredient chemistry, nutritional science, kitchen IoT devices, and social cooking into a single coherent experience centered on the home kitchen. The domain takes its name from Hestia, the Greek goddess of the hearth, because the hearth — the fire at the center of domestic life — was historically the literal and symbolic heart of the household. In the same spirit, this domain treats cooking not as a chore to be optimized but as a practice that carries cultural memory, health consequences, and daily human meaning.
The platform is used directly by home cooks through web and mobile clients, and
by other Oshun domains that need culinary data — @arete for nutrition goals,
@demeter for seasonal ingredients, and @sophia for culinary knowledge. The
14 libraries in libs/hestia/ implement the domain logic, and three
applications in apps/hestia/ expose that logic to users: a Fastify REST +
GraphQL API, a Next.js web client, and an Expo / React Native mobile
client.
1. Domain Summary#
Hestia is a culinary intelligence domain comprising 14 libraries and 3
applications. The 14 sibling libraries under libs/hestia/ carry the domain
logic — spanning ingredient chemistry and nutritional science through smart
kitchen device orchestration and social cooking experiences. Three applications
under apps/hestia/ expose that logic: a Fastify REST + GraphQL API
(apps/hestia/api), a Next.js web client (apps/hestia/web), and an Expo /
React Native mobile client (apps/hestia/mobile). Other monorepo consumers
may also import the library packages directly.
2. Component Topology#
The diagram below shows how the 14 libraries are organized into layers. Reading
from the bottom up: @hestia/core is the foundation; the science layer sits
above it; the cooking workflow layer above that; then planning; and finally the
culture, intelligence, and social capabilities at the top. Arrows show
dependency direction — each library depends on @hestia/core and on nothing
else within the feature layer.
@hestia/ai-ml
(recipe gen, flavor AI,
image recog, NLP, predict)
|
+-------+-------+-------+-------+
| | | | |
social education professional heritage
(sharing, (techniques, (menu cost, (family,
cook-along, progression, HACCP, oral
challenges) food science) catering) history)
| | | |
+-------+-------+-------+-------+
|
+-------+-------+-------+
| | | |
meal- pantry sustainability
planning (inventory, (carbon,
(calendar, scanning, waste,
budget, expiration, ethical
batch) shopping) sourcing)
| | |
+-------+-------+-------+
| | |
recipes cooking smart-kitchen
(model, (guided, (devices,
parsing, timers, sensors,
scaling, voice, appliances,
search) doneness) automation)
| | |
+-------+-------+
|
+-------+-------+
| |
ingredients nutrition
(database, (analysis,
flavor bioavailability,
compounds, dietary,
pairing, allergen,
substitution, medical diet,
seasonality) goals)
|
@hestia/core
(schemas, DB, types,
events, auth)
3. Layer Architecture#
Hestia is organized into five conceptual layers. Libraries within a layer depend
only on @hestia/core — they do not depend on each other horizontally. This
means any pair of feature libraries can be used together without risking a
version conflict, and the consuming application controls exactly which
capabilities it assembles.
Layer 1 — Foundation#
@hestia/core (zero runtime dependencies)
Every other Hestia library is built on top of @hestia/core. It serves as the
single source of truth for the domain model — type definitions, database schema,
event system, and authorization rules all live here. Because it has zero runtime
dependencies, it can be imported into any Node.js, browser, or edge context
without risk.
- Pure TypeScript interfaces for the full domain model (no Zod runtime)
- Drizzle ORM database schema definitions for PostgreSQL
- Domain event type definitions
- Authentication utilities
Layer 2 — Science#
@hestia/ingredients and @hestia/nutrition
The science layer implements the deep domain knowledge that distinguishes Hestia from basic recipe apps. A typical recipe database knows that a dish "contains chicken," but Hestia knows the volatile compounds in every ingredient, how different cooking methods change nutrient bioavailability, and which hidden allergens are concealed under opaque ingredient names. This layer is the foundation for all the intelligent features above it.
-
Ingredients: Master ingredient database with flavor compound analysis. Flavor pairing uses volatile compound overlap analysis across hundreds of flavor families (fruity, floral, earthy, umami, Maillard, sulfurous). Substitutions account for flavor profile, texture, and dietary restrictions.
-
Nutrition: Bioavailability modeling goes beyond raw nutrient values to estimate actual absorption efficiency — accounting for nutrient interactions (vitamin C enhancing iron absorption, phytates inhibiting zinc uptake) and cooking method effects. Allergen detection operates at the molecular level including hidden allergens in processed ingredients.
Layer 3 — Cooking#
@hestia/recipes, @hestia/cooking, @hestia/smart-kitchen
The cooking layer handles the core kitchen workflow: knowing what to cook, doing
the cooking, and connecting the smart devices in the kitchen. These three
libraries work together at mealtime — @hestia/recipes supplies the plan,
@hestia/cooking guides the execution step by step, and @hestia/smart-kitchen
automates the hardware.
-
Recipes: The data model and all operations on it. Parsing extracts structured data from unstructured text, URLs, and images. Versioning provides Git-like branching and merging for collaborative recipe development.
-
Cooking: Step-by-step guided sessions with multi-recipe coordination, multiple concurrent timers with conflict detection, hands-free voice interface, USDA-referenced doneness guides, and complete session logging.
-
Smart kitchen: IoT device orchestration spanning smart ovens, sous vide, sensors, and smart appliances. The automation rules engine enables event- driven workflows; the orchestration layer coordinates multi-device scenarios.
Layer 4 — Planning#
@hestia/meal-planning, @hestia/pantry, @hestia/sustainability
The planning layer manages the household food lifecycle at the weekly and monthly scale — what to buy, what is already in the kitchen, and what the environmental impact of those choices is. These libraries work together: the pantry drives the shopping list, the shopping list feeds the meal plan, and sustainability scores are applied across all three.
-
Meal planning: Weekly and monthly calendar planning with household-member dietary profiles, budget tracking, batch cooking session planning, and event catering support.
-
Pantry: Full inventory lifecycle from barcode-scan entry through expiration alerting, FIFO rotation, and automatic shopping list generation with store-aisle organization.
-
Sustainability: Carbon footprint calculation, food waste tracking, ethical sourcing evaluation (fair trade, organic, animal welfare), and composting guidance.
Layer 5 — Culture and Intelligence#
@hestia/heritage, @hestia/education, @hestia/professional,
@hestia/social, @hestia/ai-ml
The culture and intelligence layer provides the platform's differentiating capabilities. These libraries sit at the top of the dependency graph — they are the most consumer-facing and draw on all lower layers — but they remain flat siblings that do not depend on each other.
-
Heritage: Digitizes family recipes, oral cooking histories, and regional cuisine traditions with community contribution workflows.
-
Education: Structured skill progression from beginner techniques through food science (Maillard reaction, emulsification, fermentation) to certification programs.
-
Professional: Commercial kitchen tooling — HACCP compliance, menu costing, kitchen workflow optimization, and catering event management.
-
Social: Community platform with cook-along events, family cookbooks, competitive challenges, and recipe sharing with attribution.
-
AI/ML: LLM-based recipe generation constrained by real domain data, ML-trained flavor pairing models, computer vision for food identification, collaborative and content-based filtering for recommendations.
4. Dependency Graph#
The flat-peer pattern is a deliberate architectural choice. By declaring
@hestia/core as a peerDependency rather than a direct dependency, every
feature library lets the consuming application control the exact version of core
in the runtime, preventing duplicate installations and version mismatches. The
consuming application assembles whichever libraries it needs; there is no
"kitchen sink" bundle.
@hestia/core (standalone, zero runtime deps)
|
+-- @hestia/ingredients (peer: core)
+-- @hestia/nutrition (peer: core)
+-- @hestia/recipes (peer: core)
+-- @hestia/cooking (peer: core)
+-- @hestia/smart-kitchen (peer: core)
+-- @hestia/meal-planning (peer: core)
+-- @hestia/pantry (peer: core)
+-- @hestia/sustainability (peer: core)
+-- @hestia/heritage (peer: core)
+-- @hestia/education (peer: core)
+-- @hestia/professional (peer: core)
+-- @hestia/social (peer: core)
+-- @hestia/ai-ml (peer: core)
All feature libraries are flat siblings. There are no inter-library dependencies within the feature layer; coupling is managed entirely at the application layer by whichever consumer assembles the libraries.
Applications#
Three applications sit above the library layer. The web and mobile clients consume the API over HTTP rather than importing feature libraries directly — this keeps the client bundles lean and centralizes authorization logic in the API where it can be enforced.
@hestia/api (Fastify REST + GraphQL Yoga; PostgreSQL/Drizzle + Redis)
depends on: @hestia/core, @oshun/errors, @oshun/logging
@hestia/web (Next.js App Router; TanStack Query + Zustand; port 3011)
depends on: @hestia/core
@hestia/mobile (Expo / React Native; React Navigation; TanStack Query + Zustand)
depends on: the @hestia/api HTTP surface
@hestia/api is tagged ["scope:hestia", "type:app", "layer:service"];
@hestia/web is tagged ["scope:hestia", "type:app", "platform:web"].
5. Design Patterns#
Pure TypeScript Schemas#
Unlike most Oshun domains that use Zod for validation, @hestia/core defines
domain types using pure TypeScript interfaces with validation functions.
This eliminates Zod's runtime overhead from the critical data path. The trade-
off is manual validation rather than schema-derived runtime validation.
Const Enum Objects#
All enumerable domains (measurement units, cooking methods, diet tags, etc.) are
defined as const objects with derived type unions. This pattern provides both
runtime value access (e.g., iterating over Object.values(CookingMethod) to
populate a UI dropdown) and compile-time exhaustiveness checking in switch
statements.
export const CookingMethod = {
BAKE: 'bake',
ROAST: 'roast',
// ...
} as const;
export type CookingMethod = (typeof CookingMethod)[keyof typeof CookingMethod];
Flat Peer Dependency Architecture#
Every feature library declares @hestia/core as a peer dependency rather than a
direct dependency. This allows the consuming application to control the exact
version of core and prevents version conflicts when multiple Hestia libraries
are used together.
6. Technology Stack#
The table below lists the technology choices for each component. The most
notable choice is the deliberate avoidance of Zod in @hestia/core — the domain
data path uses hand-written validation functions so that the library can be used
in edge or browser contexts where Zod's bundle size matters. Zod is still used
in the API layer for request validation, where it is only ever loaded on the
server.
| Component | Technology |
|---|---|
| Language | TypeScript (ESM modules) |
| Runtime | Node.js |
| Library build | Nx with @nx/js:tsc |
| Library testing | Vitest |
| Library validation | Pure TypeScript (no Zod runtime) in @hestia/core |
| ORM | Drizzle ORM |
| Database | PostgreSQL |
| API framework | Fastify (REST under /v1) + GraphQL Yoga |
| API validation | Zod (request bodies, environment configuration) |
| API store/cache | PostgreSQL via pg + Drizzle; Redis via ioredis |
| API auth | JWT (@fastify/jwt), bcryptjs password hashing, API keys |
| Web app | Next.js (App Router), React, TanStack Query, Zustand, Tailwind |
| Mobile app | Expo / React Native, React Navigation, TanStack Query, Zustand |
| Food safety | HACCP, USDA temperature guidelines |
| Nutrition data | USDA FoodData Central (FDC) |
7. Project Configuration#
All Hestia libraries share a consistent Nx project configuration. The key
settings are ESM module format (required for tree-shaking and compatibility with
modern bundlers), the tsc build executor (no bundler — each library ships
clean TypeScript output), and the scope:hestia tag that lets Nx target all
domain libraries at once.
- Project tags:
["scope:hestia", "layer:domain", "type:lib"] - Module format: ESM (
"type": "module"in allpackage.jsonfiles) - Build executor:
@nx/js:tsc - Test runner:
@nx/vite:testwith Vitest
Common Build Commands#
# Test a specific library
pnpm nx test @hestia/core
pnpm nx test @hestia/recipes
# Build all Hestia libraries
pnpm nx run-many --target=build --projects=tag:scope:hestia
# Run all domain tests
pnpm nx run-many --target=test --projects=tag:scope:hestia
# Lint a library
pnpm nx lint @hestia/ingredients
8. Related Domains#
Hestia's boundaries are drawn around the home kitchen and consumer culinary
experience. The boundaries with adjacent domains reflect real-world ownership
distinctions — Hestia does not manage commercial food-service operations
(Annapurna's territory), nor does it own the full creator economy or personal
health goal system (Yemaya and Arete respectively). Data flows across these
boundaries: Hestia can supply recipe, nutrition, and smart kitchen inputs to
Annapurna; @hestia/nutrition surfaces goals that @arete tracks; and
@hestia/education surfaces research content originally curated by @sophia.
| Domain | Boundary and data flow |
|---|---|
| Demeter | Shares seasonal ingredient concepts; preservation techniques overlap with @demeter/preservation |
| Sophia | Culinary research and knowledge base can surface through @hestia/education |
| Yemaya | Professional recipe development tools in @hestia/professional align with Yemaya creator tooling |
| Arete | Nutrition goals in @hestia/nutrition complement personal health goals in @arete/goals |
| Annapurna | Owns restaurant and commercial food-service operations; Hestia owns consumer/home culinary intelligence and may provide recipe, nutrition, and smart kitchen inputs to Annapurna |