← WIKI INDEX

FLUX DOCUMENTATION SYSTEM Layer 11 — STARTER KIT | starter-kit-modifications flux.dantesisofo.com/wiki/starter-kit-modifications/

STARTER KIT — COMMON MODIFICATIONS

Each recipe: WHAT → WHERE → VERIFY. After any change that affects public surfaces, re-run deploy_surfaces + invalidate, or re-publish an affected project. Respect the invariants in DEPLOYMENT §5.


1. NAME A NEW CITY / BRAND

WHAT: set the brand + hub tag. WHERE: .envCOLLECTION, FLUX_AUTHOR, FLUX_BASE_URL; titles already derive from canonical(). VERIFY: new projects get collections=[COLLECTION] and appear on the hub.

2. RETARGET COVERAGE

WHAT: change the "N / TARGET corridors" goal. WHERE: .env CORRIDOR_TARGET. VERIFY: hub + embed coverage % = round(100*n/TARGET); rebuild surfaces.

3. RECOLOR ROUTES

WHAT: change the route accent. WHERE: .env ROUTE_COLOR (used by project page + hub + embed map line). Keep hover a darker shade. VERIFY: map polylines use the new hex; coverage bar/accent still consistent.

4. CHANGE MAP TILES

WHAT: different basemap. WHERE: .env TILE_URL (Leaflet template). VERIFY: tiles load on project page, hub, embed; attribution updated.

5. SWITCH DISPLAY UNITS (MILES ↔ KM)

WHAT: public distance unit. WHERE: the single distance formatter used by all builders. INVARIANT: storage stays distance_km; convert only at render. VERIFY: hub == embed == project page show the same converted value.

6. ADD A HUB STAT

WHAT: new aggregate (e.g. "cameras used"). WHERE: ensure the field exists per WalkRecord (add in publisher §5 from submission.stats), then add a .stat cell in build_hub (and embed if desired). VERIFY: value equals the catalog aggregate.

7. ADD A FIELD TO THE ROUTE POPUP

WHAT: show e.g. camera/lens in the map popup. WHERE: add the field to the map_walks objects in build_hub/build_embed, then into the popup HTML. VERIFY: clicking a route shows the new field; OPEN PROJECT still target="_top", monochrome.

8. HIDE A PROJECT FROM A LISTING (NO DELETION)

WHAT: keep a project live by URL but off a browse listing. WHERE: filter by collections in the relevant builder (e.g. build_catalog_index excludes COLLECTION; to hide one project from the hub, remove its tag or add an allowlist). INVARIANT: never delete data; this is a listing filter only. VERIFY: project URL still 200; it's absent from the chosen listing.

9. NORMALIZE TITLES / CASING

WHAT: enforce STREET_NAME_IN_FLUX everywhere. WHERE: canonical() is the authority; for already-published projects, patch catalog.title + the project page title slots + regenerate surfaces. INVARIANT: changing a title is safe; changing a slug changes the URL → needs a redirect (see #12). VERIFY: hub, project page, and embed all show the canonical title.

10. CHANGE DERIVATIVE SIZE / CONTACT SHEET

WHAT: larger web images or denser contact sheet. WHERE: Worker stage 4 (derivative long-edge/quality) and stage 9 (grid columns). VERIFY: re-generate a draft; large/ images at new size; contact sheet renders.

11. SWAP THE GEOCODER

WHAT: different reverse-geocoding provider. WHERE: Worker stage 5 — keep the contract: (lat,lon) -> address|None, rate-limited, grid-cached, never fatal. VERIFY: addresses resolve; failures degrade to raw coords, not crashes.

12. RENAME A SLUG (URL CHANGE) — CAREFUL

WHAT: change a live project's URL. WHERE: server-side copy s3 <old>/* → <new>/*; update catalog (slug,public_url,cover_image); tombstone old slug; write a redirect stub at the old index.html (CloudFront+OAC does not honor S3 website redirects). VERIFY: old URL redirects, new URL 200, hub points to new.

13. ADD AN OG/SOCIAL IMAGE TO PROJECT PAGES

WHAT: rich link previews. WHERE: build_project_page head — add og:image = FLUX_BASE_URL/<cover_image>. VERIFY: meta tag present; image 200.

14. ADD A NAV ITEM ACROSS ALL PAGES

WHAT: a new top-nav link. WHERE: the nav source/template used by every builder. GOTCHA: if any pages are static and deployed via s3 sync, patch the local source, not just live S3 — a later sync overwrites live with stale local. VERIFY: the item appears on every page type after rebuild + deploy.

15. STORE AI-TRAINING LINEAGE (FUTURE)

WHAT: record ALL_PHOTOS (every imported frame), PUBLISHED_PHOTOS (kept), ZINE_PHOTOS (final selection) per project to learn editing behavior later. WHERE: write a lineage block into submission.json + a private (non-public) copy; populate from the edit actions; never expose publicly. VERIFY: lineage captured automatically on edit/publish; not in any public surface.


GENERAL RULE FOR ANY MODIFICATION

  1. Change the single source (config or the one builder/function).
  2. Respect invariants (OVERVIEW §5): canonical naming, hub+embed together, route-only hub, no-cache HTML, EXIF-stripped images.
  3. Rebuild + invalidate; verify the public surface.
  4. Never delete project data to change presentation.

FLUX_WIKI_v2.0 — flux.dantesisofo.com/wiki/starter-kit-modifications/