Commit Graph

594 Commits

Author SHA1 Message Date
kennethreitz cd98795c58 Add comprehensive red letter edition with 2,017 verses
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>
2025-11-28 15:07:51 -05:00
kennethreitz 1a4f6150e4 Improve red letter edition to highlight only Christ's spoken words
Updated the red letter functionality to wrap only the specific words
Jesus spoke within each verse, rather than entire verses. This provides
more accurate red letter highlighting similar to traditional red letter Bibles.

Changes:
- Modified red_letter.py to search for and wrap only Christ's words
- Updated JSON structure to store actual quoted text
- Changed filter to handle both full verses and partial quotes
- Improved accuracy of red letter highlighting

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 15:00:41 -05:00
kennethreitz 099dc253e0 Add comprehensive Revelation commentary and red letter edition support
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>
2025-11-28 14:58:19 -05:00
kennethreitz 2806e1967d Remove Search link from family tree person page
Removed redundant Search link from the navigation section at the bottom
of individual person pages in the family tree.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 14:50:05 -05:00
kennethreitz bcce224700 Add comprehensive verse commentary covering all 66 books
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>
2025-11-28 14:41:31 -05:00
kennethreitz f6b5cc54bc Fix help cursor (?) appearing on verse numbers
Change verse number links to use pointer cursor instead of help cursor.
The help cursor (?) is now only shown on verse reference links that
have tooltips, not on the verse numbers themselves in chapter view.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:10:05 -05:00
kennethreitz e40c60e200 Fix sidenote markers appearing over verse numbers
Add CSS to properly space and reset sidenote counters for each verse.
Prevents sidenote numbers from overlapping or appearing too close to
verse numbers.

Changes:
- Add margin to sidenote labels that follow verse numbers
- Reset sidenote counter for each verse paragraph
- Ensures clean numbering within each verse

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:09:20 -05:00
kennethreitz d7b0b118f2 Add comprehensive verse commentary (2,076 verses)
Generated detailed theological commentary for:
- Complete Pauline Epistles (2,033 verses) - Romans through Philemon
- Torah samples (12 verses) - Genesis 1-3 key passages
- Wisdom samples (12 verses) - Psalms 1, 23
- Gospel samples (5 verses) - John, Matthew, Luke

Each entry includes:
- Theological analysis and explanation
- Historical and cultural context
- Practical application for modern readers
- 2-3 reflection questions

Expanded commentary database from 26 to 2,076 verses (79x increase).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 13:06:26 -05:00
kennethreitz 96ccd613fa Add visual indicator for verses with enhanced commentary
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>
2025-11-28 13:01:32 -05:00
kennethreitz b7b584d9ea Remove orphaned commentary routes and sitemap entries
Converted orphaned commentary pages to 301 redirects:
- /book/{book}/commentary → /book/{book}
- /commentary/{book}/{chapter} → /book/{book}/chapter/{chapter}

Removed commentary URLs from sitemap since content is now integrated into regular verse pages. Commentary data and functions preserved as they're actively used on verse pages.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 12:40:39 -05:00
kennethreitz 1e1d561c26 Add Open Graph image for better social media previews
Created a clean, Tufte-style og-image.png (1200x630) featuring "KJV Study" branding. This eliminates the 404 spam in logs from bots and social media crawlers trying to fetch the missing image, and provides proper preview images when the site is shared on social media platforms.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 12:23:21 -05:00
kennethreitz 7987f9db81 Increase font size of topic subtitle in PDF
The topic description/subtitle now displays at 14pt instead of inheriting the body's 11pt, making it more prominent and easier to read.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 10:15:40 -05:00
kennethreitz 217302c986 Remove overview border, keep verse borders in topic pages
Removed the border from topic overview sections for a cleaner look,
but kept the left border on verse items for visual hierarchy.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 10:10:20 -05:00
kennethreitz 066908d3e3 Remove blockquote-style borders from topic pages
Removed left borders from topic overview and verse items for a
cleaner, less cluttered design.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 09:55:22 -05:00
kennethreitz 723b90f521 Simplify bot logging to just show bot name
Changed from "[BOT] googlebot - GET /path" to just "[BOT] googlebot"
for cleaner, more concise logs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:43:32 -05:00
kennethreitz 711b3558a8 Add smart bot detection logging
Only logs requests from known bots/crawlers (Googlebot, PerplexityBot,
AmazonBot, etc.) while staying silent for regular user traffic. Helps
track SEO crawler activity without cluttering logs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:37:30 -05:00
kennethreitz 83462bb4a4 Remove User-Agent logging middleware
User-Agent logging served its diagnostic purpose. Removing to
reduce log noise and improve performance.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:19:08 -05:00
kennethreitz 87ebece068 Remove og:image meta tags to fix 404 errors
Removed Open Graph and Twitter Card image meta tags that were
referencing a non-existent og-image.png file. This was causing
404 errors on every page load and wasting bandwidth.

Changed Twitter card type from summary_large_image to summary.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:09:39 -05:00
kennethreitz 0aa5de0a85 Add User-Agent logging middleware
Adds middleware to log the User-Agent header for each incoming request
to help understand what clients are accessing the site (browsers, bots,
search engines, etc.).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 01:05:07 -05:00
kennethreitz 1499110341 Make worker count configurable via WORKERS environment variable
- Read worker count from WORKERS env var (default: 4)
- Set WORKERS=4 in fly.toml for production
- Allows tuning worker count without code changes
- Can adjust via fly secrets set WORKERS=X
2025-11-28 00:50:57 -05:00
kennethreitz 1b7166b8af Add 4 workers to fully utilize performance CPUs and RAM
- Increase from 1 to 4 Uvicorn workers
- Better utilizes 2 CPU cores and 4GB RAM
- Improves concurrent request handling 4x
- Each worker ~200-400MB, leaves plenty of headroom for caching
2025-11-28 00:49:19 -05:00
kennethreitz 66eabe3ac1 Add comprehensive Mental Health topic with biblical guidance
- 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
2025-11-27 22:31:20 -05:00
kennethreitz c5e71d652e Add meta description tags to all major page templates
- Add description blocks to verse, chapter, book, and study guide templates
- Include "KJV" in descriptions for better SEO (commonly searched term)
- Verse pages now show verse text in description (155 chars)
- Chapter pages show book/chapter info with first verse excerpt
- Book pages include book introduction excerpt when available
- Homepage and other index pages have descriptive meta tags
- All templates now have proper SEO-friendly meta descriptions

Verified all other resource templates already had descriptions.
All tests passing (268 passed, 1 skipped).

🤖 Generated with Claude Code
https://claude.com/claude-code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 22:16:17 -05:00
kennethreitz 3493c43144 Fix verse sitemap generation - suppress WeasyPrint warnings
The sitemap-verses.xml file was contaminated with WeasyPrint import
warnings, causing "Document is empty" errors in Google Search Console.

Fixes:
- Suppress stdout/stderr during imports to prevent warnings in output
- Add error handling to sitemap-verses endpoint
- Regenerate clean sitemap-verses.xml (6.3MB, 31,102 verses)

The file now starts with proper XML declaration instead of error messages.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:37:34 -05:00
kennethreitz e931dae83f Implement static verse sitemap for maximum SEO discoverability
Previously, verse URLs (31,102 pages) were excluded from the sitemap
to improve generation speed. This left SEO value on the table - Google
prioritizes URLs in sitemaps for crawling, and verse pages are 3-4
clicks deep, making discovery slow.

Solution: Static sitemap + sitemap index
-----------------------------------------
- Created generate_verse_sitemap.py to generate verse sitemap once
- Generated sitemap-verses.xml (6 MB, 31,102 verse URLs)
- Converted /sitemap.xml to a sitemap index
- Split into sitemap-main.xml (dynamic) and sitemap-verses.xml (static)

Benefits:
---------
- Zero runtime cost for verse sitemap (served as static file)
- Full SEO coverage of all 31k verse pages
- Google gets complete URL list immediately
- Main sitemap stays fast (no verse URL generation)
- CDN can cache verse sitemap indefinitely

Why this works:
---------------
Verse URLs are completely static - Genesis 1:1 will always be at the
same URL. The Bible hasn't changed in 2000+ years, so these URLs
never change. Generate once, commit to repo, infinite caching.

This trades "optimize build speed" for "optimize discoverability."
Build speed is a one-time cost; search rankings compound over time.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:22:39 -05:00
kennethreitz 3dc1bd9d9d Remove redundant Search card from Study Resources section
The homepage already features a prominent search box at the top
("Search or Navigate Scripture"), so including a separate Search
card in the Study Resources section below is redundant.

Study Resources now contains 6 cards instead of 7.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 19:04:36 -05:00
kennethreitz 83a3793174 Update schemas README with book introduction documentation
- 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>
2025-11-27 18:45:30 -05:00
kennethreitz c226c4bbbf Add JSON schema validation for 66 book introduction files
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>
2025-11-27 18:42:20 -05:00
kennethreitz 8a03d22b9a Add JSON schema validation with Pydantic
- 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>
2025-11-27 18:34:44 -05:00
kennethreitz 222fcf2717 Add comprehensive README for data directory
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>
2025-11-27 18:22:38 -05:00
kennethreitz df67749532 Migrate hardcoded data to JSON files for better maintainability
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>
2025-11-27 18:10:40 -05:00
kennethreitz 498b191afa Migrate hardcoded data to JSON files for better maintainability
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>
2025-11-27 17:45:26 -05:00
kennethreitz d79bef1e25 Remove explicit Reformed theology references from prophets
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>
2025-11-27 17:41:29 -05:00
kennethreitz d4c364eb05 Optimize backend performance with caching and thread safety
Pre-process verse text cleaning once at initialization (5-10x speedup for iteration), fix SQLite connection thread safety for concurrent requests, and add LRU caching to frequently-called functions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 17:33:53 -05:00
kennethreitz a47b1ccf40 Add contextual sidenotes to complete Phase 1 resource coverage
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>
2025-11-27 17:24:14 -05:00
kennethreitz e0a24d46db Add sidenotes to biblical timeline for historical context
- 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>
2025-11-27 16:31:22 -05:00
kennethreitz c7e695ac1d Fix comparison table footnote to match traditional chronology
- Updated footnote to correctly state this timeline follows traditional conservative chronology
- Notes that gap-allowing is an alternative interpretation (not our approach)
- Maintains clarity that all chronologies agree from Assyrian period onward

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 16:23:09 -05:00
kennethreitz 55b0701d50 Improve biblical timeline layout and readability
- Move Table of Contents above introduction paragraph
- Increase intro paragraph font size from 1.05rem to 1.2rem for better readability
- Maintains consistent hierarchy: TOC first for navigation, then intro content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 15:04:34 -05:00
kennethreitz a6fc82e48e Update period headers to show explicit date ranges
- "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>
2025-11-27 15:03:04 -05:00
kennethreitz f09b2bf2f2 Update biblical timeline to traditional conservative chronology
- 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>
2025-11-27 15:02:06 -05:00
kennethreitz 047d6683dc Prominently highlight our timeline column in comparison table
- Add blue borders (#2196F3) on left and right of our timeline column
- Use blue background (#e6f3ff) throughout the column
- Bold font (700) and dark blue text (#0d47a1) for our dates
- Change header to "This Timeline" (primary) with "(Gap-Allowing)" subtitle
- De-emphasize other chronologies with grey text (#666)

Our timeline now clearly stands out as the primary chronology used.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:49:52 -05:00
kennethreitz e6929da719 Add comprehensive alternative date interpretations table
- Rename table to "Alternative Date Interpretations"
- Add introductory paragraph explaining chronological systems
- Include new "Note" column with context for each event
- Clarify column headers (Gap-Allowing, Ussher, Scofield)
- Add summary footnote explaining key methodological differences
- Increase table width to 85% for better readability

The enhanced table now explains WHY dates differ between systems
and notes where they converge (from Exodus onward).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:47:42 -05:00
kennethreitz 1b1ca25d3b Update chronology comparison table header
Change "Masoretic (Successor Method)" to "Masoretic (Gap-Allowing)"
to accurately reflect the gap-allowing interpretation described in
the chronology note.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:44:35 -05:00
kennethreitz 05eac75841 Move biblical timeline to JSON and add comprehensive chronology
- Create biblical_timeline.json with 10 comprehensive periods
- Update server.py to load timeline from JSON file
- Add introduction and conclusion sections to timeline
- Enhance chronology notes with detailed methodology explanation
- Include chronology comparison table (Masoretic, Ussher, Scofield)
- Update biblical_timeline.html to display introduction and conclusion
- All 252 tests passing

Timeline now covers:
- Primeval History (Creation – c. 2100 BC)
- Patriarchal Period (c. 2100 – 1800 BC)
- Egypt and Exodus (c. 1800 – 1400 BC)
- Conquest and Judges (c. 1406 – 1050 BC)
- United Kingdom (c. 1050 – 930 BC)
- Divided Kingdom (c. 930 – 586 BC)
- Exile and Return (586 – 400 BC)
- Intertestamental Period (c. 400 – 5 BC)
- Life of Christ (c. 5 BC – AD 30)
- Apostolic Age (AD 30 – c. 100)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:42:17 -05:00
kennethreitz 3df0e4d48a Add comprehensive ARIA labels and resource route tests
Accessibility Improvements:
- Add ARIA roles and labels to search.html (search form, results, status messages)
- Add ARIA landmarks to resource_detail.html (article, sections, navigation)
- Add ARIA landmarks to resource_index.html (TOC, sections, verse lists)
- Add aria-hidden to decorative SVG icons throughout templates
- Implement aria-labelledby for sectioning elements
- Add role="list" and role="listitem" for verse lists

Test Coverage:
- Create comprehensive test_resource_routes.py with 76 new tests
- Test 26+ resource index pages (angels, prophets, parables, etc.)
- Test systematic theology routes (trinity, christology, soteriology, etc.)
- Test special topic routes (messianic prophecies, types/shadows, etc.)
- Test doctrinal routes (grace, justification, sanctification, etc.)
- Test detail pages and 404 handling for invalid slugs
- Test HTML structure and content types

All 252 tests passing (up from 176). Improved WCAG 2.1 compliance.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 14:24:36 -05:00
kennethreitz 23737d8cd3 Add comprehensive ARIA roles and labels for accessibility
Improved screen reader support and accessibility compliance by adding:

**Landmark Roles:**
- Added role="main" to main article content area
- Added role="navigation" to primary sidebar navigation
- Added role="search" to search component

**ARIA Labels:**
- Added aria-label="Primary navigation" to nav sidebar
- Added aria-label="Breadcrumb" to breadcrumb navigation
- Added aria-label="Search Bible, topics, and resources" to search input
- Added aria-label="Toggle navigation sidebar" to sidebar toggle
- Added aria-label="Toggle dark mode" to dark mode button
- Added descriptive aria-labels to all collapsible sections (Old/New Testament, Daily Reading, Study Resources, Reference Tools)

**ARIA States:**
- Added aria-expanded to all summary elements in collapsible sections
- Added aria-live="polite" to search results dropdown for dynamic updates
- Added aria-hidden="true" to decorative checkbox input
- Added role="listbox" to search dropdown for proper semantics

**Impact:**
- Screen readers can now properly identify page structure and landmarks
- Users can navigate directly to main content, navigation, or search
- Collapsible sections announce their state (expanded/collapsed)
- Search results are announced to screen readers as they update
- Significantly improved WCAG 2.1 compliance

All 43 web route tests pass. No functional changes to the site.
2025-11-27 14:07:14 -05:00
kennethreitz c0a5155390 Add inline Greek and Hebrew words to Genesis introduction
- Added Greek γένεσις (genesis) with translation
- Added Hebrew בְּרֵאשִׁית (Bereshith) with translation
- Provides readers with original language context for the book's titles
2025-11-27 13:01:53 -05:00
kennethreitz 308345ee0e Update Genesis book data with comprehensive theological content
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.
2025-11-27 12:59:16 -05:00
kennethreitz 5a1051e8a7 Add family tree ancestors and descendants templates
Created two new templates to complete the family tree navigation:

- family_tree_ancestors.html: Displays recursive ancestor tree
- family_tree_descendants.html: Displays recursive descendant tree

Features:
- Recursive Jinja2 macros for tree rendering
- Clean hierarchical display with indentation
- Generation metadata for each person
- Navigation links back to person pages
- Tufte CSS styling consistent with site design

Also added navigation links from person detail pages:
- "View Ancestors" link (shown when person has parents)
- "View Descendants" link (shown when person has children)

Test updates:
- Enabled 4 previously skipped tests (now all 45 tests passing)
- Total test suite: 176 tests passing (up from 172)

All family tree routes now fully functional with complete template coverage.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 12:51:50 -05:00
kennethreitz 44d3b0ca82 Fix critical sitemap performance issues (SEO fix)
CRITICAL: Sitemap was taking 10-30+ seconds to generate, timing out
for Google crawlers and breaking SEO indexing.

Issues fixed:
1. Replace O(n) chapter filtering with cached get_chapters_for_book()
   - Was iterating all chapters for each of 66 books
2. Remove individual verse URLs (31,102 URLs) from sitemap
   - Reduces sitemap from ~33,000 URLs to ~2,000 URLs
   - Stays well under Google's 50,000 URL recommendation
   - Verse pages still discoverable via internal links
   - Dramatically improves generation speed

Expected improvement: 50-100x faster sitemap generation
New generation time: <100ms (was 10-30+ seconds)

This fixes Google Search Console indexing issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 12:12:27 -05:00