Church Tech
Software for Pleasant Valley Church in Winona: the iPhone app, a self-running livestream mixer, a communications planner and the missions website.
- Status
- In use
- Built with
- SwiftUI, Next.js, C++, Core Audio, Planning Center API

A lot of what I build is for Pleasant Valley Church. The goal is the same as everything else here: take a job volunteers and staff do by hand every week and make it take less time.
Pleasant Valley iPhone app
Sermons, a Bible reader with reading plans, a daily devotional, groups with chat, and serving schedules. Members see their own groups and serving dates from Planning Center and can accept or decline requests.
SwiftUI, WidgetKit, SwiftData, Firebase Auth
live-daw
A self-running broadcast mixer for the livestream. It takes the Dante split from the sound board and builds the stream mix itself: an automixer, broadcast loudness metering, a look-ahead limiter, and scene changes that follow the service plan. A freeze button bypasses to a safe mix.
C++17, JUCE, SwiftUI, Core Audio
Church Comms
A self-hosted planner that turns event requests into a promotion plan. It works backward from each event date to schedule the announcement video, slides, email, social and bulletin, and builds a weekly worklist for the team.
Next.js, Prisma, SQLite
Made Alive Worldwide
The church’s missions website: missionaries, news from the field, trips and a world map. Every page is generated from one content file that non-developers can update.
Next.js, Tailwind, static export
pvwinona.com
The church website, with sermons, events, giving and a devotional reader. It also serves the API the iPhone app uses, so Planning Center keys stay on the server.
Next.js, Postgres, Drizzle