zen-food is an online food ordering app that lists multiple restaurants and multiple home kitchens in one marketplace, so customers can order food from either kind of kitchen. The product intent is a two-sided food marketplace: hungry customers browse many restaurants and home kitchens, and owner-operators make their kitchen and dishes available and credible in the same listing.
The audience is:
This document is the System Requirements Document for zen-food. It specifies the current product behavior, the closed persona set, the page contract, the functional requirements, the core user flows, and the visual and technical direction.
zen-food is delivered as a first-party web application with three provisioned services:
The app is application-owned: it holds durable state for orders and kitchen listings, and it establishes its own identity for customers and kitchen owners. Anonymous visitors can reach the public entry surface; protected work (browsing the listing, ordering, and kitchen management) requires an established identity.
Actors:
Current delivery covers: the public landing surface, the combined restaurant-and-home-kitchen listing, a chosen kitchen's dish view with order assembly, checkout and order placement, kitchen management for owners, and self-service sign-up and login.
Narrow exclusions: no delivery-tracking, no rider management, no loyalty program, no reviews, no multi-currency, and no third-party provider-owned surfaces are part of the current scope.
Removed from scope
zen-food is a first-party application. All accepted human-facing work — browsing, ordering, and kitchen management — is owned by zen-food's own pages and backed by the shared FastAPI backend and MariaDB database.
Access boundary: the Landing page is anonymously reachable and is the entry point before any identity is established. Login and Sign Up are also anonymously reachable and are the only surfaces that establish identity. The Restaurants, Restaurant Details, and Checkout pages are role-restricted to the Customer role; Kitchen Management is role-restricted to the Restaurant / Home Kitchen Owner role. A protected destination does not own the interaction that establishes access to itself: identity is established on Login or Sign Up, then the actor proceeds to the protected destination.
Current vs. future: everything specified in this document is current. No future-horizon requirements are accepted at this time.
Not applicable — no reference directive with content_source was supplied.
FR-1 — Online food ordering app (explicit) As a Customer, I should use zen-food as an online food ordering app so that I can order food online.
FR-2 — List multiple restaurants (explicit) As a Customer, I should see multiple restaurants listed so that I can choose among them.
FR-3 — List multiple home kitchens (explicit) As a Customer, I should see multiple home kitchens listed so that I can choose among them.
FR-4 — Order food from listed restaurants and home kitchens (explicit) As a Customer, I should order food from a listed restaurant or home kitchen so that I receive the food I chose.
FR-5 — Anonymous entry to Landing (required_inference) As an anonymous visitor, I should reach the Landing page before any identity establishment so that I can understand the app and begin.
FR-6 — Self-service enrollment via Sign Up (required_inference) As a Customer or Restaurant / Home Kitchen Owner, I should complete self-service enrollment via Sign Up so that I can begin using the app.
FR-7 — Returning verification via Login (required_inference) As a returning Customer or Restaurant / Home Kitchen Owner, I should verify my identity via Login so that I can resume my orders or listings.
FR-8 — Kitchen owner authorization for Kitchen Management (required_inference) As a Restaurant / Home Kitchen Owner, I should be authorized for Kitchen Management before managing listings so that only I can manage my kitchen.
Muse: Yves Béhar — humane technology, warm materials. Headline: "Real kitchens. Real food. Delivered."
Palette (light mode):
#F7F2E9 — ~60% of every screen.#FFFDF8 — cards and sheets, ~25%.#2A2723.#3F5D4E — buttons, navigation, active states, wordmark.#C4562B — price, "Add", order-status pulses, home-kitchen badge.#8C8375 — metadata.Sage and terracotta never appear as large flat fields together; one dominates per section.
Typography:
clamp(48px, 8vw, 112px); section heads clamp(32px, 4.5vw, 56px); card titles 20–24px; body 16px/1.6; labels 14px medium with 0.04em tracking.Shape language: Soft continuous curves — 24px radii on cards, 32px on hero panels, fully pill buttons and filter chips. One organic asymmetric arc per page as a section divider. No hard 90° corners except hairline table rules inside menus. Shadows soft, warm-tinted, low: 0 8px 24px rgba(42,39,35,0.06).
Layout: Single 12-column grid with wide outer margins (24px mobile / 48px tablet / 96px desktop). Landing: full-bleed warm hero with offset product panel, horizontally scrollable "Kitchens near you" rail, two-column split pairing a kitchen portrait with its menu excerpt. Restaurants: filter rail (sticky left on desktop; pill row on mobile) beside a 3-up card grid dropping to 1 column at 375px. Restaurant Details: sticky order-summary sheet on desktop, bottom bar on mobile. Kitchen Management: calm two-pane editor with aligned label/value rows.
Imagery: Natural-light food photography on warm linen and unglazed ceramic, top-down and 3/4 angles, real hands and kitchen surfaces, no stock-model smiles. Home-kitchen cards get a small circular portrait of the cook's hands or kitchen window. Supporting texture: oat paper grain, terracotta glaze close-ups, sage linen. Icons are soft-cornered 1.5px line pictograms.
Avoid: Blue/indigo primary buttons on white; identical hover-lift grids without origin distinction; gradient-blob or glassmorphism heroes; neon or candy-bright accents; stock photography of smiling models; bouncy or confetti motion; hard 90° corners; dense dashboard chrome on Kitchen Management.
The public entry (Landing) is an asymmetric split on a full-bleed oat ground:
clamp(48px, 8vw, 112px) — "Real kitchens. Real food. Delivered." — broken into three stacked lines with the terracotta accent on "Real food.", a one-line Work Sans subhead, and a pill search field with a sage CTA pinned beneath it.No centred stack, no gradient blob, no blue button.
Interaction Model: Animated Motion Tempo: restrained Hero Dimensionality: layered_2d
cubic-bezier(0.22,1,0.36,1)); one purposeful loop — a gentle parallax drift of the food photograph against the type as you scroll. Card hovers lift 2px and warm the shadow. Add-to-order gives a soft 180ms scale pulse on the cart pill. No bounce, no confetti, no auto-carousels beyond the slow kitchen rail.font-size: clamp(...)) to fit; no other element covers any part of them. Imagery, decoration, and motion may be cropped, bled, rotated, overlapped, or cut as the direction asks, as long as they cover no readable text or control.prefers-reduced-motion, provide a usable static arrangement (wrap into rows or allow horizontal scrolling).
zen-food
One marketplace for the restaurants you love and the home kitchens run by people nearby.
Samosas from a home kitchen, served on linen.
Paneer butter masala with laccha paratha
Ghar-style dal chawal with ghee
Malabar fish thali
Methi thepla with homemade pickle
Charcoal chicken tikka

zen-food
One marketplace for the restaurants you love and the home kitchens run by people nearby.
Samosas from a home kitchen, served on linen.
Paneer butter masala with laccha paratha
Ghar-style dal chawal with ghee
Malabar fish thali
Methi thepla with homemade pickle
Charcoal chicken tikka
No comments yet. Be the first!