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
@Model
final class Book {
var id: UUID = UUID()
var title: String = ""
var author: String = ""
var currentPage: Int?
// Other stored fields and relationships omitted.
}Implementation decisions
- Use one book identity across several views.
- Keep handwriting alongside structured fields.
- Account for old records when evolving the model.
Built with
Swift · SwiftUI · SwiftData · CloudKit · PencilKit