QuestKeeper Product Page + Documentation — Design
Summary
Add QuestKeeper — a Paper Minecraft plugin (source at C:\Users\Ben\Documents\GitHub\QuestKeeper) that generates a daily quest for a server via a Citizens NPC — as a new product on the site: a registry entry, a public landing page, and a full documentation set, following the existing pattern used by Ascendra and ConsentPVP (the closest analogs: Minecraft plugins with no hosted web app).
Source of truth
All content is derived from the plugin's own README.md and src/main/resources/plugin.yml (version 0.1.0-SNAPSHOT, requires Paper 1.21.4+, Citizens 2.x, Java 21; soft-depends on ConsentPvP). No functionality is invented beyond what those files describe.
1. Product registry entry
File: src/data/products.ts
{
slug: 'questkeeper',
name: 'QuestKeeper',
tagline: 'A new daily quest for your server, every day.',
description:
'A Paper Minecraft plugin that generates a new daily quest for your server every day, delivered through a Citizens NPC. Quests are automatically generated and validated across many types — delivering items, herding mobs, exploring biomes, discovering structures, fighting mobs, crafting, trading with villagers, and biome-specific gathering — with optional timed BossBar challenges. Players earn points and build streaks with no manual quest writing required.',
category: 'Minecraft Plugin',
status: 'in-development',
color: '#d97706',
features: [
'Automatic daily quests across 8 quest types',
'Delivered and turned in through a Citizens NPC',
'Points, streaks, and a spendable Quest Shop',
'Optional timed BossBar challenge quests',
],
docsUrl: '/docs/products/questkeeper',
showInNav: true,
},
No logoSrc (no logo asset yet) and no noindex (fully public per decision).
2. Landing page
Files: src/pages/products/questkeeper.tsx, src/pages/products/questkeeper.module.css
Follows the ConsentPVP/Ascendra landing-page pattern: getProduct('questkeeper') + STATUS_LABEL/STATUS_COLOR_VAR from the registry, shared Layout, Heading, Breadcrumbs, OffsetSplit, StaggeredGrid components from src/components/layout/.
- Hero: name, tagline, status badge, links to docs and the GitHub repo (
ModularSoftAU/QuestKeeper, per the README's clone URL). - Highlights grid (4 cards): Daily Quest Lifecycle (NPC-delivered, auto-resets), 8 Quest Types (modular registry, weighted selection), Points & Streaks, Quest Shop (teleport scrolls, streak shields, chat colors, completion effects).
- How it works steps: install jar → install Citizens → create quest NPC → set
quest-npc-id→ reload. - Closing link to full docs.
3. Documentation
Location: docs/products/questkeeper/ — flat files, Docusaurus autogenerated sidebar (no _category_.json needed, matching ConsentPVP).
Sidebar registration in sidebars.ts:
questkeeper: [
{type: 'autogenerated', dirName: 'products/questkeeper'},
],
Pages (9, sidebar_position in this order):
index.md— Overview: what QuestKeeper is, why it exists, feature summary table (mirrors README's quest-type table), requirements table (Paper 1.21.4+, Citizens 2.x, Java 21, optional ConsentPVP soft-dep), "Where to Next" links to the other 8 pages.installation.md— Drop-in jar install steps, Citizens dependency, NPC creation (/npc create QuestKeeper),quest-npc-idconfig step,/qk forcerefresh, building from source (mvn package).commands.md— Full/questkeeper(/qk) command table: player commands (show,points,points <player>) and admin commands (reroll,resetplayer,forcerefresh,stats,debug), plus/qshopand/tscrolland/dailytask top [page]fromplugin.yml.permissions.md—questkeeper.use,questkeeper.admin,questkeeper.scroll.use— node, default, description.configuration.md— Annotatedconfig.ymlreference (timezone, streak bonus settings — noted as currently inert per README, mob-search radius, broadcast toggle, quest-generator weights, timed-quest settings, exploration radii, escort flag).quest-types.md— All 8 active types + roadmapESCORTtype, with completion method (NPC turn-in vs. automatic), the item/mob/event pools, tier-based amount scaling table, repeat-prevention rule, and the roadmap frameworks (dynamic difficulty, escort) noted as architecture-only/not yet active.shop.md— Quest Shop (/qshop) and its items: Teleport Scrolls (/tscroll, ConsentPVP integration for consent-gated player teleports), Streak Shields, Timed Quest Extensions, Chat Color passes, Completion Effects.data-files.md—quest.yml,players.yml,stats.yml— what's stored in each, with the annotated YAML examples from the README.troubleshooting.md— Common issues: NPC not responding (checkquest-npc-id/ Citizens installed), quest not resetting (5-minute poll,/qk forcerefresh), points not changing (flat 1-point reward is current behavior, not a bug), ConsentPVP teleport blocks.
Each page uses the same frontmatter shape as ConsentPVP's (title, sidebar_label, sidebar_position, description) and an in-development admonition noting the plugin targets version 0.1.0-SNAPSHOT and behavior may change.
4. Footer link
File: docusaurus.config.ts — add {label: 'QuestKeeper', to: '/products/questkeeper'} to the 'Products' footer column.
Out of scope
- No logo/icon asset (none provided).
- No sitemap
noindexhandling needed (fully public). - No changes to
docusaurus.config.tsplugin instances — QuestKeeper uses the single unified docs preset, no OpenAPI or per-product plugin needed (it has no REST API). - Not modifying the QuestKeeper Java project itself — this is website-only work.