---
title: STARTER KIT — TEMPLATE KIT PLAN
slug: starter-kit-template-plan
layer: STARTER KIT
layer_order: 10
order: 110
description: What goes in the template — reusable code, excluded proprietary systems, sample data, .env.example, and required docs.
---

> **FLUX DOCUMENTATION SYSTEM**
> Layer 11 — STARTER KIT | starter-kit-template-plan
> flux.dantesisofo.com/wiki/starter-kit-template-plan/

# STARTER KIT — TEMPLATE KIT PLAN

The exact contents of the eventual student package. The kit is the **geotag walk →
static project page → master hub/map + private portal** slice — and nothing else.

---

## 1. REUSABLE CODE (INCLUDED)

The geotag publishing pipeline, which is well-factored and largely path-relative:

- **Worker / draft generation** — image discovery, EXIF/GPS, derivatives, reverse
  geocoding, stats, route, about text, contact sheet, `submission.json`.
- **Publisher** — project page builder, catalog index, master **hub** + **embed**
  builders, the **canonical-naming** authority, collection tagging, and the single
  **deploy helper** that keeps hub + embed in sync.
- **Imaging helpers** — derivatives, contact sheet, EXIF reader, geo/stats, geocoder.
- **Client-side zine** — the in-browser PDF generator + vendored map/QR/PDF libs.
- **Private portal** — the Flask app + the project-workflow blueprint + auth +
  templates (the studio UI).
- **Deploy** — the `s3 sync` + CloudFront-invalidation helper.
- **`requirements.txt`** — pinned.

---

## 2. EXCLUDED — PROPRIETARY FLUX SYSTEMS

These stay private; they are not needed to teach the geotag publisher and are
specific to the author's larger practice:

- The **chronological issue/zine archive** (the 16k-photo grid generator, issue
  builder, stream/queue/approve pipeline).
- **Dispatches** and the separate **/projects/** archive system.
- The **wiki engine** itself, the **intelligence / keeper / embeddings** layers,
  the **physical autonomous-print** layer, and **preservation** tooling.
- The public submission/intake flow (optional; can be added later).
- All FLUX branding/identity if students should brand their own city archive.

---

## 3. SAMPLE DATA (INCLUDED)

- A `sample_walk/` of **6–12 redistributable geotagged JPEGs** (CC0/public-domain),
  or a small script that synthesizes EXIF+GPS onto sample images.
- An **empty catalog seed**: `{ "schema_version": "...", "walks": [], "reserved_slugs": [] }`.
- An `examples/` folder with one **reference published project + hub** so students
  can see expected output before running their own.

---

## 4. .env.example (INCLUDED)

A committed template with **placeholders only** (the real `.env` is gitignored).
It documents: `FLUX_BUCKET`, `FLUX_CF_DIST`, `FLUX_REGION`, `FLUX_BASE_URL`,
`FLUX_AUTHOR`, the `PORTAL_*` local-auth vars, and the optional
`ANTHROPIC_API_KEY` + `MAIL_SMTP_*`. See [STUDENT SETUP](../starter-kit-setup/) for
the full block.

---

## 5. DOCS (INCLUDED)

| File | Purpose |
|---|---|
| `README.md` | What it is, architecture diagram, quickstart |
| `SETUP_AWS.md` | IAM least-privilege policy, S3 bucket, CloudFront + OAC |
| `RUN_LOCAL.md` | Python/venv, run the portal, the studio workflow |
| `PUBLISH_PROJECT.md` | create → upload → generate → publish; hub auto-update; iframe embed |
| `CONFIGURATION.md` | every env var; the canonical-naming rule; the collection/hub concept |
| `TROUBLESHOOTING.md` | credentials errors, slow vs stuck generation, CloudFront cache, restart-after-edit, single-portal rule |

(These wiki pages are the **source material**; the kit's standalone docs are
derived from them.)

---

## 6. CONFIG TO EXTERNALIZE (THE REAL WORK)

Sanitizing isn't deletion — it's **parameterization**. The build step replaces the
hardcoded bucket / distribution / domain / region / author / home-path values
(spread across the working code) with reads from one config module backed by
`.env`. This is the bulk of turning the working system into a template.

---

## 7. SUGGESTED KIT LAYOUT

```
cityflux-starter/
  README.md  SETUP_AWS.md  RUN_LOCAL.md  PUBLISH_PROJECT.md
  CONFIGURATION.md  TROUBLESHOOTING.md
  requirements.txt  .env.example  .gitignore
  flux/                # config + canonical naming + cli
  worker/              # draft generation pipeline
  publisher/           # project page + hub + embed + catalog + deploy
  portal/              # private Flask studio (app + blueprint + templates)
  zine/                # client-side PDF + vendored libs
  data/catalog.seed.json
  sample_walk/         # redistributable geotagged photos
  examples/            # one reference project + hub
```

---

Next: [ROADMAP](../starter-kit-roadmap/) for how this gets released.

---

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