Case study · 2026
Daloy.
Your worship team, in perfect sync.
A free worship team app for Filipino churches: songs, chords, line-ups and live sets for the whole team, on the web, Android and Windows.

- Status
- Live — free for churches
- Role
- Solo builder — product, design, API, web, mobile and store releases
- Platforms
- Web (PWA), Android, Windows, iPhone & iPad (coming soon)
- Stack
- Laravel 13, React Router, Flutter, Laravel Reverb, PWA, Offline-first
Why it exists
I play music at church. Like a lot of worship teams, we juggled chord charts in group chats, rebuilt setlists every week, and scrambled to stay in sync on Sunday morning.
Daloy started as a fix for our own ministry. Other churches had the same friction, so I built it properly, kept it free, and opened it up. No subscriptions, no upsells, no trial that expires.
What it does
- 01
Song library
Chords, lyrics and keys in one place. Transpose instantly, read charts in letters or Nashville numbers, and import or export ChordPro files.
- 02
Line-ups
Build setlists for Sunday, youth night or special events, with each song's own section arrangement. Reorder by drag and drop.
- 03
Live sessions
The leader starts a session and every teammate's screen follows — song, section, key and cues — and the leader role can be handed off mid-set.
- 04
Practice mode
Rehearse at home with a built-in click, the bar you're on, and the chord coming next.
- 05
Chord helper
Long-press any chord to see guitar, ukulele or piano shapes and hear it in time. Follows capo and transposition, with a left-handed neck.
- 06
Present lyrics
Put lyrics on the projector from a second window or a second device, with presentation themes — even when the venue has no internet.
- 07
Song network
Churches can share songs from their library with every workspace on Daloy. Others preview them and add their own copy.
- 08
Export
Chord sheets and setlists as PDF or PowerPoint, ready for print or display. Nashville numbers carry through to the export.
How it’s built
API
Laravel 13 · PHP 8.3 · Pest
A REST API with multi-tenant workspaces, Sanctum tokens and Google sign-in. Controllers stay thin: typed DTOs (Spatie Laravel Data) in, services do the work, one response envelope out.
Real-time
Laravel Reverb · Laravel Echo
Live sessions broadcast every change — song, section arrangement, transposition, cues, notes and leader handoff — over WebSockets, and workspace changes refresh open screens.
Web app
React Router 7 · TypeScript · TanStack Query · Dexie · Workbox
An installable PWA. A service worker caches the app and an IndexedDB store keeps songs and line-ups on the device. PDF and PowerPoint export run in the browser.
Native apps
Flutter · Riverpod · Drift (SQLite) · SoLoud
One Flutter codebase ships to Google Play and the Microsoft Store, with its own local database for offline use, QR codes to join a team, and audio for the click and chord helper.
Under the hood
Presenting with no internet
The presenting device advertises itself on the local network over mDNS/Bonjour and serves a WebSocket. A teammate's device finds it, pairs with a 4-digit code and drives the slides — no Wi-Fi uplink needed.
Chords you can hear, without samples
The chord helper synthesizes a plucked string and a decaying piano tone in code. A seeded noise source makes every note identical, so the web and Flutter apps sound exactly the same.
Offline on every client
IndexedDB on the web and SQLite in Flutter keep charts on the device, so a dropped church connection never stops the set.
Tested across the stack
Pest on the API, Vitest on the web app — chord theory, Nashville numbers, ChordPro parsing, sync — and Flutter tests on the native app.