Skip to content
roguelite labsAnthony Spezzano ↗
← All work
Native

Reverie

A reading journal with shared book records and a freeform handwriting layer.

Try the mechanism

Change one book record and watch the library, journal and reading log reflect it.

The example uses synthetic inputs to isolate this behavior. It does not operate the underlying app.

A Book record feeds the library, shelves, reviews and reading logs. SwiftData and CloudKit handle structured records; PencilKit provides the freeform layer.

Inside the implementation

reverie-reading/Sources/ReverieReading/Models/Book.swift · excerpts
@Model
final class Book {
    var id: UUID = UUID()
    var title: String = ""
    var author: String = ""
    var currentPage: Int?
    // Other stored fields and relationships omitted.
}
Read the explanation →

Implementation decisions

Built with

Swift · SwiftUI · SwiftData · CloudKit · PencilKit