Code Monkey home page Code Monkey logo

bookit's Introduction

BookIt

BookIt is an iOS application that helps the user to keep track of the page they are on in each of the books they are reading, thus eliminating the necessity of a physical bookmark for each book they are reading. It also allows the user to keep a list of the books they have finished reading and a list of the books that they would like to read in the future.

This application is compatible with any iPhone running on iOS 10.2 or above and was build using Swift 3 as the primary programming language and XCode 8 as the main developing environment.

Installation and development information

Installing XCode

XCode 8 is provided for free by Apple for Mac users, and the application can be downloaded from the App Store on Mac. XCode has a built-in simulator to provide the user with a simulation of a real iPhone/iPad (with different models listed), so a real iPhone is not required for developing process.

Installing Carthage and adding frameworks

Carthage is a dependency manager that assists developers in the management of frameworks and APIs used in their project. A full description of features and documentation for Carthage can be found here.

BookIt uses Carthage as its dependency manager to keep an eye on its dependent frameworks and APIs. To install Carthage on your Mac, please follow this official step-by-step process outlined by the Carthage team. Our team followed these steps using HomeBrew in the Terminal:

brew update
brew install carthage

After installing Carthage, you may add the all the required frameworks into the project by following these steps. Note: You only need to follow the all the steps to add the first framework. After that, repeat steps 2-4 and update the Cartfile for other frameworks.

Required frameworks and APIs

BookIt requires the following frameworks and APIs:

  1. Realm: A mobile database that stores the app's data into local storage.
  2. PureLayout: This API allows for the development of Auto Layout for BookIt.
  3. MGSwipeTableCell: This API allows for the implementation of extended swipe features for the UITableViewCell.

The project repo on Github already includes the updated Cartfile. After having Carthage installed and cloned the project, please run carthage update in the Terminal to get all the frameworks and APIs needed, then follow the instruction above for adding frameworks to the project on your Mac.

bookit's People

Contributors

dletk avatar kellimandel avatar spencermg3 avatar

Watchers

 avatar  avatar  avatar

bookit's Issues

SegmentedControl on ReadingBooksTableViewController too crowded

The color sort allows the user to sort books by their icon color (I figure the order of the colors doesn't matter so I just made it easy and did it alphabetically: Red --> Purple --> Green --> Gold --> Blue). We won't want to keep this as it is because we will not want to have five sorting options for the reading books. I was thinking we could just have one option for "% Complete" rather than two different options for sorting by progress. What would you think about that?

Needed a search bar for CompletedBooksView

The ReadingBooksView will be barely fill with a lot of books at a time, but the CompletedBooks will totally have the potential to be filled with lots of books, since those are the books that users have read in all time. Therefore, a search bar for the CompletedBooksView may be necessary.

Changing the status (reading/WL/Complete) not completely intuitive

The first thing users do when they try to change the status of a book is tap on it and are surprised that there is not a button at the bottom that allows you to move it to a different tab or delete it. They do not initially resort to swiping, but eventually after messing around for a bit can figure it out. The suggestion was to include a bottom of the BookViewController saying "Move to ____"

Bug on entering the new book

If user leave any of the field in the add book view blank, the bug will be crashed. This happens due to the force unwrap text from those fields.
Suggestion for solution:

  • Make the SAVE button not active until all the fields are filled

Update the variable whenCreated of book to be new value if current page is changed in BookDetailView

Right now, the tableView will display any books that has been modified the current page to be on the top. However, changing the current page in the BookDetailsView will not update this variable, making this not consistent in the app design.
Suggested solution:
Since whenCreated will always be updated if currentPage is set to new value, we can take advantage of this by set a didSet for currentPage:

currentPage: Int {
 didSet {
      self.whenCreated = Date()
}

Having author name in ReadingScene

I think that because we are having author's name in the other 2 scenes, it should be included in the Reading Scene as well, so our app will have a consistent theme.

Progress Sorting not completely intuitive

Users were a little confused because we do not give a number for % complete, so they assume that it is supposed to sort by current page number. One person said it would help to give the percentage so that they could see it

Store coverImage into Realm instead of the color name

Right now, the app is storing the icon color name of the book to Realm, and base on this name, the app looks up a given dictionary (inside BookManager) to find the corresponding image of each color. In order to use the feature of getting book's information (including cover image) from GoogleAPI, the cover image might need to be stored into Realm.

Make a tutorial scene on first use

On the process of researching for the problem with users not know about how to use the swipe function, I see some examples that we can make a tutorial scene, only appear on the first time the app is launched, that displays a simple picture showing that user can swipe left and right to interact with the book. I believe that this will solve many of our solution.

Unclear what the color selector means

The PF was confused as to what exactly it does. The other two people I had test it were able to figure it out very quickly. One person, though, asked what it does and was expecting for it to have some functionality. He suggested adding another sorting option to sort by color so that if users want to, they would have the option to use the colors to sort by genre or, really, however they want to utilize it

Layout of AddBook view

The AddBookView now is having too much spaces on top, making the keyboard cover the color buttons if it appear. Users may not see that color buttons if they are using keyboard. Also, the keyboard is covering the textField of current page and total pages now if tested on iphoneSE screen size.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.