Command center dashboard for shadowedvaca.com — a living portfolio and launchpad for games, podcasts, tools, and consulting work.
Data-driven static site: JSON data files → Python build script → static HTML/CSS/JS → served by Nginx.
data/ ← JSON source of truth (projects, announcements, profile, links)
packages/
core/ ← sv-core: Pydantic schemas + data access (reusable library)
site/ ← Command center renderer: Jinja2 templates + build script
dist/ ← Build output (served by Nginx, not committed to git)
Requires Python 3.11+.
pip install -r requirements.txt
# or, to install as an editable package:
pip install -e .python -m packages.site.buildOutput goes to dist/. Open dist/index.html in a browser to preview.
python scripts/validate_data.pyLoads all JSON data files through their Pydantic schemas and prints a summary.
All content lives in data/:
| File | Contents |
|---|---|
data/projects.json |
All projects (game, podcast, wow, tool, utilities, creative) |
data/announcements.json |
Ticker announcements |
data/profile.json |
Personal/professional profile |
Edit these files to update site content, then rebuild.
Site is hosted on Hetzner Cloud (CPX11, 5.78.114.224), served by Nginx from dist/.
bash deploy.sh| Package | Purpose |
|---|---|
packages/core/ |
Shared Pydantic schemas + data access layer |
packages/site/ |
Command center: Jinja2 templates + build script |
packages/book-club/ |
Book club web app (React + Express + PostgreSQL) |
Lightweight server health monitoring lives in monitoring/. Python scripts run via systemd timers, results stored in SQLite.
python monitoring/run_health_check.py --dry-runSee monitoring/README.md for setup and docs/MONITORING-PLAN.md for implementation status.
Existing press kit and support pages live at the repo root and are copied into dist/ during build — do not modify their content or paths.
meandering-muck.html— Press kitmeandering-muck-support.html— Support formmeandering-muck-privacy.html— Privacy policy
© 2026 Shadowedvaca LLC