{ "repository": "OpenVibers/OpenVibe.Rent", "stage": "product", "code": true, "wave": "W20", "plan": "v1: listings posted by people — post, search, report, staff review, saved searches. No scraped or partner sources, no payments, no messaging until their terms are verified and agreed.", "runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9", "port": "5010", "domain": "openvibe.rent", "contracts": "openvibe-contracts v0.419.0", "sdk": "openvibe-sdk v0.161.0", "shared": "openvibe-shared v4.237.0", "packages": [ "openvibe-contracts v0.419.0", "openvibe-sdk v0.161.0", "openvibe-shared v4.237.0", "openvibe-publishing v1.7.0" ], "summary": "OpenVibe.Rent — Find a place, or rent yours out. One place to find and offer things to rent: apartments, rooms, houses, commercial space, parking and storage, and equipment. In this first version every listing is posted by a person on this site: no scraped listings and no partner feeds, no payments, no deposits and no messaging. Search with filters and facets, a listing page with a plain safety note, reports that hide a listing at 3 until staff look, saved searches that count what is new, a 30-day expiry an owner can renew, and a FHFA House Price Index card on the affordable-housing page.", "works": [ "Posting: a signed-in person only (an app, agent or service token is refused), at most 10 active listings and 5 new ones a day, 30 days until expiry", "The field rules: kind, title ≤120, description ≤4000, price with an ISO 4217 currency from a short list, period, city, ISO 3166-1 alpha-2 country, optional region/neighbourhood/bedrooms/available-from, https or mailto contact link", "A house number with a street is refused in the title, description, city, region and neighbourhood, in the form and the API alike, with a message saying what to write instead", "Search: /listings and GET /api/v1/listings with q, kind, city, country, min, max and period, newest first, 30 a page with a cursor, facets for kind and country", "A listing page with the safety note word for word, contact link for signed-in viewers only, and JSON-LD as an Offer only where the schema.org type is clear", "Reports: one per person per listing, 3 distinct reports hide it from search until staff restore or remove it; a listing staff restored is not hidden again by the same reports", "Staff judged by the Network role claim (admin, global_mod), as at OpenVibe.Help; the queue at /staff and GET /api/v1/staff/reports", "The owner can edit, renew, hide, show and delete their own listing; nobody else can", "Expiry: a timer (server/listings/expiry.js, started by the process entry) marks the 30-day ones expired; an expired listing leaves search and can be renewed", "Saved searches (signed in): save the current filters, see what is new since you last looked; alerts by notification come later through OpenVibe.Watch", "Pages: /, /listings, /listings/:id, /listings/:id/edit, /post, /mine, /saved, /safety, /staff, /updates — server-rendered, complete without JavaScript, forms are plain POSTs", "Same-origin writes for the session cookie, and per-caller budgets shared by the form and the API route", "Discovery: robots.txt (disallows /auth/, /api/, /post, /mine, /saved, /staff), sitemap.xml with every active listing (≤1000), llms.txt, llms-full.txt", "Tests: posting rules, search and paging and facets, contact hidden from signed-out viewers, report → hide at 3 → staff restore, expiry, owner-only edits, same-origin writes, saved searches, hostile text escaped", "Account export and deletion (ADR-033): the listings a person posted, the reports they filed and the searches they saved are exported to OpenVibe.Network on network.account.export_requested and deleted whole on network.account.deleted (a report others left on a deleted listing cascades away with it), with the counts confirmed back; the two Events topics are subscribed at boot (server/identity/account-data.js)", "Housing price context: a card on /housing shows the FHFA House Price Index year and five-year change for the matching MSA or state, as a repeat-sales index (not a price), with the source linked back" ], "notYet": [ "Listing sources beyond people posting here: scraped and partner feeds arrive only when their terms are verified, and then each listing will carry its provenance (source name, link back, fetched_at)", "Alerts that come to you from a saved search (a notification, an email) — they come later through OpenVibe.Watch", "Payments, deposits and messaging: not in this version, and not part of the plan until the safety and legal side is settled", "Its service and capability manifests in openvibe-contracts (contracts-service is rent) and registration with OpenVibe.Services", "A deployment: the service is not yet deployed by OpenVibe.Host" ], "capabilitiesRegistered": false, "serviceManifestRegistered": true, "deployed": true, "placeholderInSites": false, "features": [ "listing posting with rules", "Rent by city: 885 US city pages with typical rents by size (Census ACS 5-year) and every rental site's search; state pages; /fair checks a quoted rent; listings show where their rent sits", "search with facets and paging", "listing pages with a safety note", "reports and a staff queue", "saved searches", "expiry and renewal", "server-rendered pages", "api mount", "limits and readiness", "deploy files", "home-price context (FHFA)" ], "deployment": "openvibe-ovh: unit openvibe-rent.service on 127.0.0.1:5010 (git checkout /opt/openvibe.rent, env /etc/openvibe/rent.env, database ov_rent), deployed with `sudo ovhost deploy rent`; public at https://openvibe.rent since 2026-10-08.", "updated": "2026-11-13" }