Skip to main content

MVP Implementation Plan

Version: 1.2 — Working Document v1.2 changes: Audit pass — fixed document references, normalized epic table structure, decomposed bundled stories, added missing story areas, added milestone dependencies, added sprint load warnings, clarified M9→M10 entitlement gating v1.1 changes: Added M0: Tech Prep milestone, pulled staging deployment forward to M5, adjusted sprint cadence (+2 weeks) Scope: MVP.md feature set through founding-user launch Audience: Solo founder + 1 contract engineer; GitHub Projects tracking

⚠ 2026-06-08: Many inline story references point to TECH-SPEC.md, DESIGN-SYSTEM.md, DEPLOY-GUIDE.md, REPO-MAP.md, and GOSPELIB-SCHEMAS.md — these docs were never created or have been deleted. See the Document References table below for where that information actually lives now. The inline TECH-SPEC.md § … links are retained as section-intent markers but do not resolve to files.


How to Read This Document

This plan translates the MVP build order into GitHub-trackable work units. It does not repeat feature specs, API contracts, or design details — those live in the docs referenced below. Each epic here is a thin planning wrapper: enough context for story/issue writing, with pointers to authoritative sources.

Document References

Updated 2026-06-08: Several docs referenced below were never created or have been deleted as obsolete. Dead references are marked struck with notes.

DocContainsUse When Writing Stories For
MVP.mdFeature scope, tier breakdown, success criteria, budgetAcceptance criteria, scope boundaries
TECH-SPEC.md(never created — architecture lives in CORPUS-SPEC.md + service-level READMEs)Technical implementation details
GOSPELIB-SCHEMAS.md(deleted — superseded by CORPUS-SPEC.md §§ 14–16 and FalkorDB schema in services/ingest/)Data models, graph schema
GOSPELIB-INGEST-SPEC.mdIngest pipeline architecture (Draft — see note in file)Ingest pipeline stories
DESIGN-SYSTEM.md(never created — design tokens live in apps/web/styles/ and packages/ui/)UI component stories
DEPLOY-GUIDE.md(never created — see Deployment Overview)Infrastructure and deployment stories
REPO-MAP.md(never created — see monorepo layout in project root README)All stories (coding standards)
GOSPELIB-MIGRATION-SPEC.md(never created — migration handled by gldl adapter architecture)M0 data preparation stories
BusinessLEGAL.md, POLICY-TERMS.md, executive summary, market research, GTMLaunch readiness, legal/compliance stories

Tracking Structure

GitHub Project (board)
└── Milestone (time-boxed release target)
└── Epic (label) — groups related issues
└── Issue / Story — single deliverable
LevelGitHub ConstructNaming Convention
ProjectGitHub Project (board view)GospeLib MVP
PhaseProject field (single-select)P0: Foundation, P1: Reader, etc.
MilestoneGitHub MilestoneM1: Data Pipeline, M2: Content API, etc.
EpicLabel (epic:<name>)epic:ingest, epic:reader, etc.
SprintGitHub Iteration field2-week iterations
Story/IssueGitHub IssueConventional title, links to epic label
ReleaseGitHub Release + tagv0.1.0-alpha, v0.2.0-alpha, etc.

Phase Overview

Four phases mapping to MVP.md § Build Phases. Phases are sequential at the macro level; epics within a phase may overlap.

PhaseMilestonesDurationEnds With
P0: FoundationM0–M2Weeks 1–10Data pipeline operational, content API serving passages
P1: Core ReaderM3–M5Weeks 9–20Free-tier web app usable for daily scripture study, staging environment live
P2: Scholar FeaturesM6–M9Weeks 17–32Interlinear, JST, constellation, AI — all gated behind Scholar
P3: LaunchM10–M11Weeks 29–38Freemium billing, CFM, polish, founding-user onboarding

Overlap is intentional. Infrastructure work for the next phase starts 1–2 weeks before the current phase ends. Founding users enter at ~Week 22 per MVP.md § Build Phases.

Week 1 5 10 15 20 25 30 35 38
|-------|-------|-------|-------|-------|-------|-------|-------|→
P0 ██████████████████████
P1 ░░██████████████████████████
P2 ░░██████████████████████████████
P3 ░░████████████████████████

Founding users

P0: Foundation

Goal: Corpus data flows from JSON files through the ingest pipeline into FalkorDB, and the content service serves passage data over HTTP.

Key constraint: Everything downstream depends on this. No reader, no interlinear, no graph view without a working data layer.

Milestone M0: Tech Prep — No release tag

Target: Weeks 1–2 (Sprint 0) Prerequisite milestone — no release artifact, just verified readiness for all downstream work.

Epic: epic:tech-prep

Establish cross-service patterns, tooling, and testing infrastructure before business logic begins.

Story AreaScopeSpec Reference
Dev environment validationVerify pnpm infra:up works, all services start with go run/uv run, setup.sh is current, document issuesTECH-SPEC.md § Development Workflow
PostgreSQL migration frameworkInstall golang-migrate, create migrations/ directory structure in auth + billing, add Nx migration targets (nx run auth:migrate-up), add migration CI stepTECH-SPEC.md § Data Architecture
Initial PostgreSQL schemasgl_users, gl_user_devices, gl_subscriptions, gl_stripe_events, gl_highlights, gl_notes, gl_bookmarks, gl_reading_progress, gl_audit_log — all tables from tech specTECH-SPEC.md § PostgreSQL Schema
Typesense collection schemasDefine passages, topics, lexicon collection schemas per tech specTECH-SPEC.md § Typesense Collections
Response envelope utilitiesImplement SuccessResponse/ErrorResponse helpers in Go (gateway, auth, billing) and Python (content, ai) matching the API contractTECH-SPEC.md § Response Envelope
Structured logging configurationConfigure zerolog (Go) and structlog (Python) with JSON format, request_id, service name, version fields across all servicesTECH-SPEC.md § Observability
Health check contractImplement /health (alive) and /ready (dependency check) on all services with consistent JSON response shapeTECH-SPEC.md § Health Endpoints
Request ID propagationGateway generates X-Request-ID; downstream services extract and include in logs and error responsesTECH-SPEC.md § Communication
Testing infrastructureCreate per-project vitest.config.ts for TS packages, implement conftest.py fixtures for Python services, create one reference Go table-driven test per service, validate all test runners in CITECH-SPEC.md § Testing
OpenAPI spec workflowContent service auto-generates OpenAPI via FastAPI; set up gen-types.sh to pull /openapi.json and generate TS types, validate generation pipelineTECH-SPEC.md § API Design
Env validation schemasImplement Zod env schemas in @gospelib/config for web app env varsTECH-SPEC.md § Shared Packages
Error code catalogDefine UPPER_SNAKE error codes as constants in Go and Python (PASSAGE_NOT_FOUND, INVALID_REQUEST, UNAUTHORIZED, etc.)TECH-SPEC.md § Response Envelope
Corpus v1→v2 migrationRun convert_corpus.py --input corpus --output data, validate output against v2 schemas, confirm data/ is canonical for ingestGOSPELIB-MIGRATION-SPEC.md, REPO-MAP.md § Data & Corpus

Milestone M1: Data Pipeline — v0.1.0-alpha

Target: Weeks 3–8 Release artifact: ingest/v0.1.0-alpha — full corpus ingested into local FalkorDB

Epic: epic:ingest-core

Implement the 7-stage ingest pipeline per GOSPELIB-INGEST-SPEC.md.

Story AreaScopeSpec Reference
Pydantic modelsAll 7 schema families + shared typesGOSPELIB-SCHEMAS.md § Schema Families
Book registryLoad + validate data/book_registry.jsonGOSPELIB-INGEST-SPEC.md § Stage 1
ID generatorsAll 10 ids.py functionsGOSPELIB-INGEST-SPEC.md § ID Derivation
File loaderSchema-dispatched Pydantic validationGOSPELIB-INGEST-SPEC.md § loader.py
FalkorDB clientConnection pool, batch write helpers, retryGOSPELIB-INGEST-SPEC.md § Batch Strategy
Cypher constantsAll MERGE queries for 12 node types + 16 edge typesGOSPELIB-INGEST-SPEC.md § Cypher Constants
Index creationStage 0 — primary + secondary indicesGOSPELIB-INGEST-SPEC.md § Index Schema
Lexicon pipelineStage 2 — :Word nodes, DERIVES_FROM, RELATED_TOGOSPELIB-INGEST-SPEC.md § Stage 2
Scripture text pipelineStage 3 — :Passage, :Witness, :WordAlignment + all edgesGOSPELIB-INGEST-SPEC.md § Stage 3
TG/BD/Index pipelinesStage 4 — concurrent file I/O, sequential writesGOSPELIB-INGEST-SPEC.md § Stage 4
Commentary pipelinesStage 5 — verse + scholarly commentaryGOSPELIB-INGEST-SPEC.md § Stage 5
Pending resolutionStage 6 — promote :PendingPassage stubsGOSPELIB-INGEST-SPEC.md § Stage 6
Pipeline runnerIngestRunner orchestrating stages 0–6 + reportGOSPELIB-INGEST-SPEC.md § Runner
CLI interfaceClick commands: run, --dry-run, --only, --resetGOSPELIB-INGEST-SPEC.md § CLI
Run reportJSON report with timing, counts, errorsGOSPELIB-INGEST-SPEC.md § Report

Epic: epic:ingest-test

Story AreaScopeSpec Reference
Unit testsRegistry, ID derivation, Pydantic models (valid + invalid), batch helpersGOSPELIB-INGEST-SPEC.md § Testing
Integration testsEach pipeline against real FalkorDB (testcontainers)GOSPELIB-INGEST-SPEC.md § Testing
Test fixturesMinimal corpus files in data/fixtures/GOSPELIB-SCHEMAS.md
Smoke testFull pipeline on all fixturesGOSPELIB-INGEST-SPEC.md § Testing

Epic: epic:corpus-validation

Story AreaScopeSpec Reference
Schema compliance auditValidate every corpus JSON file against Pydantic modelsGOSPELIB-SCHEMAS.md
Data quality checksMissing cross-refs, orphaned Strong’s numbers, encoding issuesGOSPELIB-SCHEMAS.md § Cross-References
Fixture generationCreate minimal test fixtures from real corpus filesGOSPELIB-SCHEMAS.md

Milestone M2: Content API — v0.2.0-alpha

Target: Weeks 7–10 (overlaps M1 tail) Release artifact: content/v0.2.0-alpha — passage retrieval + basic graph queries via HTTP

Prerequisites: M1 FalkorDB client + Stage 3 (scripture text) must complete — content service queries require ingested data

Epic: epic:content-service

Build out the content service per TECH-SPEC.md § Content Service.

Story AreaScopeSpec Reference
GraphClientFalkorDB connection pool, Redis query cachingTECH-SPEC.md § Content Service
Passage routesGET /passages/{id}, GET /passages/{book}/{chapter}TECH-SPEC.md § API Endpoints
Lexicon routesGET /lexicon/{wordId}TECH-SPEC.md § API Endpoints
Topic routesGET /topics, GET /topics/{slug}TECH-SPEC.md § API Endpoints
Dictionary routesGET /dictionary/{term}TECH-SPEC.md § API Endpoints
Graph routesGET /graph/connections/{nodeId}TECH-SPEC.md § API Endpoints
Response modelsPydantic response models matching the API envelopeTECH-SPEC.md § Response Envelope
Caching layerRedis caching with gl:<resource>:<id> key patternTECH-SPEC.md § Caching Strategy
OpenAPI specAuto-generated by FastAPI at /openapi.json — no hand-authored spec needed
Content service testsUnit tests for graph queries (mocked FalkorDB), integration tests for passage/lexicon/topic routesTECH-SPEC.md § Testing

Epic: epic:gateway-core

Minimal gateway to route traffic to content service. Full auth/billing integration deferred to P3.

Story AreaScopeSpec Reference
Reverse proxyRoute /api/v1/passages/*, /api/v1/lexicon/*, etc. → contentTECH-SPEC.md § Gateway
Request IDGenerate + inject X-Request-ID headerTECH-SPEC.md § Communication
CORSAllow web app originTECH-SPEC.md § Gateway Middleware
Rate limitingBasic sliding-window rate limiter (Redis)TECH-SPEC.md § Gateway Middleware
Health aggregationGateway health check includes downstream service health
Gateway testsTable-driven Go tests for proxy routing, request ID injection, rate limitingTECH-SPEC.md § Testing

Epic: epic:shared-types

Story AreaScopeSpec Reference
@gospelib/typesScripture types (Passage, Verse, Chapter, etc.) generated or hand-typed from content OpenAPITECH-SPEC.md § Shared Packages
@gospelib/sdkopenapi-fetch client wired to content service endpointsTECH-SPEC.md § Shared Packages
@gospelib/configZod env schemas for NEXT_PUBLIC_API_URL, etc.TECH-SPEC.md § Shared Packages

P1: Core Reader

Goal: A web app where users can read all LDS scriptures, navigate by book/chapter, search, and annotate (highlights, notes, bookmarks). The free tier of MVP.md § Free Tier.

Key constraint: This must be "genuinely better than Gospel Library" — the free tier IS the acquisition funnel.

Milestone M3: Scripture Reader — v0.3.0-alpha

Target: Weeks 9–14 Release artifact: Web app displaying scripture text with chapter navigation

Prerequisites: M2 content API serving passage data; @gospelib/sdk wired to content endpoints

Epic: epic:reader-core

Story AreaScopeSpec Reference
App shellLayout, navigation sidebar, responsive breakpointsDESIGN-SYSTEM.md § Navigation
Route structure(marketing)/ and (app)/ route groupsTECH-SPEC.md § Next.js Apps
Scripture text displayScriptureText, VerseNumber, ChapterHeader componentsDESIGN-SYSTEM.md § P1 Components
Chapter navigationBook selector → chapter list → verse displayDESIGN-SYSTEM.md § Navigation
Typography controlsFont size, 3 density modes (spacious/comfortable/compact)MVP.md § Feature #9, DESIGN-SYSTEM.md § Reader
Dark modeLight / Study Dark / Blackout themesDESIGN-SYSTEM.md § Dark Mode
Reading modesReading mode (default) — Study and Interlinear modes deferredDESIGN-SYSTEM.md § Render Modes
Responsive layoutDesktop, tablet, mobile breakpoints — web onlyMVP.md § Platform

Epic: epic:ui-foundation

Build foundational @gospelib/ui components. Ref: DESIGN-SYSTEM.md § Component Priority.

Story AreaScopeSpec Reference
Design token systemFull token implementation: color scales (navy, tan, white), doctrinal colors, corpus colors, semantic colors, functional colors, personal highlight colors, Night Warm tints. Spacing, radii, elevation shadows, motion curves/durations, layout constants, density presets — all from tokens.tsDESIGN-SYSTEM.md § Design Tokens Reference
Typography infrastructureFont loading/serving: Gentium Plus (scripture), Inter (UI), SBL Hebrew (Hebrew). Type scale (xs–3xl). Scripture text rendering rules (font-feature-settings, verse number styling, chapter drop caps, red-letter toggle). Original language text rules (RTL direction, sizing, line height)DESIGN-SYSTEM.md § Typography
Paper & chrome surface systemTwo surface personalities: paper (warm texture, white-200, noise pattern, warm shadows) vs chrome (clean, flat, cooler). 6-level elevation scale with warm rgba(20,16,10) shadowsDESIGN-SYSTEM.md § Elevation & Surface Language
Shape & geometry systemCorner radius philosophy: 12px paper, 8px chrome, 4px chips, 50% circular. Border usage rules. Horizontal rule stylingDESIGN-SYSTEM.md § Shape & Geometry
Custom icon set (P1 subset)Stroke-based 1.5px icon system. P1 icons: reader, explore, study, search, profile, settings, corpus icons (corpus-ot, corpus-nt, corpus-bom, corpus-dc, corpus-pogp). Line default / filled active state conventionDESIGN-SYSTEM.md § Iconography
Motion & animation systemEasing curves (spring-snappy, smooth-in-out, decelerate, accelerate). Duration scale (instant→slow). Reduced motion support (prefers-reduced-motion crossfade fallbacks)DESIGN-SYSTEM.md § Motion & Animation
Theme provider (3 modes)Light / Study Dark / Blackout modes with semantic token resolution. Night Warm independent overlay. CSS custom properties or RN theme context for all tokensDESIGN-SYSTEM.md § Dark Mode & Theming
Core primitivesButton, Icon, Text, Card, Badge — using token systemDESIGN-SYSTEM.md § Component Catalog P5
Scripture display componentsScripturePage (paper surface, scroll, gesture detection), VerseBlock (number + text + layers), ChapterHeader (drop cap, corpus bar, 3 styles)DESIGN-SYSTEM.md § Component Catalog P1
Layout componentsBottomTabBar, SideRail, ReaderChrome (auto-hide/summon with 3s timeout), SplitPaneLayout (tablet/web)DESIGN-SYSTEM.md § Component Catalog P5, DESIGN-SYSTEM.md § Layout & Navigation
Loading & skeleton statesScripture page shimmer (tan gradient, 1.8s), verse-number placeholders, content-shaped skeletons matching scripture text metrics. Optimistic UI pattern. First-load breathing icon animationDESIGN-SYSTEM.md § Loading & Waiting States
Empty & error state patternsInline amber error cards (Elevation 1, never modal). Wordless success confirmations (visual change + haptic only). Empty state template (icon mark + one sentence + action)DESIGN-SYSTEM.md § App-Wide Polish & Tone
Accessibility foundationSystem font size scaling + in-app slider. 44×44px minimum touch targets. WCAG 2.1 AA contrast in default modes, AAA in Blackout. Screen reader labels. lang attributes for Hebrew/GreekDESIGN-SYSTEM.md § Accessibility
Component playgroundStorybook-based internal playground (packages/ui/.storybook/). All components in all states. Mode/density/font toggles. Visual regression baselineDESIGN-SYSTEM.md § Design System Governance

Epic: epic:reader-interaction

Reader interaction patterns and gesture system needed for the P1 reading experience.

Story AreaScopeSpec Reference
Reader chrome behaviorAuto-hide after 3s, single-tap margin summon, scroll-reveal (configurable). Minimal top bar (book/chapter nav) + bottom bar (progress + tools)DESIGN-SYSTEM.md § Reader Chrome Behavior
Quick Settings TrayHalf-swipe-up invocation. Font size slider (12–28px, live preview), line spacing slider, brightness, density chips, mode chips, font dropdown. Bottom sheet (280px resting height)DESIGN-SYSTEM.md § Quick Settings Tray
Reading density modesSpacious / Comfortable / Compact. Line height, paragraph spacing, font size delta. Animated transitions (300ms smooth-in-out) with scroll position preservationDESIGN-SYSTEM.md § Reading Density
Context panel (tablet/web)Right-side 360px persistent workspace. State-driven content (empty → word → verse → AI → topic → search). History navigation. Remembers last content on chapter switchDESIGN-SYSTEM.md § Contextual Panel System

Milestone M4: Annotations — v0.4.0-alpha

Target: Weeks 13–17 Release artifact: Users can highlight, note, and bookmark verses (persisted to PostgreSQL)

Prerequisites: M0 PostgreSQL schemas (annotation tables); M3 reader shell (verse anchoring for annotations)

Epic: epic:auth-integration

Story AreaScopeSpec Reference
Clerk setupWeb app Clerk provider, sign-in/sign-up flowsTECH-SPEC.md § Authentication
Auth serviceClerk webhook handler, user sync to PostgreSQL (gl_users schema from M0)TECH-SPEC.md § Auth Service
Gateway JWTJWT validation middleware, X-User-Id injectionTECH-SPEC.md § Gateway Middleware

Epic: epic:annotations

Story AreaScopeSpec Reference
Highlight system8 doctrinal colors + 4 personal; verse long-press → color pickerMVP.md § Feature #2, DESIGN-SYSTEM.md § Floating Toolbar
NotesVerse-anchored notes, markdown editorMVP.md § Feature #3
BookmarksDouble-tap bookmark, bookmark list viewMVP.md § Feature #4
Floating ToolbarContextual verse action menu (highlight, note, bookmark, share, cross-ref) — replaces deleted ActionRingDESIGN-SYSTEM.md § Floating Toolbar
Annotation CRUD APIgl_highlights, gl_notes, gl_bookmarks CRUD routes in auth service (tables created in M0; this story adds the API layer)TECH-SPEC.md § PostgreSQL Schema
User data APICRUD endpoints for highlights/notes/bookmarks via gatewayTECH-SPEC.md § API Endpoints
Reading historygl_reading_progress — chapter-level trackingMVP.md § Feature #7

Milestone M5: Search + Staging — v0.5.0-alpha

Target: Weeks 16–20 Release artifact: Reference lookup + full-text search via Typesense; staging environment live

Prerequisites: M1 ingest pipeline (Typesense sync extends it); M3 reader (search UI lives in web app)

Epic: epic:search

Story AreaScopeSpec Reference
Typesense syncIngest pipeline addition: index passages into TypesenseTECH-SPEC.md § Typesense
Search APIGET /search route in content service — query, filters, paginationTECH-SPEC.md § API Endpoints
Reference lookupParse John 3:16, 1 Ne. 3:7, etc. → direct passage fetchMVP.md § Feature #5
Search UISearch bar, results list, facets (book, testament)DESIGN-SYSTEM.md § P4 Components

Epic: epic:footnotes

Footnote rendering, data flow, and interaction. Ref: DESIGN-SYSTEM.md § Footnote & Reference System.

Story AreaScopeSpec Reference
Footnote data APIContent service returns footnote data (cross-refs, TG/BD links, JST variants) as part of passage response — ensure ingest pipeline populates :VerseNote nodes and ANNOTATES edgesTECH-SPEC.md § Content Service, GOSPELIB-SCHEMAS.md § VerseNote
Footnote display modesThree configurable modes: Superscript (default), Margin Flag, Inline Tooltip — user preference stored in reader settingsDESIGN-SYSTEM.md § Footnote & Reference System
Footnote type color codingVisual coding per type: JST=gold, TG=navy, BD=tan, scholarly=purple, cross-ref=blueDESIGN-SYSTEM.md § Footnote & Reference System
Footnote card componentTap footnote → card with colored left border, content preview, navigation linkDESIGN-SYSTEM.md § Footnote & Reference System

Epic: epic:staging-deploy

Ship a staging environment before founding users arrive at ~Week 22.

Story AreaScopeSpec Reference
Staging environmentEKS cluster (Terraform infra/terraform/environments/staging/), RDS, ElastiCache, Kustomize staging overlay, deploy all servicesDEPLOY-GUIDE.md § Environments, REPO-MAP.md § Infrastructure
Staging CD pipelineGitHub Actions → ECR → Kustomize overlay → ArgoCD sync on push to mainDEPLOY-GUIDE.md § CI/CD, REPO-MAP.md § CI/CD Files
Sentry integrationError tracking SDK in web app + Python services + Go servicesTECH-SPEC.md § Observability
Secrets managementAWS Secrets Manager or equivalent for staging API keysDEPLOY-GUIDE.md § Secrets
Staging data seedingRun ingest pipeline against staging FalkorDB; document seeding procedureGOSPELIB-INGEST-SPEC.md § CLI

P2: Scholar Features

Goal: The three paid pillars that justify $79.99/year — interlinear Hebrew/Greek + JST, constellation view, and constrained AI. Ref: MVP.md § Paid Tier.

Key constraint: Founding users enter during this phase (~Week 22). Ship incrementally; don't wait for "complete."

Milestone M6: Interlinear & Lexicon — v0.6.0-alpha

Target: Weeks 17–24 Release artifact: Word-tap lexicon bubble and interlinear display mode for OT Hebrew + NT Greek

Prerequisites: M1 word alignment + lexicon data ingested; M3 reader (interlinear mode extends reader)

Epic: epic:interlinear

Story AreaScopeSpec Reference
Interlinear data verificationValidate word alignment data in corpus against schemasGOSPELIB-SCHEMAS.md § WordAlignment
Interlinear APIPassage response enriched with word alignment + Strong's dataTECH-SPEC.md § Content Service
WordToken componentTap target for each original-language wordDESIGN-SYSTEM.md § P1 Components
Lexicon bubbleTap word → pop-up with Strong's number, gloss, root, morphologyMVP.md § Priority #1
Word journeyTap word → occurrences highlighted across current chapterMVP.md § Priority #1
Interlinear display modeWord-by-word with transliteration + glossDESIGN-SYSTEM.md § Interlinear View
Hebrew RTL renderingGentium Plus / SBL Hebrew font, BiDi layoutDESIGN-SYSTEM.md § Original Language
Study modeActivate study mode from reader — verse long-press entry pointDESIGN-SYSTEM.md § Render Modes
P2 icon additionsinterlinear, witness, strong-number, word-journey, graph-node iconsDESIGN-SYSTEM.md § Bespoke GospeLib Icons

Milestone M7: JST Interlinear — v0.7.0-alpha

Target: Weeks 23–27 Release artifact: JST variants displayed inline alongside KJV verses

Epic: epic:jst

Story AreaScopeSpec Reference
JST data verificationValidate JST corpus files against schemasGOSPELIB-SCHEMAS.md
JST APIEndpoint or passage enrichment returning JST variants for a verseMVP.md § Priority #1b
Inline diff viewKJV ↔ JST word-level diff highlightingMVP.md § Priority #1b
Manuscript attributionTap variant → source manuscript + context from JSPPMVP.md § Priority #1b
Witness layer UIPull-down or panel for manuscript variant accessDESIGN-SYSTEM.md § Witness Layer

Milestone M8: Knowledge Graph — v0.8.0-alpha

Target: Weeks 25–32 Release artifact: Constellation view for KJV NT passages with cross-refs and topical links

Epic: epic:constellation

Story AreaScopeSpec Reference
Graph data layerEnsure cross-refs + topical guide edges ingested for NTGOSPELIB-SCHEMAS.md § Edge Types
Graph query APIGET /graph/connections/{nodeId} — neighbors with typed edgesTECH-SPEC.md § API Endpoints
Constellation viewInteractive node graph — passages, topics, cross-referencesMVP.md § Priority #2, DESIGN-SYSTEM.md § Constellation
Node renderingPassage nodes, topic nodes; solid (cross-ref) vs dashed (topical) edgesMVP.md § Priority #2
Zoom interactionPinch-to-zoom-out from reader to constellationMVP.md § Priority #2
List view toggleAccessible alternative to graph visualizationMVP.md § Priority #2
ConnectionCardTap node → card with passage preview, link to navigateDESIGN-SYSTEM.md § P3 Components
Graph-specific iconstemple-link, constellation node type shapes (rounded square, circle, hexagon, folded-corner, pentagon)DESIGN-SYSTEM.md § Bespoke GospeLib Icons, DESIGN-SYSTEM.md § Constellation View

Milestone M9: AI Study Assistant — v0.9.0-alpha

Target: Weeks 28–32 Release artifact: Constrained AI Q&A about current passage with citations

Prerequisites: M2 content API (AI needs passage context); M3 reader (AI panel in web app). Note: AI ships without Scholar entitlement gating; entitlement enforcement added in M10 when billing goes live.

Epic: epic:ai-service

Story AreaScopeSpec Reference
LLM client ABCAbstract LLMClient with Anthropic (primary) + OpenAI (fallback)TECH-SPEC.md § AI Service
Prompt templatesJinja2 .j2 files for explain, questions, "what does original language reveal"MVP.md § Priority #3
Caching decoratorRedis semantic caching by prompt hashTECH-SPEC.md § AI Service
AI routesPOST /ai/explain, POST /ai/questionsTECH-SPEC.md § API Endpoints
Session limiting10 sessions/month on Scholar tier (counter in Redis)MVP.md § Priority #3
Citation linkingAI responses reference passages + lexicon entries as tappable linksMVP.md § Priority #3
AI UIStudyAssistant panel, prompt template buttons, response displayDESIGN-SYSTEM.md § P4 Components
Gateway AI routingRoute /api/v1/ai/* → AI service; auth-required but Scholar entitlement gating deferred to M10 (epic:billing)TECH-SPEC.md § Gateway
AI iconai-assistant spark/four-pointed star iconDESIGN-SYSTEM.md § Navigation Icons

P3: Launch

Goal: Subscription billing, Come Follow Me integration, polish, and founding-user onboarding. Ship the product.

Key constraint: Billing/entitlement must be rock-solid. A user who pays must immediately get access. A failed payment must immediately revoke.

Milestone M10: Monetization — v0.10.0-alpha

Target: Weeks 29–34 Release artifact: Stripe subscription flow with Scholar gating live

Prerequisites: M4 auth integration (user identity for subscriptions); M2 gateway (entitlement middleware extends it)

Epic: epic:billing

Story AreaScopeSpec Reference
Billing serviceStripe webhook handler, subscription CRUD, entitlement checksTECH-SPEC.md § Billing Service
PostgreSQL tablesSubscriptions, entitlements, idempotency keysTECH-SPEC.md § PostgreSQL Schema
Stripe checkoutWeb checkout flow → Stripe Checkout → webhook confirmTECH-SPEC.md § Billing
Entitlement middlewareGateway checks plan tier before routing to Scholar endpointsTECH-SPEC.md § Gateway Middleware
Subscription UIPlan comparison, checkout trigger, billing portal linkDESIGN-SYSTEM.md § Subscription Boundaries
Diamond indicatorsPremium feature markers (◇) in UI, warm unlock momentsDESIGN-SYSTEM.md § Subscription Boundaries
Free trial14-day Scholar trial on signupMVP.md § Freemium

Epic: epic:cfm

Story AreaScopeSpec Reference
CFM schedule dataWeekly schedule mapping (year → week → passages)MVP.md § Feature #6
CFM integrationSurface current week's reading on home/dashboardMVP.md § Feature #6
Whisper cardSingle contextual insight card per readingMVP.md § Feature #13, DESIGN-SYSTEM.md § Whisper Cards

Epic: epic:sharing

Story AreaScopeSpec Reference
Scripture card generatorSelect verse → generate styled image cardMVP.md § Feature #11, DESIGN-SYSTEM.md § Scripture Cards
Share targetsImage export, deep link, clipboardDESIGN-SYSTEM.md § Sharing

Milestone M11: Launch Readiness — v1.0.0

Target: Weeks 33–38 Release artifact: v1.0.0 — production deployment, founding users onboarded

Epic: epic:onboarding

Story AreaScopeSpec Reference
Onboarding flow3-act: reading plan → personalize → first passage with tutorialDESIGN-SYSTEM.md § Onboarding
Returning user routingLast reading position resumeDESIGN-SYSTEM.md § Onboarding

Epic: epic:polish

Story AreaScopeSpec Reference
PWA optimizationService worker, manifest, offline cache, home-screen installMVP.md § Feature #8
Offline data cachingCache recently read books for offline access via service workerMVP.md § Feature #8
Performance auditCore Web Vitals, time-to-interactive on scripture pages
AccessibilityKeyboard navigation, screen reader, ARIA labels, color contrastDESIGN-SYSTEM.md § Accessibility
Error handlingGlobal error boundaries, API error states, offline fallbacks
SEOMeta tags, OG images, structured data for scripture passages
AnalyticsEvent tracking for leading indicatorsMVP.md § Leading Indicators

Epic: epic:infrastructure

Story AreaScopeSpec Reference
Production environmentEKS + RDS + ElastiCache, production Kustomize overlayDEPLOY-GUIDE.md § Production
Production CD pipelineRelease tag → approval gate → production deployDEPLOY-GUIDE.md § CI/CD
Monitoring & dashboardsGrafana dashboards, Prometheus alerting (Sentry already live from M5)DEPLOY-GUIDE.md § Monitoring
Database migration automationgolang-migrate init containers, migration gating in CDDEPLOY-GUIDE.md § Migrations
Backup proceduresRDS snapshots, FalkorDB BGSAVE → S3DEPLOY-GUIDE.md § DR & Backups

Explicit Deferrals

The following workspace components are not in MVP scope and are intentionally deferred:

ComponentDeferral Reason
Mobile app (apps/mobile)MVP is web-only per MVP.md § Platform. Expo shell and navigation are scaffolded for post-launch.
Admin app (apps/admin)No admin features in MVP scope. Dashboard skeleton exists for post-launch operational tooling.
Notifications service (services/notifications)Redis Streams consumer and push/email stubs are scaffolded. Full implementation deferred to post-MVP when user engagement features are prioritized.

Epic: epic:legal

Story AreaScopeSpec Reference
Privacy policyFinalize + attorney reviewPOLICY-TERMS.md
Terms of serviceFinalize + attorney reviewPOLICY-TERMS.md
Church disclaimerIn-app and marketing materialsLEGAL.md
Trademark filingUSPTO filing for “GospeLib”LEGAL.md

Cross-Cutting Concerns

These are not milestones — they are ongoing practices that apply across all phases.

Testing

LayerFrameworkWhenSpec Reference
Python unit/integrationpytest + testcontainersEvery PRGOSPELIB-INGEST-SPEC.md § Testing
Go unitgo test -race + table-drivenEvery PRTECH-SPEC.md § Testing
TypeScript unitVitestEvery PRTECH-SPEC.md § Testing
Component visualStorybook or playgroundP1+DESIGN-SYSTEM.md § Governance
E2EPlaywright (deferred to P3)Pre-release
Visual regressionPlaywright + pixelmatchP1+ (any packages/ui/ or apps/*/src/ change)DESIGN-SYSTEM.md § Visual Regression CI

Documentation

DocUpdate Trigger
Getting StartedM1 complete — document local setup
Local Dev SetupM2 complete — document full stack
Adding a ServiceM2 complete — codify established pattern
Deployment OverviewM11 — document production deploy
Running IngestM1 complete — document pipeline operation
API OpenAPI specsEach service milestone
ADRsEach major technical decision

CI/CD

CI is already configured (.github/workflows/ci.yml). Key additions needed:

AdditionPhaseDetail
Python test containers in CIP0FalkorDB + PostgreSQL service containers for ingest integration tests
Nx affected test executionP1Vitest workspace already configured; needs per-project configs
Staging CD pipelineP1Merge to main → ECR → Kustomize → deploy (activated in M5)
Sentry error trackingP1Web + Python + Go SDK integration (activated in M5)
Production CD pipelineP3Release tag → approval gate → deploy
Visual regression screenshotsP1Playwright renders component playground; pixelmatch diff blocks PRs exceeding 0.5% threshold

Sprint Cadence

2-week sprints. 19 sprints (S0–S18) to cover Weeks 1–38.

SprintWeeksPhasePrimary Focus
S01–2P0Tech Prep: Dev environment validation, PostgreSQL migration framework + initial schemas, response envelope utilities, structured logging, health check contracts, testing infrastructure, OpenAPI workflow
S13–4P0Pydantic models, book registry, ID generators, file loader
S25–6P0FalkorDB client, Cypher constants, Stage 0–2 (indices + lexicon)
S37–8P0Stages 3–6 (scripture text → pending resolution), CLI, report
S49–10P0→P1Content service (GraphClient, passage routes), gateway proxy
S511–12P1Design token system, typography infrastructure, paper/chrome surfaces, icon set (P1), motion system, theme provider, core primitives, app shell, route structure
S613–14P1Scripture display components, reader chrome, Quick Settings Tray, density modes, dark mode, loading/skeleton states, empty/error patterns, accessibility, component playground
S715–16P1Auth integration (Clerk), annotations system (highlights, notes, bookmarks)
S817–18P1→P2Search (Typesense sync + API + UI), PWA offline, staging deploy + Sentry
S919–20P2Interlinear data verification, API enrichment, WordToken component
S1021–22P2Lexicon bubble, word journey, interlinear display mode, Hebrew RTL
S1123–24P2Founding users enter. JST data, inline diff view, manuscript attribution
S1225–26P2Constellation view — graph query API, node rendering, zoom
S1327–28P2Constellation polish (list view toggle), AI LLM client + prompts
S1429–30P2→P3AI routes + caching + UI, session limiting, gateway AI routing
S1531–32P3Billing service (Stripe), entitlement middleware, subscription UI
S1633–34P3CFM integration, scripture card sharing, free trial flow
S1735–36P3Onboarding, production deploy, monitoring dashboards, performance audit
S1837–38P3Production polish, legal finalization, backup procedures, launch

⚠️ Sprint load warnings:

  • S5 (Weeks 11–12) packs the entire design token system + typography + surfaces + icons + motion + theme + primitives + app shell + routes into 2 weeks. Consider splitting: tokens + typography + theme in S5; icons + motion + primitives + app shell in S6.
  • S6 (Weeks 13–14) compounds with scripture display + reader chrome + Quick Settings + density + dark mode + loading states + error patterns + accessibility + playground. May need to push some items to S7.
  • S15 (Weeks 31–32) includes full Stripe billing integration — historically one of the most complex third-party integrations. Allow buffer or start Stripe sandbox integration earlier.

Release Strategy

Tags follow <component>/v<semver> per release-please-config.json.

ReleaseTagTriggerContains
v0.1.0-alphaingest/v0.1.0-alphaM1 completeFull ingest pipeline operational
v0.2.0-alphacontent/v0.2.0-alpha, gateway/v0.2.0-alphaM2 completeContent API + gateway serving passages
v0.3.0-alphaweb/v0.3.0-alphaM3 completeScripture reader (display + navigation)
v0.4.0-alphaweb/v0.4.0-alpha, auth/v0.1.0-alphaM4 completeAuthentication + annotations
v0.5.0-alphaweb/v0.5.0-alphaM5 completeSearch + offline; staging environment goes live
v0.6.0-alphaweb/v0.6.0-alphaM6 completeInterlinear + lexicon (Scholar)
v0.7.0-alphaweb/v0.7.0-alphaM7 completeJST interlinear (Scholar)
v0.8.0-alphaweb/v0.8.0-alphaM8 completeConstellation view (Scholar)
v0.9.0-alphaweb/v0.9.0-alpha, ai/v0.1.0-alphaM9 completeAI study assistant (Scholar)
v0.10.0-alphabilling/v0.1.0-alphaM10 completeBilling + CFM + sharing
v1.0.0web/v1.0.0, all services v1.0.0M11 completeProduction launch

Risk Registry

RiskImpactMitigation
Ingest pipeline data quality issuesBlocks all downstream featuresCorpus validation epic in P0; dry-run + schema enforcement
FalkorDB performance at corpus scaleSlow content API, bad UXBenchmark after M1; index tuning; caching layer in M2
Clerk/Stripe integration complexityDelays auth + billingStart integration in parallel with reader; use sandbox environments early
Interlinear Hebrew RTL renderingCore differentiator broken or uglyPrototype RTL layout early in P2; test with real corpus data
Constellation view performanceGraph viz too slow for complex passagesStart with NT-only subset per MVP scope; lazy-load nodes
AI cost overrunsMonthly API costs exceed budgetSession limiting, prompt caching, Anthropic's caching API, cost monitoring
Solo founder velocity38-week plan too aggressiveFounding users at Week 22 provide feedback before full scope; cut P3 scope if needed
Custom icon set scope creepDelays P1 reader deliveryShip P1 with minimum viable icon set (navigation + corpus only); expand in P2. Consider temporary placeholder icons
Design token system complexityOver-engineering slows initial deliveryImplement tokens incrementally: colors + typography first (S5), then elevation + motion + density (S6). Keep token API simple
Tech prep scope creepDelays P0 ingest workStrict 2-week timebox for Sprint 0; defer nice-to-haves; only implement what's blocking downstream work
Missing specification documentsDESIGN-SYSTEM.A1.md doesn't exist (referenced by M10/M11 UX flows); GOSPELIB-MIGRATION-SPEC.md not writtenWrite DESIGN-SYSTEM.A1.md before P3 or merge content into DESIGN-SYSTEM.md; document corpus migration process before M1

Current State → First Steps

Note (2026-06-12): The “starting conditions” below described the initial scaffolded state at project kickoff. As of June 2026, the codebase has progressed far beyond this state: 8 fully implemented services, 9 shared packages, 24+ ingest pipeline stages, a complete web app with plugin architecture, study map, and 332 of 365 milestone issues complete (91%).

The codebase was initially fully scaffolded with zero business logic implemented. Key starting conditions at project kickoff:

  • Monorepo tooling: Nx, pnpm workspaces, CI pipeline, Docker Compose, commitlint, Release Please — all functional
  • All services: Health-only stubs (/health, /ready). Go services were identical boilerplate; Python services had empty sub-packages
  • Ingest service: Stub files (models, pipelines, DB layer) — all NotImplementedError or # TODO
  • TypeScript apps: “Coming soon” placeholders. No route groups, no components, no data fetching
  • Packages: Empty barrels (types had empty interfaces, sdk returned {}, config had empty Zod schema)
  • Corpus data: Complete across all 7 schema families (~966 files, ~215 MB)
  • Infrastructure: Docker Compose functional (4 data stores). K8s base manifests existed. Terraform modules were stubs.
  • Tests: Zero implemented
  • OpenAPI specs: None generated

Immediate actions (Sprint 0 — Tech Prep):

  1. Verify local dev environment — pnpm infra:up spins up all data stores, all services start with go run/uv run
  2. Set up PostgreSQL migration framework (golang-migrate) and write initial schemas for all tables
  3. Implement response envelope utilities in Go and Python — error codes, success/error response helpers
  4. Configure structured logging (zerolog/structlog) with consistent JSON format across all services
  5. Bootstrap testing infrastructure — per-project Vitest configs, Python conftest.py fixtures, reference Go tests
  6. Set up OpenAPI spec generation workflow (gen-openapi.shgen-types.sh)

Sprint 1 then begins epic:ingest-core — Pydantic models are the foundation of everything.


Appendix: Epic Label Reference

For GitHub Issues, apply these labels:

LabelPhaseColor
epic:ingest-coreP0#0E8A16
epic:ingest-testP0#0E8A16
epic:corpus-validationP0#0E8A16
epic:content-serviceP0#1D76DB
epic:gateway-coreP0#1D76DB
epic:shared-typesP0#1D76DB
epic:reader-coreP1#5319E7
epic:ui-foundationP1#5319E7
epic:reader-interactionP1#5319E7
epic:auth-integrationP1#D93F0B
epic:annotationsP1#D93F0B
epic:searchP1#D93F0B
epic:footnotesP1#D93F0B
epic:interlinearP2#FBCA04
epic:jstP2#FBCA04
epic:constellationP2#FBCA04
epic:ai-serviceP2#FBCA04
epic:billingP3#B60205
epic:cfmP3#B60205
epic:sharingP3#B60205
epic:onboardingP3#E99695
epic:polishP3#E99695
epic:infrastructureP3#E99695
epic:legalP3#E99695
epic:tech-prepP0#0E8A16
epic:staging-deployP1#1D76DB