openvibers/openvibe.food STATUS.json
STATUS.json
| 1 | { |
| 2 | "repository": "OpenVibers/OpenVibe.Food", |
| 3 | "stage": "product", |
| 4 | "code": true, |
| 5 | "wave": "W20", |
| 6 | "plan": "The food tools move here from OpenVibe.Tools (apps/maps grocery source, the food proxy app), ported as clean modules without the Walmart page scraping. The manifests' other pillars — delivery comparison and meal kits, cupboard recipes with the network's AI — are still to come.", |
| 7 | "runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9", |
| 8 | "port": "4970", |
| 9 | "domain": "openvibe.food", |
| 10 | "contracts": "openvibe-contracts v0.419.0", |
| 11 | "sdk": "openvibe-sdk v0.161.0", |
| 12 | "shared": "openvibe-shared v4.241.0", |
| 13 | "packages": [ |
| 14 | "openvibe-contracts v0.419.0", |
| 15 | "openvibe-sdk v0.161.0", |
| 16 | "openvibe-shared v4.241.0" |
| 17 | ], |
| 18 | "summary": "OpenVibe.Food — What should we eat? Food near you (food banks, pantries and budget grocery stores from OpenStreetMap, paced and cached to stay inside the OSM usage policies), a deterministic meal planner with a shopping list and an estimated cost, a 42-item food database with nutrition per serving and per 100 g, and a pantry with a plain 'what can I make' against ten basic recipes. Server-rendered pages, an API at /api/v1, per-caller limits on the place search, and a test suite that never calls the internet.", |
| 19 | "works": [ |
| 20 | "Food near you: /near and GET /api/v1/places — a place name (Nominatim) or coordinates, food banks, soup kitchens, community fridges, free pantry boxes and budget grocery stores from Overpass, with distance, address, opening hours and operator", |
| 21 | "The OpenStreetMap attribution and the ODbL link on every result page and in every place answer, as ODbL requires", |
| 22 | "Inside the Nominatim and Overpass usage policies: the User-Agent identifies us, at most one request a second per host through an in-process queue, every answer cached in food_geo_cache for 7 days, only small around: radius queries, never a bulk download", |
| 23 | "Meal planner: /plan and POST /api/v1/plans — one person, a couple or a group for 1–14 days, all six MyPlate groups, a shopping list, the cheapest store per line and an estimated cost; deterministic, with a budget as a hard cap", |
| 24 | "Signed-in people save plans (food_plans) and keep a pantry (food_pantry)", |
| 25 | "The food list at /foods and /foods/:slug (and GET /api/v1/foods[/:slug]): nutrition per serving and per 100 g, the typical price band and the chain-by-chain comparison, server-rendered", |
| 26 | "Pantry matching: GET/PUT /api/v1/pantry and /pantry — a deterministic 'what can I make' against ten basic recipes, clearly labelled basic suggestions, no AI call", |
| 27 | "Discovery: the sitemap carries every food page, /near, /plan and /foods; llms.txt and llms-full.txt list the same set; a pantry and a saved plan are never crawled", |
| 28 | "Capabilities (food.place.read, food.food.read, food.plan.read|write, food.pantry.read|write) and per-caller limits, with the tightest budget on the place search because it spends OpenStreetMap's shared request budget", |
| 29 | "Tests with a stand-in Nominatim and Overpass: results and attribution, the one-request-a-second queue, cache hits, escaping of an OSM name, the search's per-caller limit, the plan's arithmetic, the pantry match, signed-in saves and anonymous refusals", |
| 30 | "Sign-in with OpenVibe.Network (PKCE S256, httpOnly session cookies), the OpenVibe Frame, PostgreSQL migrations applied at boot, deploy files", |
| 31 | "Account export and deletion (ADR-033): the plans and the pantry a person saved are exported to OpenVibe.Network on network.account.export_requested and deleted whole on network.account.deleted, with the counts confirmed back; the two Events topics are subscribed at boot (server/identity/account-data.js)" |
| 32 | ], |
| 33 | "notYet": [ |
| 34 | "Delivery-price comparison across delivery apps, and meal kits and boxes (the manifests' other pillars)", |
| 35 | "Recipes from the cupboard with the network's AI: this version is deterministic matching against ten recipes written by hand", |
| 36 | "A 'food near me' from the browser's location (only a place name or explicit coordinates today)", |
| 37 | "Fresh/live grocery prices: the price bands are typical 2025 US prices carried over from OpenVibe.Tools, not a live price", |
| 38 | "Its service and capability manifests in openvibe-contracts (contracts-service is food), and a deployment" |
| 39 | ], |
| 40 | "capabilitiesRegistered": false, |
| 41 | "serviceManifestRegistered": true, |
| 42 | "deployed": true, |
| 43 | "placeholderInSites": false, |
| 44 | "features": [ |
| 45 | "food near you (OpenStreetMap: food banks, pantries, budget grocery stores)", |
| 46 | "meal planner with a shopping list and estimated cost", |
| 47 | "food database with nutrition per serving and per 100 g", |
| 48 | "pantry and 'what can I make'", |
| 49 | "signed-in saving of plans and pantries", |
| 50 | "public API with per-caller limits", |
| 51 | "server-rendered pages and crawl artifacts", |
| 52 | "Network sign-in", |
| 53 | "deploy files" |
| 54 | ], |
| 55 | "deployment": "openvibe-ovh: unit openvibe-food.service on 127.0.0.1:4970 (git checkout /opt/openvibe.food, env /etc/openvibe/food.env, database ov_food), deployed with `sudo ovhost deploy food`; public at https://openvibe.food since 2026-10-08.", |
| 56 | "updated": "2026-11-13" |
| 57 | } |
| 58 |