Designing a reader for different kinds of texts
Sacred Grove is an independent iOS app I’m designing and building in SwiftUI. I want readers to move between a text, its translations, and related art or audio without losing their place.
The project is still in development. These screens show the working build and design direction. My work covers the content structure, interaction design, visual system, and implementation, with AI assistance for planning and code.
Defining the product
I began by defining what the reader should support: reading, prayer, audio, comparison, and saving passages.
I used conversations with an AI assistant to develop the product brief, content model, and design principles. Keeping those decisions in documents gave me something to refer back to as I built the app.
Organizing the texts
The initial library uses public-domain translations.
The build began with four English Bible translations: KJV, ASV, BBE, and YLT. I then added the World English Bible and worked on bringing Meditations and the Dhammapada into a shared content structure. The challenge is to support texts with different divisions while keeping reading, search, and selection consistent.
I used AI assistance to write import scripts and set up search. I chose the sources and the information to retain about each edition so that the app could identify the text a reader was using.
Moving beyond verse-based interactions
The first implementation assumed that every selection was a Bible verse. That became a limitation as I expanded the library.
Reviewing the code exposed the same assumption in selection, sharing, comparison, and audio. A verse-based reference works for the Bible, but it cannot describe every passage in the other texts I wanted to include.
The resulting direction is a shared passage selection that identifies the work and the selected portion of text. That gives copying, sharing, annotation, and comparison a common reference. It is a structural change that needs to carry through each of those interactions.
Keeping navigation consistent
I wanted each text to have a distinct visual treatment while keeping the controls familiar.
Three principles guide the interface:
- Keep navigation, headers, spacing, and motion consistent across texts.
- Use imagery, background tones, and accents to distinguish the material being read.
- Make reading, listening, comparison, and saving easy to find.
I maintain color, typography, spacing, motion, and component styles in DesignSystem.swift. Working in SwiftUI lets me evaluate those choices in the app as I change them.
Building and reviewing the app
The app uses SwiftUI, SQLite for the text library and search, and SwiftData for reader data such as notes and bookmarks. The audio interface includes a mini player so playback controls remain available while browsing.
I use a similar development workflow to this website: describe the change, review the generated code, run it, and revise. AI assistance helps with implementation, but I still need to check whether the resulting behavior matches the design.
Current status
Sacred Grove has a working iOS build, a text library, and a design system. Development is ongoing, including the broader content model and the interactions that depend on it.
This account documents design and implementation work so far. It does not report a public launch or measured reader outcomes.

