Projects BibleWeb Themes & Parables Parables browser
Done

Parables browser

Area: Themes & Parables Milestone: v3

Context

Problem: Jesus' parables are scattered across the four Gospels. Readers who want to study a specific parable (like the Prodigal Son or the Good Samaritan) need a way to find it quickly and read all Gospel accounts side by side.

Solution: A dedicated parables section with a browseable list and detail pages. Each parable shows its full verse text, and if the parable appears in multiple Gospels, the texts are shown side by side (using the same parallel view as the Parallel Gospel Reader).

Not included: Commentary on parables, or thematic grouping of parables by topic. This is the raw text with parallel Gospel comparison.

Functional

A list page showing all parables with descriptions, and detail pages showing the full verse text for each parable.

User flow:

  1. User navigates to /parables (via sidebar or Teachings hub)
  2. Sees a list of all parables with titles and short descriptions
  3. Clicks a parable (e.g., "The Prodigal Son")
  4. Detail page shows the full verse text, grouped by Gospel if it appears in multiple
  5. EN/NL/Both toggle available for translation switching
  6. Back link returns to the parables list

Edge cases:

  • Some parables appear in only one Gospel (e.g., Good Samaritan = Luke only)
  • Others appear in 2-3 Gospels (e.g., The Sower = Matthew, Mark, Luke)
  • Parable list is pre-rendered (prerender = true)
  • Jesus' speech within parable verses is highlighted in gold

UX & Design

List page:

  • Cards with parable title (bold) and 1-2 sentence description
  • Right arrow (→) on each card
  • "← Jesus' Teachings" back link at top
  • Font size controls (A-/A+)

Detail page:

  • Parable title as heading
  • Gospel columns (same ParallelVerseView component as Parallel Gospels)
  • EN/NL/Both toggle
  • Jesus' words highlighted in gold within verse text
  • Back link to parables list

Technical

Data:

  • DB table: pericopes filtered by category = 'parable', ordered by sequence_number
  • Parable verses: pericope_versesversesbooks, with jesus_speech left join
  • Grouped by bookId into Column[] objects (same structure as Parallel Gospels)

Routes:

  • List: /parables+page.server.ts calls getParables() (pericopes WHERE category='parable')
  • Detail: /parables/[id]+page.server.ts calls getParableById(id) + getParableVerses(id)

Shared components:

  • ParallelVerseView.svelte — reused from Parallel Gospels for multi-column display
  • i18n: getParableDescription(title, lang) for Dutch descriptions

Files:

  • apps/web/src/routes/(app)/parables/+page.svelte + +page.server.ts — list
  • apps/web/src/routes/(app)/parables/[id]/+page.svelte + +page.server.ts — detail
  • apps/web/src/lib/server/queries/parables.tsgetParables(), getParableVerses()
  • apps/web/src/lib/components/bible/ParallelVerseView.svelte — shared column view

Status

Current: DONE Milestone: v3 Priority: High — one of BibleWeb's distinctive study features

History:

  • BibleGame had a parables list with verse display
  • Web version reuses the ParallelVerseView component for multi-Gospel comparison
  • Parable data stored in the pericopes system (shared with Parallel Gospels)

Dependencies:

  • Requires: pericopes data (DONE), verse database (DONE), ParallelVerseView (DONE)
  • Used by: Teachings hub (DONE)

Screenshots

Feature screenshot