openvibers/openvibe.quest STATUS.json
STATUS.json
| 1 | { |
| 2 | "repository": "OpenVibers/OpenVibe.Quest", |
| 3 | "stage": "alpha", |
| 4 | "code": true, |
| 5 | "wave": "W20", |
| 6 | "plan": "OpenVibe.Quest — the network's shared quest and rewards system: one quest log across every OpenVibe site, rewards as badges and OpenCoins (loyalty, never money), community-made quests later", |
| 7 | "runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9", |
| 8 | "port": "4980", |
| 9 | "domain": "openvibe.quest", |
| 10 | "contracts": "openvibe-contracts v0.419.0", |
| 11 | "sdk": "openvibe-sdk v0.161.0", |
| 12 | "shared": "openvibe-shared v4.237.0", |
| 13 | "packages": [ |
| 14 | "openvibe-contracts v0.419.0", |
| 15 | "openvibe-sdk v0.161.0", |
| 16 | "openvibe-shared v4.237.0", |
| 17 | "openvibe-publishing v1.7.0" |
| 18 | ], |
| 19 | "summary": "OpenVibe.Quest: one quest log across every OpenVibe site. OpenVibe.Events delivers the domain events the sites already emit to POST /internal/events (signed v2, once-only through the openvibe-sdk inbox), the person taken from the field each event's own schema defines, and a progress count, a completion and a badge move because of it. 12 first-party quests in code, grouped by the site whose events each counts. Rewards are badges and OpenCoins — credited through OpenVibe.Network's wallet, off by default (QUEST_COINS), with per-person and network-wide daily caps, failures recorded and retried. Public API and server-rendered pages, complete without JavaScript. OpenCoins are off until Network grants the two capabilities.", |
| 20 | "works": [ |
| 21 | "The quest catalog in code (12 quests, 8 sites) and the whole list of events it listens to, with a load-time check that no quest counts an undocumented event", |
| 22 | "POST /internal/events exactly as OpenVibe.Space does it: raw body, parseDelivery requireV2, the openvibe-sdk inbox, forwarding headers refused, 503 without QUEST_EVENTS_SECRET", |
| 23 | "Subscriptions created at boot for the catalog's events (idempotent, off without QUEST_EVENTS_URL / QUEST_EVENTS_SECRET)", |
| 24 | "The person taken from the event's own schema field (channel.subject, follower, author, user_subject, player.subject, owner); an event with no usr_ subject, a guest or a service is ignored", |
| 25 | "Progress per step, one completion per person per quest and one badge per person, all once-only under a redelivery", |
| 26 | "OpenCoins through OpenVibe.Network's wallet (network.coins.credit, app_id quest), idempotency_key = the completion id, subject resolved to the wallet's user id through identity.resolve", |
| 27 | "QUEST_COINS off by default (coins_state=skipped, the pages say the rewards start soon); per-person (50) and network-wide (5000) daily caps; a failure recorded with its reason and retried by a timer", |
| 28 | "GET /api/v1/quests, /quests/:id, /me/quests (a signed-in person's own log), /profiles/:subject/badges (id, name and date only)", |
| 29 | "Pages: home (the quests grouped by site, how progress works), a quest, your quest log (plain <progress> bars), the rules, the update log; robots, sitemap with every quest page, llms.txt, llms-full.txt", |
| 30 | "Tests on temp PGlite databases with a mock Network that also serves the wallet: signature refusal, idempotent replay, counting to completion, badge once, coins off, coins on with caps and a retry, events with no subject ignored, /me requires sign-in, hostile titles escaped", |
| 31 | "Account export and deletion (ADR-033): the quest progress, completions and badges a person has are exported to OpenVibe.Network on network.account.export_requested and deleted whole on network.account.deleted, with the counts confirmed back; the two account topics join the catalog's events in the boot subscriptions (server/identity/account-data.js)", |
| 32 | "App quests (contracts 0.193.0, capability quest.app_quest.manage): a developer app defines quests on its own project's app.<project_key>.* events; only production counts, the reward is a badge named for the app, at most 20 active a project, listed on the home under \"Made by apps\"" |
| 33 | ], |
| 34 | "notYet": [ |
| 35 | "Community-made quests (streamers, communities, mods): they need moderation, which this release does not have", |
| 36 | "Repeatable quests and seasonal resets: every quest completes once per person", |
| 37 | "Quest chains, leaderboards and per-community quests; a streamer's getting-started steps still live on OpenVibe.Live" |
| 38 | ], |
| 39 | "capabilitiesRegistered": true, |
| 40 | "serviceManifestRegistered": true, |
| 41 | "deployed": true, |
| 42 | "placeholderInSites": false, |
| 43 | "features": [ |
| 44 | "quest catalog", |
| 45 | "OpenVibe.Events consumer", |
| 46 | "OpenCoins through Network's wallet", |
| 47 | "public API", |
| 48 | "server-rendered pages", |
| 49 | "crawl artifacts" |
| 50 | ], |
| 51 | "deployment": "openvibe-ovh: unit openvibe-quest.service on 127.0.0.1:4980 (git checkout /opt/openvibe.quest, env /etc/openvibe/quest.env, database ov_quest), deployed with `sudo ovhost deploy quest`; public at https://openvibe.quest since 2026-10-08.", |
| 52 | "updated": "2026-11-13" |
| 53 | } |
| 54 |