Skip to content
octopusnzPublic

About

theflat.gen.nz website

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

601 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

theflat.gen.nz

Static site content for theflat.gen.nz, hosted on GitHub Pages.

Credits

Octopus favicons based on icons created by Freepik - Flaticon

Dungeons & Dragons was created by Gary Gygax and Dave Arneson and is published by Wizards of the Coast

D&D 5e data provided by the D&D 5e API (5e-bits/5e-srd-api), licensed under the MIT License.

This work includes material taken from the System Reference Document 5.1 ("SRD 5.1") by Wizards of the Coast LLC and available at D&D Beyond. The SRD 5.1 is licensed under the Creative Commons Attribution 4.0 International License.

Stars Without Number was created by Kevin Crawford and published by Sine Nomine Publishing. The swn/ compendium's markdown is based on files from Dark Star Adventures, modified for this campaign; campaign source notes live at github.com/octopusnz/swn.

Pages

  • index.html: site homepage
  • rpg.html: D&D 5e RPG Campaign Tracker
  • swn/index.html: Stars Without Number campaign compendium — dashboard plus rendered campaign/rules notes
  • 404.html: not-found page

Data

  • github-stats.json: auto-generated GitHub statistics (updated by GitHub Actions)
  • rpg-data.json: RPG campaign tracker state
  • darkstone.json: Darkstone campaign data (460 KB; rpg.html fetches it lazily on first visit to the Characters tab, not on page load)
  • inventory.json: campaign inventory data
  • urls.json: curated links data
  • data/: cached D&D 5e API data (ability scores, classes, conditions, equipment, monsters, spells, etc.)
  • swn/content/: campaign/compendium markdown synced from octopusnz/swn, plus meta.json. pages.json holds page metadata (frontmatter, folder, category, etc.) and a precomputed backlink index, but not body text — each page's body is a separate file under bodies/ (mirroring the vault's own folder structure, one .md per page) fetched only when that page is opened, so the ~380 KB of combined markdown isn't part of the app's boot payload. Images/ holds the synced images (each full-size image gets a .webp sibling that the page prefers via <picture>, and a square thumbnail under Images/thumb/). GM-only "Hooks & Secrets" and "GM Notes" sections are stripped during sync since this page is public. This is a manual sync (not part of the automated deploy workflow) — re-run scripts/fetch-swn-data.sh and commit the result to publish vault updates.

GitHub Actions Workflows

  • .github/workflows/static.yml: fetches D&D 5e API data, refreshes github-stats.json, then deploys the site to GitHub Pages — triggers on pushes to main, daily at 01:00 UTC, and manually via workflow_dispatch

Scripts

  • scripts/fetch-dnd-data.sh: fetch and cache D&D 5e API data locally
  • scripts/check-structure.sh: diagnostic script to validate rpg.html structure
  • scripts/fetch-swn-data.sh: clone the octopusnz/swn vault and rebuild swn/content/ (manual — see Data above)
  • scripts/build_swn_manifest.py: parses the vault's markdown/frontmatter into swn/content/pages.json (metadata + backlink index) and swn/content/bodies/ (one .md per page), called by fetch-swn-data.sh

Image generation tooling (drafting/requesting portrait images via the Grok Imagine API and landing them in the vault) lives in octopusnz/swn itself, not here — see that repo's scripts/ and README. This repo only picks up the result on the next fetch-swn-data.sh run.

Static Assets

  • site.webmanifest: installable PWA metadata
  • android-chrome-192x192.png / android-chrome-512x512.png: PWA icons
  • apple-touch-icon.png: iOS home screen icon
  • favicon-16x16.png / favicon-32x32.png / favicon-96x96.png / favicon.ico / favicon.svg: favicons
  • map.jpg / map.webp: campaign map image. rpg.html loads the WebP and falls back to the JPEG if the browser can't decode it, so both must stay in sync. Regenerate the WebP after changing the JPEG: python3 -c "from PIL import Image; Image.open('map.jpg').convert('RGB').save('map.webp', quality=85, method=6)"
  • robots.txt: crawler rules
  • sitemap.xml: sitemap for search engines
  • humans.txt: human-friendly site attribution/metadata
  • llms.txt: guidance for LLM tooling
  • .well-known/security.txt: security contact information
  • .nojekyll: disables Jekyll processing on GitHub Pages
  • CNAME: custom domain configuration

About

theflat.gen.nz website

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages