Reading List
Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read.
Reading List v2
As of version 2.0, Reading List is no longer open source. The app is instead supported by some select premium features which require a one-time payment to unlock. The codebase here is as it existed in v1.16.1.
Requirements
- Xcode 12.4
Dependencies
Reading List uses the Mint package manager to manage Swift command line tool packages. Mint can be installed using Homebrew (among other methods):
brew install mint
XcodeGen
XcodeGen is a command-line tool written in Swift. It generates your Xcode project using your folder structure and a project spec, which contains all the information necessary to generate a project, such as targets, schemes, settings. The Xcode project should be generated by running XcodeGen:
mint run yonaskolb/XcodeGen
SwiftLint
SwiftLint is used to enforce Swift style guidelines. An Xcode build step runs SwiftLint; this requires it to be installed. To install it, run:
mint install realm/SwiftLint
Architecture
Reading List is written in Swift, and primarily uses Apple provided technologies.
User Interface
Reading List mostly uses storyboards for UI design (see below); a limited number of user input views are built using Eureka forms.
Data persistence
Reading List uses Core Data for data persistence. There are three entities used in Reading List: Book
, Subject
and List
. The attributes and relations between then are illustrated below: