Expanded the red letter verses dataset to include complete coverage
of Jesus' words throughout the New Testament:
- Matthew: 638 verses (Sermon on the Mount, parables, Olivet Discourse)
- Mark: 290 verses (ministry, teachings, passion narrative)
- Luke: 578 verses (parables, Sermon on the Plain, passion)
- John: 427 verses (I AM statements, Upper Room Discourse)
- Acts: 17 verses (appearances to Paul)
- Revelation: 67 verses (letters to churches, final words)
Total: 2,017 verses where Jesus speaks, providing comprehensive
red letter Bible coverage.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Expanded Revelation commentary from 45 to 335 verses (83% coverage),
providing detailed apocalyptic interpretation, Greek word studies, and
encouragement for persecuted believers. Also added red letter edition
support to highlight words of Christ throughout the Bible.
Revelation commentary additions:
- 290 new verses with comprehensive analysis
- All 22 chapters now have rich commentary coverage
- Apocalyptic imagery and symbolism explained
- First-century persecution context provided
- Multiple interpretive approaches acknowledged
- Christ-centered application for modern believers
Red letter edition features:
- Words of Christ highlighted in red in verse and chapter displays
- Complete database of Jesus' spoken words across all four Gospels
- Dark mode compatible color scheme
- Enhances readability and focus on Christ's teachings
Total verse commentary database now contains 14,827 verses across
all 66 books of the Bible with theological depth, practical application,
and reflection questions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Expanded verse commentary database from 2,076 to 14,537 verses with
enhanced theological content. Commentary now covers all 66 books of the
Bible with detailed analysis, historical context, practical application,
and reflection questions.
Key additions:
- Complete coverage: All 66 books now have commentary (was 45 books)
- 12,461 new verses with comprehensive commentary
- Key verses from Gospels, Psalms, Prophets, and Wisdom literature
- All missing books now covered (Acts, Revelation, minor prophets, etc.)
Each verse includes:
- Hebrew/Greek word studies with transliterations
- Historical and cultural context
- Reformed/evangelical theological analysis
- Practical application for modern believers
- 3 thought-provoking reflection questions
- HTML formatting with proper structure
Also fixed commentary display to format numbered lists as proper HTML
ordered lists using the existing format_lists filter.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implement red verse numbers to distinguish verses that have detailed
JSON-based commentary from those with generic template commentary.
Changes:
- Add is_enhanced flag to commentary generation logic
- Style verse numbers red when enhanced commentary exists
- Support both light mode (crimson) and dark mode (bright red)
Verses with enhanced commentary in verse_commentary.json now display
with red numbers, making it easy for users to identify which verses
have additional study resources available.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added Mental Health topic to topical index
- 8 subtopics covering anxiety, depression, peace, strength, renewal, hope, comfort, and courage
- 48 carefully selected KJV verses addressing mental and emotional well-being
- Comprehensive theological overview discussing biblical approach to mental health
- Acknowledges importance of both spiritual resources and professional care
- Provides compassionate, Scripture-based guidance for those struggling
- Added book_introduction.schema.json to schemas table
- Added --books and --generate-schemas CLI examples
- Updated schema count: 6 → 7 active schemas
- Updated last modified date to 2025-11-27
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds comprehensive validation for all book introduction files
in data/books/ using Pydantic models and JSON Schema.
Changes:
- Added BookIntroduction Pydantic model with nested models:
- OutlineSection: Validates book outline sections
- KeyTheme: Validates key themes with descriptions
- KeyVerse: Validates key verses with references and text
- Added validate_all_books() function to validate all 66 book files
- Added validate_book_file() helper function
- Added --books CLI flag to validate book files separately
- Generated book_introduction.schema.json JSON Schema file
- Fixed KeyVerse model field name from 'verse' to 'reference'
- Added 4 new tests to validate book directory and all 66 books
All 66 book files now validate successfully against the schema.
Test suite updated: 268 tests passing (added 4 book validation tests).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Pydantic models for all 6 main data files:
- bible_metadata.json
- word_studies.json
- study_guides.json
- verse_commentary.json
- featured_verses.json
- resource_slugs.json
- Add BookIntroduction schema for book JSON files
- Create scripts/validate_data.py:
- Validates JSON data using Pydantic models
- Can generate JSON schemas from Pydantic models
- CLI with --verbose and --generate-schemas flags
- Add test suite (tests/test_data_validation.py):
- 12 tests validating data file structure
- Parametrized tests for all data files
- Integrated into existing test suite
All validation tests pass. JSON schemas auto-generated from Pydantic models.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Created detailed documentation for all 106 JSON data files in the data directory,
including:
## Documentation Coverage
- Complete file listing with sizes and descriptions
- Data structure examples for each JSON file
- Usage information (which modules load each file)
- Editing guidelines and best practices
- Validation and testing procedures
- Performance optimization details
- Troubleshooting guide
- Development workflow
## File Categories Documented
- Bible metadata (67 files): books, chapters, abbreviations
- Interlinear data (12M compressed): Greek/Hebrew with Strong's numbers
- Study resources (25+ files): study guides, commentary, word studies
- Reference materials (10+ files): topics, reading plans, cross-references
- Stories (24 files): biblical narratives by category
## Benefits
- Non-developers can now understand and edit JSON data
- Clear examples of data structure for each file type
- Testing and validation procedures documented
- Performance characteristics explained
- Future enhancement roadmap included
Total documentation: 717 lines covering all data files and best practices.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit completes a comprehensive data migration, externalizing all hardcoded
theological content from Python modules to structured JSON files in the data/ directory.
## Changes
### New JSON Data Files (3 files, 356 KB total)
- **study_guides.json** (265 KB): 25 complete study guides with 183 sections and 732 verse references
- 6 categories: Foundational, Character & Living, Biblical Themes, Doctrinal, Thematic, Family
- **word_studies.json** (35 KB): 53 biblical terms with Hebrew/Greek definitions
- Includes transliterations, meanings, and theological notes for OT and NT
- **verse_commentary.json** (56 KB): 22 verses with detailed theological analysis
- Includes analysis, historical context, applications, and reflection questions
### Code Refactoring
**routes/study_guides.py** (1,248 lines removed, 85% reduction)
- Replaced 1,070 lines of hardcoded study guide content with JSON loader
- File reduced from 1,463 lines to 215 lines
- Added @lru_cache JSON loaders for performance
- Removed `_get_study_guides_catalog_old()` and `_get_study_guides_content_old()`
**routes/commentary.py** (496 lines removed, 11.7% reduction)
- Replaced 494 lines of hardcoded word studies and verse commentary
- File reduced from 4,222 lines to 3,726 lines
- Added structured JSON loaders with data transformation:
- `_load_word_studies()`: Converts flat JSON to nested OT/NT structure
- `_load_verse_commentary()`: Parses verse references into book/chapter/verse hierarchy
- Removed hardcoded `word_studies` (226 lines) and `enhanced_commentary` (268 lines) dictionaries
## Benefits
- **Maintainability**: Non-developers can now edit theological content in JSON
- **Performance**: @lru_cache ensures data loaded once per process
- **Separation of Concerns**: Content separated from application logic
- **Version Control**: Easier to track content changes in structured format
- **Scalability**: Can add new study guides/commentary without code changes
## Testing
- All 252 tests pass
- Verified data structure compatibility
- Confirmed JSON loaders work correctly with existing templates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Move static reference data from Python modules to JSON files in data/ directory:
- Bible metadata (testament lists, book abbreviations) → bible_metadata.json
- Chapter explanations and popularity scores → chapter_explanations.json, popular_chapters.json
- Featured verses for verse of the day → featured_verses.json
- Resource slugs for sitemap generation → resource_slugs.json
Benefits: easier content updates, better separation of data and code, enables non-developer content management. All 252 tests passing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated Obadiah and Habakkuk descriptions to present biblical content without denominational labels, maintaining theological substance while avoiding explicit "Reformation theology" references.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Complete sidenote coverage for three partially-covered resource categories:
- Women of the Bible (100%: 14/14) - added Rebekah
- Twelve Apostles (100%: 12/12) - added Andrew, Philip, James son of Alphaeus, Thaddaeus
- Biblical Prophets (100%: 16/16) - added all 7 Minor Prophets (Obadiah, Nahum, Habakkuk, Zephaniah, Haggai, Zechariah, Malachi)
All sidenotes provide historical, archaeological, or theological context using Tufte CSS margin notes. Includes Greek/Hebrew terminology, church tradition, archaeological discoveries, and connections to broader biblical themes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add sidenote field to timeline events in JSON data
- Implement Tufte CSS sidenote rendering in template
- Add sidenotes to 6 key events:
* Creation: Chronological calculation methodology
* The Flood: Archaeological evidence and worldwide traditions
* Call of Abraham: Ur excavations and dating differences
* The Passover/Exodus: Biblical dating from 1 Kings 6:1
* Fall of Jerusalem: Babylonian chronicles confirmation
* Birth of Christ: Historical evidence and BC/AD dating
- Sidenotes provide additional archaeological, historical, and
chronological context without cluttering main descriptions
- Positioned within paragraph tags for proper Tufte CSS rendering
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- "Primeval History (c. 4000 – c. 2100 BC)" instead of "(Creation – c. 2100 BC)"
- "The Patriarchal Period (c. 2100 – c. 1700 BC)" updated end date
- "Egypt and the Exodus (c. 1700 – 1406 BC)" updated to match event dates
- "The Life of Christ (5 BC – AD 30)" removed unnecessary "c." prefix
- Makes chronology clearer by showing actual date ranges throughout
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed from gap-allowing dates to traditional conservative dates
- Creation: ~4000 BC (was 11,013 BC)
- Flood: 2348 BC (was 4,990 BC)
- Updated all event dates throughout timeline to align with traditional chronology
- Removed vertical borders from comparison table column highlighting
- Updated chronology note to reflect traditional methodology
- Comparison table now shows our timeline as "Traditional" instead of "Gap-Allowing"
- Updated all alt_dates references to consistently show "Ussher:" format
- All 252 tests passing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added Greek γένεσις (genesis) with translation
- Added Hebrew בְּרֵאשִׁית (Bereshith) with translation
- Provides readers with original language context for the book's titles
Replaced the Genesis book overview with significantly more detailed and
comprehensive content including:
- Expanded 5-paragraph introduction emphasizing Genesis as foundation
for all Scripture and theology
- Detailed 15-section outline covering each major narrative from Creation
through Joseph's death
- 9 comprehensive key themes with extensive theological descriptions:
* The Sovereignty of God in Creation
* Humanity as the Image of God
* The Origin and Nature of Sin
* The Protoevangelium and the Seed
* Covenant as the Structure of Redemption
* Election and Sovereign Grace
* Justification by Faith
* Divine Providence Over Human Evil
* The Blessing to All Nations
- 16 key verses (expanded from 8) with full text
- Enhanced sections for historical context, literary style, theological
significance, Christ in Genesis, relationship to NT, and practical
application
The new content provides deeper theological analysis while maintaining
the Tufte-inspired scholarly yet accessible tone of the site.
Rename book data file and update all references to use "Solomon's Song"
(matching verses-1769.json) instead of "Song of Solomon".
Changes:
- Rename song_of_solomon.json → solomons_song.json
- Update "name" field: "Song of Solomon" → "Solomon's Song"
- Update all verse references to use "Solomon's Song X:Y" format
This ensures the book data name matches the verses file exactly,
eliminating the need for normalization redirects.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated all sections of the Song of Solomon book data:
- Introduction: Revised to emphasize the Song's unique place in Scripture,
Hebrew superlative title, dialogue structure, and dual literal/typological
interpretation following Reformed approach
- Key Themes: Replaced 8 themes with 7 focused themes including goodness of
marital desire, exclusive devotion, love strong as death, beauty of the
beloved, seeking and finding, the garden enclosed, and Christ/church typology
- Key Verses: Simplified to 7 core verses with reference and text only
- Outline: Updated to 6 sections tracking the Song's movement from longing
through consummation to the seal of love
- Historical Context: Expanded on Solomonic era and wisdom literature context
- Literary Style: Enhanced treatment of lyric poetry, wasf genre, imagery,
and Hebrew linguistic complexity
- Theological Significance: Four-paragraph treatment of creation goodness,
marital love, bride metaphor, and love's cosmic significance
- Christ in Book: Six-paragraph typological reading showing bridegroom seeking
bride, delighting in beauty, mutual possession, garden restoration, and
love conquering death
- Relationship to NT: Four-paragraph treatment of Ephesians 5, Revelation's
marriage imagery, Jesus as bridegroom, and NT sexual ethics
- Practical Application: Five-paragraph treatment for married couples, singles,
spiritual dryness, non-transactional love, and meditation on Christ's love
All content maintains theological depth while being more accessible and
clearly structured for the website.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
All four books now have comprehensive 2,000+ character introductions:
- Titus (890 → 2,800+ chars): Expanded to cover Cretan culture, Pastoral
Epistles context, dual emphasis on doctrine and good works, gospel
counterculture theme, and detailed letter structure
- 2 Timothy (898 → 3,400+ chars): Expanded to emphasize final testament
nature, contrast between imprisonments, passing the torch theme, guarding
the gospel deposit, Scripture's inspiration, and finishing well
- Zechariah (1,029 → 3,800+ chars): Expanded to cover post-exilic context,
eight night visions, messianic prophecies (humble king, pierced one),
two-part structure (chs 1-8 vs 9-14), and extensive NT quotations
- Philemon (1,090 → 3,600+ chars): Expanded to cover slavery in Roman
context, gospel doctrines (substitution, imputation, reconciliation),
Paul's pastoral diplomacy, gospel undermining slavery from within
All introductions now match the depth and comprehensiveness of other
major books (Genesis, Romans, John, Song of Solomon, etc.)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed two issues:
- Replaced unescaped straight double quotes with single quotes in "I wills"
- Fixed typo: "cunningbut" → "cunning but"
JSON now validates correctly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Significantly expand 10 key theological sections with comprehensive,
multi-paragraph descriptions:
Major expansions:
- Demons Are Real: 4 paragraphs on reality of spiritual beings
- Origin of Demons: 4 paragraphs on fallen angels
- Demonic Hierarchy: 4 paragraphs on organized evil
- Names of Satan: 4 paragraphs on devil's titles and meanings
- Satan's Fall: 4 paragraphs on pride and rebellion
- Satan's Limitations: 4 paragraphs on defeated foe under God's sovereignty
- Binding the Strong Man: 4 paragraphs on plundering Satan's kingdom
- The Armor of God: 4 paragraphs on spiritual warfare equipment
- Demonic Deception: 4 paragraphs on wolves in sheep's clothing
- The Lake of Fire: 4 paragraphs on everlasting punishment
Each section now includes:
- Deeper theological exposition
- More biblical cross-references and connections
- Practical applications for believers
- Original language insights where relevant
- Historical and eschatological context
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace "Reformed understanding" with direct teaching statement:
- "This anticipates the Reformed understanding that even repentance is God's gift"
- → "This teaches that even repentance is God's gift"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace 5 additional instances that used "Reformed tradition," "Reformed faith,"
and "Reformed worship":
- Bibliology introduction: "The Reformed tradition holds" → "Scripture is"
- Divine Existence: "The Reformed faith confesses" → direct statement
- Middle Knowledge Rejected: "The Reformed tradition rejects" → passive voice
- Regulative Principle: "The Reformed tradition holds" → direct statement
- Word and Sacrament: "Reformed worship" → "biblical worship"
Note: "reformed governments" on line 1563 uses "reformed" as a verb
(meaning "changed"), not as theological terminology, so it remains unchanged.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace all 12 instances of "Reformed theology" with alternative phrasing that
preserves the theological substance while removing the explicit label:
- Introduction sections: Use "Scripture teaches/emphasizes"
- Verbal Plenary Inspiration: "Historic Christian orthodoxy confesses"
- Scripture and Tradition: Remove attribution, state doctrine directly
- Compatibilism: "Scripture affirms"
- Cessation Question: State position directly
- No Sinless Perfection: "Scripture uniformly rejects"
- Simul Justus et Peccator: "This biblical truth"
Also includes previously staged template changes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Introduced new routes for systematic theology topics including Bibliology, Theology Proper, Anthropology, Hamartiology, Providence, Grace, Justification, Sanctification, Law and Gospel, and Worship.
- Each topic includes HTML and PDF endpoints for resource index and detail pages.
- Updated the resources page to include descriptions and counts for the new theology topics.
Add extensive theological analysis, key themes, verses with significance,
and practical applications for in-depth Bible study.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Apply markdown filter to Literary Style section to properly render
bold text and other markdown formatting. Makes it consistent with
other sections like Theological Significance.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Genesis, Exodus, Leviticus, Numbers, Deuteronomy fully expanded
- Each book now includes: multi-paragraph introductions, key themes with
descriptions, key verses with significance, detailed outlines, historical
context, literary style, theological significance, Christ in book,
relationship to NT, and practical application
- Update book.html template to handle new data structure
- Add markdown filter for bold text conversion
- Template now supports both old and new data formats
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create books.py loader module with caching for book data
- Add JSON files for each book with introduction, themes, key verses,
outline, historical context, literary style, Christ in book, and
practical application sections
- Update API routes to include book metadata and introduction data
- Update book.html template to display rich book content
- Template falls back to commentary data when book_intro unavailable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move interlinear_data.py.gz to data/interlinear.json.gz
- Simplify loader to read JSON directly (no more Python parsing)
- Reduced file size from 13.51 MB to 12.37 MB
- 31,031 verses of Hebrew/Greek interlinear data
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed Jonah and Daniel from Heroes of Faith (already in Prophets)
- Removed Still Small Voice from Elijah & Elisha (already in Kings)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
New stories added:
Miracles of Jesus (8 stories):
- Water into Wine, Calms the Storm, Feeds 5000
- Walks on Water, Heals Blind Man, Raises Lazarus
- Heals Ten Lepers, Heals Paralyzed Man
Elijah & Elisha (7 stories):
- Elijah and the Ravens, Widow's Oil
- Mount Carmel, Still Small Voice, Taken to Heaven
- Elisha and Widow's Oil, Naaman Healed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move data from Python modules to JSON in data/ directory:
- verse_collections.json, topics.json, biographies.json
- cross_references.json, reading_plans.json, resources.json
- Update Python modules to load from JSON at import
- Remove intermediary Python data files from data/
- Move stories.py loader to main module directory
- Add Heroes of Faith Bible stories (Job, Ruth, Esther, Jonah, Daniel, Shadrach/Meshach/Abednego)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add WeasyPrint dependency and system libs to Docker image
- Create PDF templates for adult and kids stories
- Add /stories/{slug}/pdf and /stories/{slug}/kids/pdf routes
- Add Download PDF button to story pages
- Add stories API endpoints: /api/stories and /api/stories/{slug}
- Gracefully handle missing WeasyPrint system libraries
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add newthought styling for first paragraph (small caps leading words)
- Add * * * divider between header/meta and narrative
- Add print styles for cleaner PDF output
- Applies to both adult and kids story templates
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>