Commit Graph

716 Commits

Author SHA1 Message Date
kennethreitz 999265e90e Add 5 new API endpoints with comprehensive tests
New Endpoints:
1. GET /api/verse/random - Random verse with OT/NT/book filtering
2. GET /api/commentary/{book}/{chapter}/{verse} - AI-generated verse commentary
3. GET /api/chapter-commentary/{book}/{chapter} - Chapter explanations
4. POST /api/verses/bulk - Bulk verse lookup
5. GET /api/family-tree - List biblical figures
6. GET /api/family-tree/{name} - Get biography with alias support

Features:
- Random verse supports testament (ot/nt) and book filters
- Commentary includes analysis, historical context, and reflection questions
- Chapter commentary provides context for each chapter
- Bulk lookup handles multiple verse references in one request
- Family tree supports name aliases (e.g., Israel → Jacob)
- All endpoints include comprehensive OpenAPI documentation

Tests:
- Added 19 new tests (78 total, all passing)
- Test coverage for all new endpoints
- Edge case handling (invalid inputs, 404s, etc.)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:46:33 -05:00
kennethreitz 87a85c979c Add red letter (words of Christ) API endpoints
- Added /api/red-letter endpoint for listing all verses where Jesus speaks
  - Supports filtering by book
  - Includes pagination (limit/offset)
  - Returns verse text, reference, and whether full or partial

- Added /api/red-letter/stats endpoint for statistics
  - Total count of red letter verses
  - Breakdown by full vs partial verses
  - Count by book
  - List of books containing red letter verses

- Added 8 comprehensive tests (59 total tests now)
- All tests passing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:40:22 -05:00
kennethreitz 94a8801251 Add Swagger UI defaults and enable JSON file watching in Docker
- Updated all API endpoint parameters to use `example` instead of `examples` for better Swagger UI experience
- Parameters now pre-fill with reasonable defaults when testing endpoints in /api/docs
- Added --reload and --reload-include '*.json' flags to docker-compose for auto-reload on JSON changes
- Included commentary-generator agent configuration for AI-powered verse commentary

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:37:04 -05:00
kennethreitz 2776aa984a Add PDF export and comprehensive tests for Resources API
New features:
- PDF export endpoints for resources
  * GET /api/resources/{category}/pdf - Category PDF
  * GET /api/resources/{category}/{slug}/pdf - Item PDF
  * Proper error handling (404 before 503)
  * Uses existing resource_detail_pdf.html templates

- Add html_url field to resource categories
  * Provides web URL in addition to API URL
  * Format: /biblical-locations (kebab-case)
  * Helps clients link to HTML pages

Comprehensive test coverage (12 new tests):
- test_list_all_resources - List all 39 categories
- test_get_resource_category - Get category items
- test_get_resource_category_biblical_locations - Nested structures
- test_get_resource_item - Get specific item with verses
- test_get_resource_item_from_different_categories - Multiple types
- test_get_nonexistent_resource_category - 404 handling
- test_get_nonexistent_resource_item - Item 404
- test_resource_category_pdf - PDF generation
- test_resource_item_pdf - Item PDF
- test_resource_pdf_nonexistent_category - PDF 404
- test_resource_pdf_nonexistent_item - Item PDF 404
- test_all_resource_categories_accessible - All categories work

All 51 API tests passing (was 39, added 12).

Note: PDF route ordering with FastAPI path matching is documented
in tests. More specific routes should ideally come before general ones.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:32:48 -05:00
kennethreitz fb506d49cc Add comprehensive Resources API endpoints
New endpoints:
- GET /api/resources - List all 39 resource categories
- GET /api/resources/{category} - Get all items in a category
- GET /api/resources/{category}/{slug} - Get specific resource details

Features:
- Pydantic response models with OpenAPI documentation
- Complete examples in Swagger UI
- Support for all 39 resource categories:
  * Biblical locations (Old/New Testament)
  * Angels, Prophets, Apostles, Women of the Bible
  * Parables, Miracles, Prayers, Beatitudes
  * Names of God, Names of Christ, I AM Statements
  * Theological resources (Trinity, Christology, Soteriology, etc.)
  * Systematic theology (Bibliology, Pneumatology, Eschatology, etc.)
  * Armor of God, Ten Commandments, Fruits of the Spirit
  * Covenants, Festivals, Types & Shadows, Messianic Prophecies
  * And many more...

Technical implementation:
- Handles nested resource structures (e.g., biblical_locations with OT/NT subcategories)
- Recursive slug-based search for flexible data access
- Full verse references included with each resource item
- Comprehensive category metadata (item counts, URLs)
- Clean JSON responses with proper field descriptions

All existing tests pass - no breaking changes.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:28:31 -05:00
kennethreitz 63ced29b6b Add red letter (words of Christ) to API verse endpoints
- Add red_letter field to all verse API responses
  * /api/verse/{book}/{chapter}/{verse} - single verse
  * /api/verse-range/{book}/{chapter}/{start}/{end} - verse ranges
  * /api/verse-of-the-day - daily verse

Red letter field values:
  * null - Jesus doesn't speak in this verse
  * "full" - entire verse is Jesus speaking (e.g., John 3:16)
  * "quoted text" - partial verse with exact words Jesus spoke

- Add Pydantic response models for OpenAPI documentation
  * VerseResponse - single verse with red_letter field
  * VerseRangeResponse - verse range with red_letter per verse
  * DailyVerseResponse - daily verse with red_letter
  * Includes comprehensive examples showing all red letter scenarios

- Enhance OpenAPI/Swagger documentation
  * Add detailed response examples for each endpoint
  * Multiple example scenarios (Jesus speaking, not speaking, partial)
  * Improved parameter descriptions with validation (ge=1)
  * Better endpoint summaries and descriptions

- Add comprehensive test coverage for red letter feature
  * test_red_letter_full_verse - Jesus speaks entire verse
  * test_red_letter_partial_verse - Jesus speaks part of verse
  * test_red_letter_no_words - Jesus doesn't speak
  * test_red_letter_verse_range_with_christ_words - range test
  * Update existing tests to verify red_letter field presence

All 39 API tests pass with no warnings.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:23:02 -05:00
kennethreitz 508bcd7c7c Add biography aliases and Malachi 3:6 commentary
- Add comprehensive name aliases for 19 biblical figures
  Resolves issue where GEDCOM compound names (e.g., "Jacob or Israel")
  couldn't find biographies stored under single names (e.g., "Jacob")

  Added aliases for: Jacob/Israel, Abraham/Abram, Judah/Juda/Judas,
  Boaz/Booz, Shem/Sem, Tamar/Thamar, Methuselah/Mathusala,
  Bathsheba/Bathshua, Caleb/Chelubai, Enoch/Henoch, Jared/Jered,
  Jehoshaphat/Josaphat, Joram/Jehoram, Nahor/Nachor, Peleg/Phalec,
  Rehoboam/Roboam, Terah/Thara, Eber/Heber, Cainan/Kenan, Adah/Bashemath

- Add AI-generated commentary for Malachi 3:6
  Explores divine immutability, covenant faithfulness, and God's
  unchanging character as foundation for Israel's preservation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:16:16 -05:00
kennethreitz ee89209da6 Add AI-generated commentary for Malachi 3:1
Generated using commentary-generator agent with Reformed theological perspective.

Commentary includes:
- Deep theological analysis with Hebrew text and transliteration
- Messianic prophecy exposition (John the Baptist and Jesus)
- Post-exilic historical context
- Cross-references to NT fulfillment passages
- Practical application questions

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 13:02:37 -05:00
kennethreitz d38ec3044c Add biblical commentary generation agent
- Create Claude Agent SDK agent for generating verse commentary
- Define quality standards matching existing commentary (1 Timothy 2:5)
- Include comprehensive specification document
- Agent generates JSON with analysis, historical context, and questions
- Reformed/evangelical theological perspective with original language analysis

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 12:58:12 -05:00
kennethreitz 6df09c7665 Suppress WeasyPrint stdout/stderr noise during import
WeasyPrint outputs logging messages to stdout/stderr when imported,
which pollutes the console output. This change temporarily redirects
stdout/stderr to /dev/null during the import, then restores them.

Changes:
- Added sys and os imports
- Wrapped WeasyPrint import with stdout/stderr suppression
- Properly restore stdout/stderr in finally block

Result: Clean import with no console noise

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 12:52:21 -05:00
kennethreitz 98c53b6025 Remove redundant pauline_commentary.json
The verse_commentary.json already contains extensive high-quality commentary
on all Pauline epistles with superior analysis. The pauline_commentary.json
was redundant and of lower quality.

Current Pauline coverage in verse_commentary.json:
- Complete: Romans, 1-2 Corinthians, Galatians, Ephesians, Philippians,
  Colossians, 1-2 Thessalonians, 1-2 Timothy, Titus, Philemon
- All key verses already covered with detailed theological analysis

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 12:50:52 -05:00
kennethreitz 7acb2f6981 Move red_letter_verses.schema.json to schemas directory
Organize schema files:
- Moved red_letter_verses.schema.json to schemas/ directory
- Updated README.md references to point to new location (schemas/red_letter_verses.schema.json)
- Maintains consistency with other schema files (all now in schemas/ directory)

The validation script (scripts/validate_data.py) already uses the schemas/ directory, so no code changes needed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 12:34:05 -05:00
kennethreitz f53993c33a Add 23 more biographies for notable biblical figures
Added biographies for:
- Women: Naamah, Asenath, Ahinoam, Abigail, Abital, Eglah, Haggith, Adah, Zillah, Hagar, Keturah (11 total)
- Early Patriarchs: Terah, Nahor, Eber, Peleg, Cainan, Jared, Ham, Japheth, Lamech (9 total)
- Kings: Rehoboam, Asa (2 total)
- Other: Korah (1 total)

Each biography includes summary, significance, and key events with verse references.
Total biographies: 122 (was 99)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 12:22:35 -05:00
kennethreitz 858cb4eed1 Add biographies for 36 biblical figures from family tree
Added comprehensive biographies for significant people in the GEDCOM family tree who were missing entries:
- Patriarchal family: Benjamin, Reuben, Simeon, Dan, Naphtali, Gad, Asher, Issachar, Zebulun, Dinah, Bilhah, Zilpah, Laban
- Joseph's sons: Manasseh, Ephraim
- David's family: Absalom, Amnon, Adonijah, Tamar, Nathan, Joab, Abishai, Abinadab, Eliab, Shimma
- Kings of Judah: Jehoshaphat, Joram, Ahaziah, Amaziah, Azariah, Jotham, Ahaz, Amon, Jehoiakim, Jeconiah, Zedekiah

Each biography includes summary, significance, and key events with verse references.
Total biographies: 99 (was 63)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 12:06:53 -05:00
kennethreitz 4ec825669d Manually fix remaining 33 red letter verses
Fixed all remaining verses with complex narrative structures:
- 27 verses updated with correct spoken words only
- 6 verses removed (not Jesus speaking or too complex):
  • Mark 16:7 (angel speaking)
  • Luke 9:33 (Peter speaking)
  • Luke 13:23 (answer continues in v24)
  • Luke 15:17 (prodigal son speaking)
  • Luke 18:4 (unjust judge in parable)
  • John 21:15 (mixed dialog, too complex)

Examples of fixes:
- Matthew 16:8: "Which when Jesus perceived, he said unto them," → black
  Only "O ye of little faith..." → red
- John 8:10: "When Jesus had lifted up himself, and saw none but the woman, he said unto her," → black
  Only "Woman, where are those thine accusers?..." → red
- John 19:30: "When Jesus therefore had received the vinegar, he said," → black
  Only "It is finished:" → red
- Luke 22:52: Narrative intro → black, "Be ye come out..." → red

Total red letter fixes this session:
- 48 verses fixed automatically
- 33 verses fixed manually
- 81 verses total corrected ✓

Red letter edition is now accurate across all Gospels!

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 02:31:05 -05:00
kennethreitz d56a2ea243 Fix red letter edition narrative text issue
Fixed 48 verses where narrative introductions (like "Jesus answered them,")
were incorrectly marked in red. Only Christ's actual spoken words should be red.

Automatically fixed verses including:
- John 8:34: "Jesus answered them," → now in black
- John 8:19, 8:49, 8:54: "Jesus answered," → now in black
- Matthew 11:25, 12:39, 15:3, 15:13, 17:22, 17:26, 21:30, 21:31, 25:12, 26:10
- Mark 12:29, Luke 4:4, John 5:17, 6:70, 7:16, 10:25, 10:32, 10:34, 13:8
- And 29 more verses across Matthew, Mark, Luke, and John

Added script: scripts/fix_red_letter_narrative.py
- Automatically extracts spoken words from narrative text
- Uses regex patterns to identify narrative introductions
- 48 verses fixed, 33 remaining for manual review

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 02:28:11 -05:00
kennethreitz 5196b53245 Remove link from Greek and Hebrew text line in README
Keep descriptive text but remove hyperlink as requested.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 01:33:31 -05:00
kennethreitz 7dae118c3e Add 118 comprehensive verse commentaries
Large batch spanning entire Bible:

Pentateuch: Deuteronomy 1:5, 3:24, 7:6, 18:2, 33:25, 34:6
Numbers 3:41, 10:15, 16:2, 30:3, 33:1, 33:9, 35:34

History: Joshua 8:22, 9:21, 10:10, 13:10, 22:13, 24:5
Judges 19:21; Ezra 2:68, 4:5, 10:32, 10:40; Esther 8:11

Wisdom & Poetry: Job 5:23, 7:17, 10:11, 11:10, 16:4, 18:14, 20:6, 33:24
Psalms 6:9, 31:6, 44:21, 49:9, 49:10, 58:8, 86:6, 89:30, 105:1, 107:16,
107:40, 109:20, 109:26, 113:9, 136:8, 141:6
Proverbs 1:24, 3:4, 4:22, 10:23, 16:6, 27:6, 30:25
Ecclesiastes 1:15, 9:7; Lamentations 5:12

Prophets: Isaiah 24:19, 52:8, 66:7; Jeremiah 6:29, 9:20, 17:21, 23:15,
28:4, 29:32, 32:10, 36:3; Ezekiel 3:7, 7:12, 16:39, 19:5, 20:39, 20:49,
27:17, 33:31, 37:23, 40:33, 42:12; Daniel 2:18, 2:38, 4:5, 12:8
Hosea 11:7; Micah 3:4; Nahum 1:5, 3:7; Zephaniah 3:1; Zechariah 1:5, 11:16

Gospels: Matthew 12:28, 18:2, 24:50, 27:7
Mark 4:35, 10:50, 15:35; Luke 12:31, 14:19, 15:24, 18:9, 18:26, 23:18,
23:27, 23:29; John 13:18, 19:10, 20:7

Acts: 8:8, 15:17, 18:24, 19:35, 22:6, 27:38, 27:42

Epistles: Hebrews 2:4

Each with deep theological analysis, Hebrew/Greek word studies,
historical context, and 5 reflection questions.

Coverage: ~40.5% of Bible (12,200+ verses)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 01:31:59 -05:00
kennethreitz 1f5a237695 Add 98 comprehensive verse commentaries across Bible
Large-scale commentary addition spanning both testaments:

Pentateuch & History: Deuteronomy 3:9, 4:10, 11:21, 16:19, 22:29, 28:32, 30:7
Joshua 4:2, 10:13, 10:36, 19:36, 22:19; Judges 8:14, 19:9
Numbers 3:17, 15:3, 16:31, 18:24, 27:4, 33:48; Ezra 2:5, 10:20

Wisdom & Poetry: Job 2:13, 5:13, 10:15, 12:1, 14:6, 16:19, 17:2, 20:2, 37:1
Psalms 18:31, 22:12, 24:1, 34:15, 38:20, 44:11, 48:1, 78:48, 81:14, 119:85,
119:100, 137:8, 144:11; Proverbs 2:18, 4:11, 10:5, 13:24, 20:21
Ecclesiastes 2:20, 8:17, 10:14; Song of Solomon 1:11, 5:13

Prophets: Isaiah 1:14, 26:21, 37:1, 47:11, 48:6, 57:15
Jeremiah 9:23, 14:9, 22:3, 31:13, 36:25, 49:13
Ezekiel 4:14, 5:6, 7:27, 13:6, 14:18, 18:22, 27:28, 34:10, 34:14, 36:7, 38:3, 40:49
Daniel 9:24; Hosea 8:9; Jonah 1:7, 1:11; Micah 5:1; Nahum 3:15; Amos 4:10
Zechariah 9:12

Gospels & Acts: Matthew 1:5, 8:24, 8:34, 21:12, 23:7; Mark 14:25
Luke 6:19, 8:23, 8:24, 10:26, 12:19, 24:26
John 4:24, 6:56, 11:25, 13:37, 14:24, 17:12, 18:40, 19:15, 20:12
Acts 2:40, 4:5, 4:27, 9:18, 9:42, 11:5, 14:25, 15:20, 20:12, 21:29, 22:4, 22:24, 26:27

Epistles: Hebrews 2:15, 9:3, 12:16; 1 John 4:11

Each with deep theological analysis, Hebrew/Greek word studies,
historical context, and 5 reflection questions.

Coverage: ~40% of Bible (12,100+ verses)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 01:13:35 -05:00
kennethreitz d705791ea9 Update README with prominent Docker quick start
Changes:
- Add "Quick Start - Run It Yourself" section at top
- Feature docker compose up as the easiest way to run locally
- Streamline Installation section with Docker as recommended
- Reorganize for better developer experience
- Remove redundant Docker instructions

Makes it immediately clear how to run the project locally.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 01:11:57 -05:00
kennethreitz 3abcac4ce3 Add 36 more diverse verse commentaries
Added comprehensive commentary spanning OT and NT:

New Testament: John 4:24, 13:37; 1 John 4:11; Hebrews 4:5, 11:16;
Acts 4:35, 11:1, 28:29; Luke 6:19; Mark 6:21, 12:19, 12:41, 14:23, 15:12

Psalms: 55:14, 72:10, 94:20, 119:26

Wisdom: Proverbs 3:11, 20:10; Job 17:2; Ecclesiastes 8:17

Prophets: Isaiah 54:8; Jeremiah 25:12; Ezekiel 18:15, 21:2, 26:19;
Hosea 13:16; Lamentations 3:46; Malachi 2:1

Law/History: Joshua 15:53, 19:3, 23:16; Numbers 21:10, 22:20; Ezra 8:14

Each with deep theological analysis, Hebrew/Greek word studies,
historical context, and 5 reflection questions.

Coverage: ~39.1% of Bible

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 21:50:03 -05:00
kennethreitz 8cc61f5465 Add 36 diverse verse commentaries across multiple books
Added comprehensive commentary for 36 verses spanning Old and New Testament:

Psalms: 36:6, 50:11
Isaiah: 13:9, 24:6, 26:18, 46:8, 51:15
Jeremiah: 14:4, 22:23, 25:38
Ezekiel: 19:11, 20:26
Zechariah: 8:2
Proverbs: 1:20
Job: 34:17, 40:11
Ecclesiastes: 9:1
Matthew: 20:1
Luke: 23:12
John: 5:44, 5:45
Acts: 8:6, 28:27
Hebrews: 13:11
1 John: 5:2
Deuteronomy: 18:21, 25:3, 26:10, 29:28
Judges: 18:27
Numbers: 4:43, 7:68, 15:7, 16:5, 26:45
Esther: 9:10

Each entry includes:
- Deep theological analysis (150-200+ words)
- Hebrew/Greek word studies with transliterations
- Historical and cultural context (100-150+ words)
- 5 thoughtful reflection questions
- Proper HTML formatting for web display

Total commentary coverage now: ~39% of Bible (12,019+ verses)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 21:39:44 -05:00
kennethreitz 5d5fecf81a Add comprehensive commentary for top 100 Bible verses
Achieved 100% coverage of the top 100 most-read Bible verses through
parallel agent execution. Added 29+ new high-quality commentary entries.

Changes:
- Added Psalm commentary: 23:4, 18:2, 37:4, 55:22, 34:8, 56:3, 62:5-6,
  91:2, 103:2-3, and others
- Added Gospel commentary: Matthew 5:3-6, 5:16, 6:34, 7:8, 28:20
- Added Hebrews commentary: 12:1-2, 13:8
- Added Proverbs commentary: 4:23, 18:10
- Added Joshua commentary: 1:9, 24:15
- Added other key verses: John 8:32, 16:33, Isaiah 9:6

Each entry includes:
- Deep theological analysis (150-200+ words)
- Hebrew/Greek word studies with transliterations
- Historical and cultural context (100-150+ words)
- 5 thoughtful reflection questions
- Proper HTML formatting for web display

Total verse commentary entries: 12,000+

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 21:31:07 -05:00
kennethreitz d782378947 Remove chapter overview section from chapter pages
- Removed chapter overview HTML block and conditional rendering
- Removed .chapter-overview-divider CSS styling
- Removed JavaScript code that linked verse references in overview
- Streamlines chapter pages to focus on verse content

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:39:45 -05:00
kennethreitz 02f7f14a0f Add commentary for 24 high-priority verses via parallel agents
Used 12 parallel agents to systematically add comprehensive commentary for
top Bible verses missing substantive content.

Verses added:

Gospel & Salvation:
- Matthew 19:26 - With God all things are possible
- Luke 1:37 - Nothing shall be impossible with God

Comfort & Trust:
- Isaiah 40:31 - Renew their strength, mount up with wings as eagles
- Isaiah 41:10 - Fear not, for I am with thee
- Psalm 27:1 - The LORD is my light and salvation
- Psalm 37:4 - Delight thyself in the LORD
- Psalm 56:3 - What time I am afraid, I will trust in thee
- Psalm 103:12 - As far as east from west, removed our transgressions
- Psalm 118:24 - This is the day the LORD hath made
- Psalm 119:105 - Thy word is a lamp unto my feet
- Psalm 121:1-2 - I will lift up mine eyes unto the hills
- 1 Peter 5:7 - Casting all your care upon him

Guidance & Obedience:
- Proverbs 16:3 - Commit thy works unto the LORD
- Proverbs 22:6 - Train up a child in the way he should go
- Isaiah 26:3 - Thou wilt keep him in perfect peace
- Isaiah 53:6 - All we like sheep have gone astray

Prayer & Faith:
- Matthew 7:7 - Ask, seek, knock
- 1 Thessalonians 5:16-18 - Rejoice, pray, give thanks

Discipleship & Mission:
- Matthew 5:14 - Ye are the light of the world
- Matthew 22:37 - Greatest commandment (love God)
- Matthew 28:19 - Great Commission
- John 10:10 - I am come that they might have life abundantly
- John 14:27 - My peace I give unto you
- John 15:13 - Greater love hath no man than this

Total verses with commentary: 11,989 (up from 11,965)
Coverage of top 100 verses: 71% (71/100)

Each commentary includes deep theological analysis with original language
studies, historical/cultural context, and 5 reflection questions.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:35:37 -05:00
kennethreitz c675e320d7 Add missing commentary for Jeremiah 29:11, John 14:6, John 1:1
These 3 verses were not saved in the previous commit due to encoding error.
Now all 15 top Bible verses have comprehensive commentary.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:22:11 -05:00
kennethreitz 46928dacb7 Add comprehensive commentary for 15 top Bible verses
Added deep theological commentary with Greek/Hebrew word studies for:

Gospel & Salvation:
- Jeremiah 29:11 - God's plans for peace and hope
- John 14:6 - The way, truth, and life
- John 1:1 - The eternal Word made flesh
- John 3:3 - You must be born again
- Isaiah 53:5 - Suffering servant, wounded for our transgressions
- 1 John 1:9 - Confession and forgiveness

Psalms (Comfort & Trust):
- Psalm 23:1 - The LORD is my shepherd
- Psalm 46:1 - God our refuge and strength
- Psalm 91:1 - Dwelling in the secret place
- Psalm 139:14 - Fearfully and wonderfully made

Christian Living:
- Proverbs 3:5-6 - Trust in the LORD, not your own understanding
- Matthew 6:33 - Seek first the kingdom of God
- Matthew 11:28 - Come unto me, all who are weary
- Hebrews 11:1 - Definition of faith

Each commentary includes:
- Detailed analysis with original language study
- Historical and cultural context
- 5 reflection questions for application

Total verses with commentary now: 11,965 (up from 11,950)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:20:21 -05:00
kennethreitz 79f5ea890a Fix verse commentary validation and field names
- Update Pydantic model to match nested JSON structure (Book → Chapter → Verse)
- Rename field: historical_context → historical (11,950 entries)
- Remove unused application field
- Update VerseCommentary schema with nested VersesDict and ChaptersDict
- All 18 data validation tests now passing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:08:03 -05:00
kennethreitz e3159c2713 Add utility script to list verses without commentary
Provides comprehensive statistics and filtering options:
- Shows overall stats: 31,102 verses, 11,917 with commentary (38.3%)
- Filter by book and/or chapter
- Show random verses without commentary
- Breakdown by book showing where commentary is needed

Usage examples:
  python scripts/list_unwritten_commentary.py --stats
  python scripts/list_unwritten_commentary.py --book John --chapter 3
  python scripts/list_unwritten_commentary.py --random 10

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:03:32 -05:00
kennethreitz 8e22a0fe80 Clean up verse commentary and add John 3:16
- Remove 2,871 verses with generic template commentary
- Keep 11,950 verses with substantive content
- Restructure JSON from flat to nested format (Book → Chapter → Verse)
- Update schema to reflect nested structure
- Add comprehensive commentary for John 3:16 with Greek word studies
- Update commentary.py to handle both flat and nested JSON formats
- Add *.backup to .gitignore

File size reduced from 47MB to 36MB after removing generic content.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 20:02:06 -05:00
kennethreitz 3b48e6fa7b Remove generic commentary from verses without substantive content
Verses without verse-specific commentary now return None for analysis,
historical context, and questions sections instead of generic template
text that could apply to any verse.

Changes:
- Set analysis, historical, and questions to None for non-enhanced verses
- Template already checks for these values before rendering sections
- Verses with real commentary (like Psalm 1:4, Revelation 1) unaffected
- Reduces clutter and improves signal-to-noise ratio

Result: Verse pages now show only verse text, word-by-word analysis,
and cross-references unless there's genuine verse-specific commentary.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:47:08 -05:00
kennethreitz 57f69d111a Remove wisdom literature commentary JSON file containing analyses, historical contexts, applications, and questions for Psalms 1 and 23. 2025-11-28 19:40:21 -05:00
kennethreitz ec6cfd068c Remove Bible PDF template
Removed the bible_pdf.html template as it's no longer needed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:38:25 -05:00
kennethreitz 4f011a49ba Remove Bible PDF generation script
Removed the full Bible PDF generation script as it's no longer needed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:38:09 -05:00
kennethreitz 42999e4504 Add --limit parameter to PDF script and fix compound name linking
PDF Script:
- Added --limit N parameter to process only first N books (for testing)
- Added --output FILE parameter for custom output filename
- Updated help text and examples
- Example: --limit 1 --output genesis.pdf to test with just Genesis

Name Linking:
- Fixed compound names like "Sarai or Sarah" not linking properly
- Now splits names on " or " and creates separate mappings for each variant
- Both "Sarai" and "Sarah" in Bible text will link to same person entry
- Preserves full compound name as well for exact matches

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:25:27 -05:00
kennethreitz e54cfd7e1c Fix cross-references showing duplicate tooltips
Cross-reference links were showing both their own CSS tooltip and the
JavaScript verse tooltip simultaneously, creating a cluttered experience.

Changes:
- Added .cross-references-section class to cross-references container
- Updated JavaScript to skip all links inside .cross-references-section
- Cross-ref links now only show their own CSS-based tooltip

This ensures cross-references show only one tooltip with the verse
preview, not multiple overlapping tooltips.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:17:03 -05:00
kennethreitz b7aa89931e Enable verse linking in list items
Added 'li' to the verse linking selector so that verse references in
list items are automatically converted to clickable links. This fixes
verse references not being linked in sections like "Questions for
Reflection" which use unordered lists.

Now verse references like "1 Peter 5:8" in list items throughout the
site will be automatically linked to their corresponding verse pages.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:07:12 -05:00
kennethreitz d384a2b8e9 Make Bible verse text bold and italic in all tooltips
Added font-weight: 600 to give Scripture text more visual weight and
emphasis in both regular verse tooltips and cross-reference tooltips.

The Bible verse text now appears as bold italic, making it stand out
more prominently while maintaining the elegant italic style.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:05:05 -05:00
kennethreitz db95934c59 Update verse tooltip styling to match cross-reference tooltips
Applied the cleaner, more refined styling from cross-reference tooltips
to all verse tooltips throughout the site for visual consistency.

Changes:
- Reduced border thickness from 2px to 1px for lighter appearance
- Adjusted padding from 1rem to 0.75rem 1rem for more compact look
- Reduced font size from 0.95rem to 0.9rem to match cross-refs
- Added min-width: 300px for consistent tooltip sizing
- Updated dark mode border color from #555 to #444 to match

The result is a cleaner, more consistent tooltip experience across the
entire site that matches the superior cross-reference tooltip design.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:00:04 -05:00
kennethreitz 4baf0dc04f Fix random verse always going to same verse
The random verse endpoint was being cached by browsers, causing it to
always redirect to the same verse instead of selecting a new random
verse each time.

Changes:
- Added /random-verse to the no-cache path list in CacheControlMiddleware
- Set explicit cache control headers on the redirect response
- Changed status code to 302 (Found) for temporary redirect
- Added Pragma and Expires headers for better cache prevention

Tested with 5 consecutive requests, all returned unique verses.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 18:56:28 -05:00
kennethreitz 0a3edf9df2 Change verse tooltip cursor from help to pointer
Replace the help cursor (question mark) with a normal pointer cursor
on verse links that show tooltips. This provides a cleaner, more
standard user experience while still showing the verse tooltip on hover.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 18:53:20 -05:00
kennethreitz 3253878420 Disable verse tooltips on concordance search results
Concordance pages already display full verse text inline with search
results, so showing tooltips with the same text is redundant. This
change prevents tooltips from appearing on concordance result links
while keeping them active on other verse references throughout the site.

Changes:
- Added JavaScript exclusion for .occurrence-reference and .occurrence elements
- Set cursor: pointer on concordance links to override base cursor: help style

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 18:52:37 -05:00
kennethreitz 5258d59917 Fix word study sidenotes breaking up possessive forms
- Use negative lookahead to prevent matching words followed by 's
- Fixes issue where "LORD'S" was being split into "LORD" + "'S"
- Sidenotes now appear after complete words only
2025-11-28 17:32:51 -05:00
kennethreitz 549bde35f7 Add WeasyPrint availability check to Bible PDF script
Script now checks if WeasyPrint is available before attempting
to generate PDF and provides helpful installation instructions
if system libraries are missing.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:41:29 -05:00
kennethreitz 72f1328b70 Convert Bible PDF to offline generation script
Removed the /bible/pdf endpoint (too resource-intensive for live requests)
and created a standalone script for offline PDF generation.

New script: scripts/generate_bible_pdf.py
- Generates complete KJV Bible PDF with all footnotes
- ~1000 pages with cross-references and word studies
- Progress tracking during generation
- Saves to kjv-complete-bible.pdf

Usage:
  uv run python scripts/generate_bible_pdf.py

This is more efficient - generate once, serve as static file if needed,
rather than regenerating on every request.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:38:17 -05:00
kennethreitz b3fd909b55 Fix Bible PDF import error
Corrected import to use OT_BOOKS and NT_BOOKS from utils.books
instead of non-existent bible_metadata module.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:29:00 -05:00
kennethreitz 2f1d192d7e Add complete Bible PDF export feature
New endpoint /bible/pdf generates a comprehensive PDF of the entire
King James Bible with all cross-references and word studies.

Features:
- Title page with edition information
- Table of contents (Old Testament & New Testament)
- All 66 books with proper page breaks
- All 31,102 verses with footnotes
- Cross-references grouped by description
- Word studies with Greek/Hebrew terms
- Running headers with book names
- Page numbers
- Professional typography

PDF structure:
- Title page
- Table of contents (2 columns)
- Genesis through Malachi (Old Testament)
- Matthew through Revelation (New Testament)
- Footer page

This will generate a substantial PDF (likely 1000+ pages) with
complete study content suitable for printing or offline study.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:27:36 -05:00
kennethreitz b1dff9f2fb Include sidenotes as footnotes in chapter PDF exports
Cross-references and word studies now appear as proper footnotes
in PDF exports using WeasyPrint's CSS footnote support.

Features:
- Cross-references grouped by description (e.g., "References God")
- Word studies with Greek/Hebrew terms and meanings
- Automatic footnote numbering
- Footnote markers (* and †) in verse text
- Clean footnote formatting at bottom of pages

PDF now includes all the study content from the web view in a
print-friendly format.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:25:00 -05:00
kennethreitz 3ac3498d33 Remove space before period in cross-reference groups
Tightened template formatting to ensure no space appears
between the last reference and the period.

Now: Genesis 2:5.
Not: Genesis 2:5 .

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:22:53 -05:00
kennethreitz 86d111942d Add period at end of each cross-reference group line
Each grouped cross-reference line now ends with a period for
proper punctuation.

Example:
References God: Hebrews 6:7; Genesis 1:29; Matthew 6:30.
Creation: Genesis 1:1; Hebrews 11:3; Isaiah 45:18.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:22:02 -05:00