small-town-cult is a browser-based narrative management game set in a small town in the middle of nowhere America. The player is a stranded traveller whose car breaks down on the edge of town and who is rescued by girls in a horse and buggy. The town turns out to be mostly a cult; its very old leader hands the keys to his throne to the player, recognizing that the population needs fresh DNA. From that point the player inherits leadership of an isolated commune and must keep it alive and its many members happy.
The game follows the structure of narrative management games such as Secretary and Apocalyptic World: a persistent status rail carrying the game's state (day, meters, counters, action log) beside a narrative passage area where the player makes choices that change the world. All content is original to this project; the reference sites are used only as structural and feature-format inspiration and contribute no names, copy, facts, or capabilities.
The audience is adult narrative-fiction players who enjoy slow-burn, morally uneasy power fantasies: rural dread, claustrophobia, dark humour, and charismatic authority. The game is deliberately non-explicit: relationships between characters can produce offspring and grow the population, but no overt sexual acts are depicted and no pornographic media is used.
This document is the System Requirements Document requested by Brandon for the project small-town-cult.
small-town-cult is delivered as a web game with three provisioned services: a React frontend, a shared FastAPI backend that hosts all application APIs and domain modules, and a MariaDB database holding application-owned persistent data. The backend is the single process for game state, identity, and all domain logic; no separate services are introduced.
The game is played by the Cult Leader (Player), who holds application-owned identity and durable commune state. The Cult Member and Cult Defender are accepted active human personas whose work is represented inside the leader's management surfaces: members carry out delegated tasks, participate in rituals, form relationships, and raise children per the leader's instructions; defenders are trained and hold the encampment's readiness. Their responses are surfaced to the leader as observable outcomes (task completion, morale shifts, belief changes, relationship and offspring events, defense readiness) within the leader's pages.
Current behavior covers: the anonymous landing premise, self-service enrollment and returning verification, the day-by-day commune hub, personal daily action, task delegation across farming, machine maintenance, animal husbandry, cooking, cleaning, and hunting, morale and belief management, weekly rituals, childrearing instructions, defender training, and non-explicit relationships that produce offspring and grow the population.
The game is a first-party web application. The anonymous Landing page presents the premise and routes a visitor to Sign Up or Login. Identity is application-owned: a player enrolls once, and their commune save — day, meters, counters, relationships, children, defenders, and action log — is bound to that identity and resumed on return. Only the Landing, Sign Up, and Login surfaces are reachable without identity; every gameplay surface requires login.
All gameplay is rendered and controlled in the first-party React application, with the FastAPI backend as the authority for game state and MariaDB as the durable store. There are no provider-owned gameplay surfaces, no external destinations for play, and no headless delivery. The reference sites inform only the narrative-management format (persistent status rail, passage-and-choice reading, meters and counters, action log); they supply no product content.
The current delivery horizon covers the full accepted loop described above. Nothing beyond that loop — no additional modules, marketplaces, or account-management features — is part of this release.
FR-1 — Web narrative management game. As a Cult Leader (Player), I should play a web-based small-town cult-management simulation structured like narrative management games (persistent status rail beside a passage-and-choice area), so that I can manage the commune through readable narrative choices. Provenance: explicit. Lifecycle: trigger — player opens the game; result — the game renders with the status rail and passage area; failure — load error with retry; continuation — play proceeds.
FR-2 — Stranded-traveller opening. As a Cult Leader (Player), I should experience the opening where my car breaks down on the edge of town and I am rescued by girls in a horse and buggy, so that the premise establishes how I arrived. Provenance: explicit. Lifecycle: trigger — new save begins; result — opening passage presented; continuation — the town and cult are revealed.
FR-3 — Inheritance of leadership. As a Cult Leader (Player), I should have the very old cult leader hand me the keys to his throne, recognizing the population needs fresh DNA, so that I inherit leadership of the commune. Provenance: explicit. Lifecycle: trigger — opening continues; result — leadership transferred to the player; continuation — management surfaces become the player's responsibility.
FR-4 — Keep the commune alive and members happy. As a Cult Leader (Player), I should keep the isolated commune alive and its many members happy, so that the community survives and stays loyal. Provenance: explicit. Lifecycle: trigger — each day; result — morale, belief, population, and food reflect the player's management; failure — decline in morale or food with visible causes; recovery — corrective actions.
FR-5 — Daily action choice. As a Cult Leader (Player), I should choose what my character does each day to maintain the cult and keep members happy, so that each day has a committed decision. Provenance: explicit. Lifecycle: trigger — a new day; input — one daily action; result — the day advances with consequences; failure — commit error with retry; continuation — next day.
FR-6 — Personal participation in commune activities. As a Cult Leader (Player), I should be able to personally participate in farming, machine maintenance, animal husbandry, cooking, cleaning, and hunting, so that I can contribute labor when I choose. Provenance: explicit. Lifecycle: trigger — open Daily Action; input — select one of the six activities; result — personal action committed with cost and consequence; failure — commit error with retry; continuation — return to Commune.
FR-7 — Encouraged delegation. As a Cult Leader (Player), I should be encouraged to leave most of those tasks to other cult members rather than doing them myself, so that delegation is the natural path. Provenance: explicit. Lifecycle: trigger — viewing Daily Action or Tasks; result — delegation is presented as the encouraged option; continuation — assign tasks to members.
FR-8 — Weekly rituals. As a Cult Leader (Player), I should perform rituals each week to keep cult members happy and believing in my "chosen one" status, so that belief and happiness are maintained. Provenance: explicit. Lifecycle: trigger — weekly ritual due; input — perform the ritual; result — happiness and belief effects applied; failure — ritual error with retry; continuation — next week.
FR-9 — Childrearing instructions. As a Cult Leader (Player), I should give instructions to other cult members on how they should raise the children, so that upbringing follows my direction. Provenance: explicit. Lifecycle: trigger — open Childrearing; input — issue or change instructions; result — instructions recorded and acknowledged by members; failure — save error with retry; continuation — effects on morale and belief.
FR-10 — Defender training. As a Cult Leader (Player), I should train cult members to defend the encampment from strangers, so that the commune is protected. Provenance: explicit. Lifecycle: trigger — open Defense; input — train a defender; result — training recorded and readiness updated; failure — training error with retry; continuation — readiness tracked.
FR-11 — Morale and belief management. As a Cult Leader (Player), I should manage morale and belief in my authority as leader, so that the commune remains loyal. Provenance: explicit. Lifecycle: trigger — review Morale; result — current values and causes shown; continuation — corrective actions via Rituals or Tasks.
FR-12 — Non-explicit offspring relationships. As a Cult Leader (Player), I should see relationships between characters develop and produce offspring, presented without overt sexual acts, so that the population grows non-explicitly. Provenance: explicit. Lifecycle: trigger — open Relationships; input — encourage or develop a relationship; result — offspring recorded and population updated; failure — action error with retry; continuation — lineage grows.
FR-13 — Population growth. As a Cult Leader (Player), I should see the population grow, so that the commune's future is secured. Provenance: explicit. Lifecycle: trigger — offspring recorded; result — population counter increases; continuation — reflected in Commune rail.
FR-14 — Self-service enrollment. As a Cult Leader (Player), I should be able to enroll before starting a new commune save, so that my save is bound to my identity. Provenance: required_inference. Lifecycle: trigger — choose Sign Up from Landing; input — credentials; result — new save created and routed to Commune; failure — validation error with recovery; continuation — play begins.
FR-15 — Returning verification. As a Cult Leader (Player), I should verify my identity before resuming durable commune state, so that my save is restored correctly. Provenance: required_inference. Lifecycle: trigger — choose Login from Landing; input — credentials; result — save restored and routed to Commune; failure — invalid credentials with recovery; continuation — play resumes.
FR-16 — Cult Member carries out assignments. As a Cult Member, I should carry out the leader's daily assignments across farming, machine maintenance, animal husbandry, cooking, cleaning, and hunting, so that the commune keeps running. Provenance: required_inference. Lifecycle: trigger — leader assigns a task; result — assignment recorded and member response shown to the leader; failure — assignment error with retry; continuation — task outcome reflected in counters.
FR-17 — Cult Member participates in rituals. As a Cult Member, I should participate in weekly rituals, so that my happiness and belief in the leader's authority are maintained. Provenance: required_inference. Lifecycle: trigger — leader performs the weekly ritual; result — member happiness and belief effects applied and shown; continuation — next week.
FR-18 — Cult Member raises children per instructions. As a Cult Member, I should raise the commune's children according to the leader's instructions, so that upbringing follows the leader's direction. Provenance: required_inference. Lifecycle: trigger — leader issues childrearing instructions; result — member acknowledgement shown; continuation — effects on morale and belief.
FR-19 — Cult Defender defends the encampment. As a Cult Defender, I should be trained by the leader and defend the encampment from strangers, so that the community keeps operating safely. Provenance: required_inference. Lifecycle: trigger — leader trains a defender; result — readiness updated and shown; continuation — readiness tracked against strangers.
The Cult Leader is the player: a stranded traveller rescued on the edge of an isolated American town and handed leadership of its cult by its very old leader. Their product context is the day-by-day management of the commune through the persistent status rail and narrative passage area. Their primary goal is to keep the community alive, growing, and loyal. Their distinct accepted responsibilities are: choosing each day's action (personal labor or delegation), personally performing farming, machine maintenance, animal husbandry, cooking, cleaning, or hunting when they choose, delegating most tasks to members, performing weekly rituals to sustain happiness and belief in their "chosen one" status, issuing childrearing instructions, training defenders, managing morale and belief, and developing relationships that produce offspring non-explicitly. Their relevant inputs and decisions are which activity to commit each day, which tasks to delegate, when to perform the weekly ritual, what childrearing instructions to issue, whom to train, and which relationships to encourage. They interact with Cult Members (who carry out assignments, participate in rituals, raise children, and form relationships) and Cult Defenders (who are trained and hold readiness). Their observable success is a commune with stable or rising morale and belief, growing population, adequate food, and defenders ready against strangers.
The Cult Member is an accepted active human persona inside the commune. Their product context is the leader's management surfaces, where their work is assigned and their responses are surfaced as observable outcomes. Their primary goal is to carry out the leader's daily assignments and participate in the commune's life. Their distinct accepted responsibilities are: performing delegated farming, machine maintenance, animal husbandry, cooking, cleaning, and hunting; participating in weekly rituals; raising the commune's children per the leader's instructions; and forming relationships that produce offspring. Their relevant inputs and decisions are which assignment they receive, how they respond to ritual participation, and how they follow childrearing instructions. They interact with the Cult Leader (who assigns, instructs, and leads rituals) and with other members through relationships. Their observable success is completed assignments reflected in commune counters, maintained happiness and belief, and acknowledged childrearing instructions.
The Cult Defender is an accepted active human persona trained by the leader. Their product context is the Defense surface, where their training and readiness are tracked. Their primary goal is to defend the encampment from strangers so the community keeps operating. Their distinct accepted responsibilities are: receiving training from the leader and holding the encampment's readiness against strangers. Their relevant inputs and decisions are which training they receive and how readiness is maintained. They interact with the Cult Leader (who trains them). Their observable success is a defended settlement with tracked readiness that lets the community keep operating.
The visual language is Typography as architecture: a cult town painted in poster ink, after the muse Paula Scher. The headline is "They found you on the road" — the interface itself looks like the town's signage: loud, blunt, a little unhinged, and unmistakably authored.
Palette (dark mode, flat — never gradient):
#16110D (ink-black-brown, tar-paper wall)#221A14#F4EBDC (bone-cream, high contrast for long reading)#C8341E (poster red — authority colour: sermon banners, Chosen One seal, ritual day markers, primary buttons)#E8B21C (mustard — belief/morale meters and weekly ritual countdown)#8C7A66 (secondary labels and rules)#2E6E63 for commune tasks; dusty violet-grey #6B5A78 for lineage/relationshipsTypography:
clamp(56px, 11vw, 148px) / section clamp(36px, 6vw, 72px) / subhead 28 / body 17 / label 11. Mobile display floor 56px, never smaller.Shape language: Hard edges only — 0px radius on cards, buttons, and panels. Diagonal colour bands (clip-path polygons at 6–10 degrees) separate sections. Thick 3px rules and chunky 2px borders in bone or red. Seals/stamps as circles with double rings. Buttons are rectangular slabs of colour with a hard 4px offset shadow in ink, no blur. Nothing soft, nothing glassy.
Layout: Persistent left rail (280px desktop, collapsing to a top strip at 768px and a bottom tab bar at 375px) carrying day/season stamp, belief and morale meters as filled bars with big numerals, population and food counters, and the action log as a ruled ledger. Main content is a 12-column asymmetric grid: narrative passage in an 8-column measure, choices as a stacked column of full-width slabs with the verb in Anton caps on the left and the stat consequence in Archivo on the right. Section headers break the grid with a full-bleed red band. Tabs: Commune, Daily Action, Tasks, Morale, Rituals, Childrearing, Defense, Lineage.
Imagery: Typography is the imagery. Where a picture is needed, high-contrast duotone (bone on ink or red on ink) photographic crops of rural textures — weathered barn wood, a buggy wheel, a hand-painted sign, a field at dusk — cropped hard to the grid and often overprinted with a giant Anton word at 30% opacity. No stock smiling people, no clip art, no gradients, no 3D blobs. Character portraits are square duotone crops with the name set as a red band across the bottom edge.
Readability: Headlines, wordmarks, labels, numbers, card text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit; no other element covers any part of them. Imagery, decoration, and motion may be cropped, bled, rotated, or overlapped as the direction asks, as long as they cover no readable text or control. Moving content (the gossip ticker) may cross the viewport edge by design and must become fully readable as it passes; under reduced motion it becomes a static wrapped line.
The public entry is a full-bleed ink-black field with a single enormous Anton headline filling the viewport — "THEY FOUND YOU ON THE ROAD" — stacked in three lines, each a different width, the middle line set in outline and rotated -4deg, bleeding past the right edge as decoration only. Behind and below it, a flat red band rises diagonally from the bottom-left carrying the sign-in slab and a bone-cream subline about the town. No centred stack, no gradient, no floating cards: the type IS the hero, with a duotone barn-wood crop tucked into the lower-right corner under a 30%-opacity overprint. A thin mustard rule across the top holds the town name in 11px tracked caps. The concept recomposes only accepted content — the premise headline, the town subline, and the sign-in slab routing to Sign Up and Login.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: flat
Landing Hero Motion Brief
prefers-reduced-motion; the headline appears instantly, choices appear instantly, the ticker becomes a static wrapped line, and meters show their final values without stepping.prefers-reduced-motion, with a usable static arrangement. Provenance: explicit (creative direction).
Your car gives out at the edge of a town that isn’t on any map. Girls in a horse and buggy carry you in. The old man in the chapel is waiting — he has decided you are the Chosen One, and the keys to the commune are yours now.

Your car gives out at the edge of a town that isn’t on any map. Girls in a horse and buggy carry you in. The old man in the chapel is waiting — he has decided you are the Chosen One, and the keys to the commune are yours now.
No comments yet. Be the first!