← all projects
Open Source Desktop

Rhemico

Open-source alternative to VideoPsalm / ProPresenter — an Electron church presentation app. Song library with fuzzy search, 3,000+ offline Bible translations, multi-format importers, live song/Bible finders, and a chord mode for stage monitors.

Multi-window church presentation software (operator + projector + stage monitor) with local SQLite/FTS5 search over 3,000+ offline Bible translations, on-device AI (Whisper + local LLM), and a LAN sync server — a free alternative to costly proprietary tools.

React
TypeScript
Vite

Problem Statement

Churches run services on proprietary presentation software (ProPresenter, VideoPsalm, EasyWorship) that's expensive, often Windows-only, and locks song/Bible data into closed formats. AV operators need three coordinated displays (operator control, the projector the congregation sees, and a stage monitor for musicians), instant lyric/verse lookup, and reliable offline operation — churches can't depend on the building's WiFi mid-service.

Proposed Solution

Rhemico is a free, open-source desktop alternative built on Electron. It manages songs and Bibles, drives a three-window presentation system (operator / projector / stage monitor), searches across a fully offline library of 3,000+ Bible translations, imports from every major church format, and even runs on-device AI — all without a cloud dependency or a license fee.

Full Solution Details

  • Song management — full library with fuzzy (accent/punctuation-insensitive) search, verse/chorus/bridge structure, per-song color/icon/tags, songbooks, a live editor, drag-and-drop verse reordering, chord mode for the stage monitor, and a Live Song Finder (type any lyric fragment → instant match across all songbooks).
  • Bible — 3,000+ translations / 2,000+ languages bundled offline, book/chapter/verse picker, Live Bible Finder, multi-verse slides, bilingual side-by-side display, RTL support, tagging.
  • Importers — OpenSong, OpenLP, EasyWorship, EasySlides, ProPresenter, VerseView, plain text, PDF, Word — plus export and duplicate detection.
  • Presentation — operator view (song list, service order, slide editor), fullscreen projector view, and a stage-monitor view (next slide, notes, clock, song section).

Technical Documentation

Renderer (UI) — React + TypeScript + Vite + TanStack Router as a SPA inside Electron, organized by Feature-Sliced Design (songs, bible, service-planner, presentation, media, ai). Global presentation state (current slide, live/black) lives in a top-level Zustand store shared across all three Electron BrowserWindows via IPC — so the operator's action instantly updates projector and stage monitor.

Main process (logic) — exposes a typed window.api to the renderer via contextBridge (all file I/O, hardware, and AI go through it); does display management (detect monitors, assign projector/stage windows, fullscreen/aspect); owns the local databaseSQLite via better-sqlite3 — storing songs, songbooks, service plans, media metadata, and the Bible index, with FTS5 powering the instant full-text finders; loads pre-bundled compressed Bible translations on first launch; handles import/export; runs a local AI runner that spawns Whisper and a local LLM (e.g. Ollama) as child processes and streams results back via IPC; and starts a small LAN sync server (Express) so other devices on the same WiFi (pastor's tablet, congregation phones) can connect.

Tech Stack

Electron, React, TypeScript, Vite, TanStack Router, Zustand, better-sqlite3 (SQLite + FTS5), Express (LAN server), Whisper + local LLM (Ollama); Feature-Sliced Design.

System Design

               Electron main (Node)
   contextBridge → typed window.api
     ├── SQLite (better-sqlite3) + FTS5 ── songs · bibles(3000+) · service plans
     ├── display mgmt (detect monitors, assign windows)
     ├── local AI runner → Whisper + LLM (Ollama) child procs → IPC stream
     └── LAN sync server (Express) ← pastor tablet / congregation phones
               │ IPC
   ┌───────────┼───────────────────────────┐
   ▼           ▼                            ▼
 Operator    Projector (fullscreen)     Stage monitor (next slide,
 window      window                     notes, clock, chords)
   └── Zustand presentation state shared across all 3 windows via IPC

Smart Architectural Decisions

  • One state store across three windows via IPC. Putting live presentation state in a single Zustand store and syncing it over Electron IPC means operator, projector, and stage monitor never drift — the central correctness problem of presentation software, solved cleanly.
  • Offline-first with SQLite + FTS5. Bundling 3,000+ translations locally and indexing with FTS5 gives instant lyric/verse finders that work with zero network — exactly what a live service demands.
  • On-device AI. Spawning Whisper + a local LLM as child processes (not a cloud API) keeps AI features private, free, and offline — a deliberate, church-appropriate choice.
  • Typed contextBridge boundary. Funneling all privileged operations through a typed window.api keeps the renderer sandboxed and the security model clean — correct Electron architecture.
  • LAN sync server turns the operator machine into a hub for tablets/phones without any cloud — pragmatic for a church hall.
  • Format empathy: importing from 8+ proprietary formats lowers the switching cost from the incumbents it's replacing.

Impacts

A genuinely ambitious open-source replacement for expensive proprietary church software: multi-display, fully offline, AI-capable, and import-compatible — lowering cost and lock-in for churches.

Demonstrated Skills

Advanced Electron architecture (multi-window IPC sync, contextBridge security boundary, display management); local-first data engineering (SQLite + FTS5 full-text search at scale); on-device AI orchestration (Whisper + LLM child processes); LAN networking (embedded Express server); format parsing/interoperability (8+ import formats); React + Feature-Sliced Design + Zustand; product empathy for a non-technical live-use audience.

Notes

  • Hardest Electron problem done right: keeping three windows (operator/projector/stage) perfectly in sync via a single IPC-shared store is the core challenge of presentation software — and the contextBridge security boundary shows correct, not hacky, Electron.
  • Serious local-first engineering: SQLite + FTS5 over 3,000+ offline Bible translations for instant search is real systems work, not a CRUD app.
  • On-device AI: running Whisper + a local LLM as child processes (private, offline, free) is a sophisticated, deliberate choice few portfolios show.
  • Ambition + altruism: building a free OSS alternative to pricey proprietary tools, with importers for 8+ formats to ease switching, signals both technical reach and product empathy.
  • The LAN sync server is a clever, real-world touch for a church hall with no reliable internet.
Ask me anything