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 database — SQLite 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.apikeeps 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.