jheff.media-site is a Rust fullstack project: Yew on the client, Actix Web on the server, MongoDB for persistence. The stated goal is a landing surface for automotive social channels (photography, video, and print-oriented workflows) without routing every visitor through third-party algorithms.
This post reads the repository through its Git history: long quiet periods, a 2024 boilerplate reset, and a concentrated 2026 sprint that brought the stack in line with current practice on heff.world.
Timeline in commits
GitHub shows 41 commits on main across three eras.
2020: placeholder origin
The earliest commit (2020-06-07) predates the current architecture. A short README polish followed, then the repo went idle. Nothing in today’s tree should be traced to that HTML-era experiment; it only marks that the hostname idea is older than the Rust implementation.
August 2024: Yew fullstack boilerplate
Activity resumed with a fork of a Yew + Actix template:
| Date | What changed |
|---|---|
| 2024-08-04 | Template import, boilerplate trim, merge from upstream |
| 2024-08-04 | JWT secret handling tightened; temp keys removed from tracking |
| 2024-08-05 | Cargo workspace and backend dependencies refreshed |
| 2024-08-06 | GitHub Actions rust.yml and config experiments |
The repo at this stage was a credible dev shell: Docker scripts, backend/frontend split, and JWT auth, but still generic README prose and little domain-specific content. The automotive social story lived in intent, not in routes.
June 2026: modernization sprint
Twenty-six commits on 2026-06-20 form the bulk of the project’s maturity. Rough layers, in dependency order:
Platform and tooling
- Actix 4 stack modernized; reverse proxy behavior fixed
- Yew 0.23 + Trunk frontend shell; Tailwind v4 pipeline and theme tokens
- Consolidated
scripts/dev.sh/scripts/prod.shorchestration; Docker and CI updates - Agent docs (
AGENTS.md,.agents/, Cursor rules) aligned with the rest of the heff.industries repos
Backend APIs
- Feed, content, social, and contact endpoints
- Account settings: roles, 2FA, auth middleware
- Admin content APIs; Mongo-backed galleries and shoots
- Unified media aggregation (Instagram, YouTube, on-site gallery)
- Auth hardening: explicit CORS allowlists, JWT expiry validation, safer logout
Frontend experience
- Layout rework: content nav, home hero, clickable logo
- Instagram-focused social hub; featured cards and YouTube sections
- Masonry media feed with print selection on cards
- Photo/video feeds with Immich proxy support
- Account page: password, 2FA, prints, admin content forms
- Auth UX: portal modals and profile menu
Product surface
- Content hub, galleries, shoots, booking, legal routes
- Documentation pass: architecture, API reference, dev deployment, version matrix
The README now describes a coherent system: local dev on :8080 (proxied app) and :8000 (Trunk), Mongo on :27017, and a doc index under docs/, rather than an unnamed boilerplate.
What “modern standards” means here
The June sprint did not chase novelty for its own sake. It closed gaps between how the repo was supposed to work and what production would require:
| Area | Before | After |
|---|---|---|
| Dependencies | Aging Actix / Yew pins | Actix 4.13, Yew 0.23, Tailwind 4.3 |
| Secrets | Risk of committed JWT material | Expanded .gitignore; secret generation in setup |
| Auth | Basic JWT | Session validation in MongoDB, 2FA hooks, CORS policy |
| Content | Static landing | Admin-managed galleries, shoots, feeds |
| Ops | Ad-hoc shell scripts | Named dev/prod scripts, Docker paths, CI for Trunk |
| Docs | Upstream boilerplate | First-party architecture, API, and deployment guides |
That pattern mirrors the engineering site: document the contract, test the trust boundary, keep secrets server-side. The Rust repo simply expresses it with Actix handlers instead of Astro API routes.
Relationship to heff.world
heff.world (this Astro site) remains the broad portfolio: services, blog, schedule, membership, and dev hub. jheff.media-site is the narrow lens on automotive media, social syndication, and print-adjacent workflows.
The two do not need to merge immediately. They should not diverge on basics: auth posture, env handling, deployment notes, and agent skills already rhyme across repos.
Ideas for the next iteration
Commit history suggests the foundation is in place; the remaining work is product and polish.
Product and content
- Featured pipeline: env-driven featured post and YouTube IDs exist in dev; production needs a single editorial source (Keystatic JSON, Mongo admin doc, or env on deploy).
- Booking to calendar: booking routes are live in code; tying confirmations to a shared calendar (ICS, Cal.com, or the schedule collection on heff.world) would close the loop for clients.
- Print fulfillment: print selection on feed cards implies checkout or quote flow; either integrate Stripe (patterns already exist on heff.world) or keep it inquiry-only with explicit copy.
Engineering
- Integration tests: API contract tests for feed and auth (similar to
apiRoutes.integration.test.tson the Astro site); WASM smoke via headless browser or Trunk’s test hooks. - Observability: structured tracing on Actix (request IDs, auth failures) before homelab or Proxmox deploy.
- Asset strategy: WASM bundle size and cache headers; image proxy limits for Immich to avoid open relays.
- Rate limiting: contact and auth endpoints, especially if exposed beyond LAN.
Platform
- Deploy target: document parallels with Proxmox homelab vs. a single Docker host; the repo’s
docs/deployment-dev.mdis the starting point. - Hostname strategy: serve
jheff.media(or subdomain) as the Rust app, link out to heff.world for consulting and blog, or reverse-proxy selected paths from one domain. - i18n: automotive audience may warrant French or Japanese UI strings; Yew + JSON catalogs would follow the six-locale discipline used here.
Housekeeping
- Retire legacy script names: wrappers still forward to
dev.sh; delete after one release cycle. - Version matrix automation:
docs/version-matrix.mdshould be generated or CI-checked againstCargo.lockandpackage.jsonpins.
Summary
jheff.media-site spent years as a name waiting for code, then months as a boilerplate, then one intensive day as a media platform skeleton. The commit log is the roadmap: 2024 proved the stack; 2026 proved the product surfaces.
Further improvement is less about picking frameworks and more about editorial workflow, tested APIs, and clear boundaries with the main heff.world property, so automotive social content stays fast and owned without forking operational standards twice.
