{ "repository": "OpenVibers/OpenVibe.Quest", "stage": "alpha", "code": true, "wave": "W20", "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", "runtime": "node 22, express 4, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9", "port": "4980", "domain": "openvibe.quest", "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.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.", "works": [ "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", "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", "Subscriptions created at boot for the catalog's events (idempotent, off without QUEST_EVENTS_URL / QUEST_EVENTS_SECRET)", "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", "Progress per step, one completion per person per quest and one badge per person, all once-only under a redelivery", "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", "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", "GET /api/v1/quests, /quests/:id, /me/quests (a signed-in person's own log), /profiles/:subject/badges (id, name and date only)", "Pages: home (the quests grouped by site, how progress works), a quest, your quest log (plain bars), the rules, the update log; robots, sitemap with every quest page, llms.txt, llms-full.txt", "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", "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)", "App quests (contracts 0.193.0, capability quest.app_quest.manage): a developer app defines quests on its own project's app..* 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\"" ], "notYet": [ "Community-made quests (streamers, communities, mods): they need moderation, which this release does not have", "Repeatable quests and seasonal resets: every quest completes once per person", "Quest chains, leaderboards and per-community quests; a streamer's getting-started steps still live on OpenVibe.Live" ], "capabilitiesRegistered": true, "serviceManifestRegistered": true, "deployed": true, "placeholderInSites": false, "features": [ "quest catalog", "OpenVibe.Events consumer", "OpenCoins through Network's wallet", "public API", "server-rendered pages", "crawl artifacts" ], "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.", "updated": "2026-11-13" }