Static React + Vite reference hub for V Rising data, prefabs, systems, components, queries, and curated DB views.
The app is fully structured and static-first:
- React + Vite for the UI shell
- Tailwind CSS for styling
- generated JSON as the canonical content contract
- GitHub Pages deployment from
dist/
Hugo is no longer part of the shipping path.
Reference content is generated to:
public/data/reference/<section>/index.jsonpublic/data/reference/<section>/by-slug/<slug>.jsonpublic/data/reference/aliases.json
Supported reference sections:
prefabscomponentssystemsqueries
DB content is generated to:
public/data/db/<section>/index.jsonpublic/data/db/<section>/by-slug/<slug>.json
Current DB sections:
itemsrecipesnpcsabilitiesworkstationsblueprintsquestsbuffsitemsets
Search content is generated to:
public/data/search.index.json
The structured generators currently read from source material in:
content/prefabs/**/*.mdcontent/components/**/*.mdcontent/systems/**/*.md
These markdown files are treated as extraction input, not as the public rendering model.
content/dev, content/user, and content/editing remain out of the current app scope unless we explicitly revive authored guides later.
- Node.js 20+
npm installnpm run devnpm run generate:dataThis starts from a clean generated-output root so stale legacy files under public/ cannot leak into deploy artifacts.
npm run validate:datanpm run buildBuild output is written to dist/. The build also generates dist/404.html for SPA deep-link support on GitHub Pages.
npm run generate:referencebuilds the structured reference graphnpm run generate:dbbuilds DB section indexes and detail filesnpm run generate:searchbuilds the lightweight unified search indexnpm run generate:dataruns the full generation pipelinenpm run validate:dataperforms basic path/slug sanity checks on generated files
public/anddist/are generated outputs and should stay build-generated.src/config/sections.tsis the app-level section contract for reference and DB routing.scripts/check_shortcode_syntax.sh contentis still useful because the source corpus contains relref-style markdown that the extractors depend on parsing cleanly.
Use this quick pass before handoff or merge:
npx tsc --noEmit
bash scripts/check_shortcode_syntax.sh content
npm run buildThen preview the built app and spot-check these routes:
//prefabs/components/systems/queries/db/items/db/recipes/db/npcs/db/abilities/db/workstations/db/blueprints/db/quests/db/buffs/db/itemsets/search
Representative detail and legacy-alias checks:
/prefabs/item-consumable-healingpotion-t01/components/itemdata/systems/server--gamedatasystem/queries/server--gamedatasystem--query-1748745749-1/prefabs/Item_Consumable_HealingPotion_T01/components/ItemData/systems/server/GameDataSystem
Deploy artifact sanity:
dist/404.htmlexists and matches the SPA fallback strategydist/only contains the app shell, assets, and generated datapublic/only contains generated data plus.nojekyll- search results show both reference and DB entries without shipping full markdown bodies
On push to main, GitHub Actions:
- installs dependencies
- runs
npm run build - deploys
dist/to GitHub Pages
- Decide whether the new content belongs in
referenceordb. - Extend the relevant generator in
scripts/. - Add or update the section contract in
src/config/sections.ts. - Update the UI mapping layer if the new data benefits from schema-aware rendering.
- Re-run
npm run buildand spot-check routes and search results.