Reading List (v1.16.1)
Reading List is an iOS app for iPhone and iPad which helps users track and catalog the books they read.
This repository contains the source code for Reading List v1.16.1; in 2021, Reading List v2.0 was released, which is no longer open-source. The app is instead supported by some select premium features which require a payment to unlock.
This repository is kept public for posterity.
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: