Please enable JavaScript.
Coggle requires JavaScript to display documents.
hon - Coggle Diagram
hon
Impacts :warning:
With goals and statistics, students will feel more motivated to read which will improve their mental wellbeing
App is free, so it could potentially reduce sales for other paid apps or programs that have similar functionality
Users will be able to easily find books that they are likely to be interested in, making reading more fun for them and reducing the time they spend trying to find a good book
Users can quickly and easily view all the important information about a variety of books
Users can keep track of what they want to read, what they're currently reading and what they've already read -- this will motivate them to read more and help in completion of the Premier's Reading Challenge
Daily reading reminders will prompt users to develop good reading habits and make reading a healthy part of the daily routine
User problem :silhouette:
Students who already love reading
Will want to find more books that are similar to what they are already reading
May be interested in their reading habits, their reading speed, total time spent reading, total number of pages read (and other similar statistics)
Students who don't like reading
May need daily reminders to help them stay motivated
Would want to be able to set reading goals (either a minimum time per day or a certain of number of books in a month) so they develop good reading habits
Won't know much about which books are good and bad, so need to be able to easily find books they are likely to be interested in
Junior students
More likely to be more interested in the 'challenge' part of the Premier's Reading Challenge
Would be motivated through achievements and reaching high reading stats
Senior students
Don't have a lot of spare time so app will need to be quick and easy to use
May have lost interest in reading while going through school -- they will want to be able to find books that they will personally find interesting (so app should recommend based on their preferences)
May not want to read very long books -- they would therefore find knowing the length of the book or time needed to finish it very helpful
Client problem :clipboard:
Comparable + competitor apps
Bookly
Users can track which books they have completed
Provides user stats on number of pages read and amount of time spent reading per day (displayed in a chart)
Shows number of consecutive reading days, total number of pages read, total time spent reading
Calculates the time it will take for users to completely finish reading a book
Allows users to set reading goals (daily, monthly or yearly) and set reminders based on these goals
Can create infographics about the user's reading habits and stats
Users encouraged to start the app timer every time they read so that their time spent reading + reading speed can be tracked
Users can unlock achievements to stay motivated to keep reading
Provides personalised reading suggestions
User can add books to a wishlist or a favourites list
Goodreads
Provides personalised recommendations based on books the user has already read + their favourite genres
User can see what their friends are reading + how they have reviewed books they have finished reading
Allows books to be added to a 'want to read' list
Books can be found in the app by scanning the ISBN barcode with the device camera
Users can participate in a 'reading challenge' in which they are encouraged to read a certain number of books in a set time frame
Users can rate and review books they have read
Constraints
Up to 4 weeks to plan, design and develop a low-fidelity prototype as part of the technical proposal
Must be a mobile application and will be primarily developed for smartphones (but the UI should be able to be easily transferred to tablets) -- smartphones are preferred because students have their phones with them almost at all times, so whenever they decide to read the app will be easily accessible
Requirements
Increases readership within the school to align with Premier's Reading Challenge
Uses book data in an interesting and innovative way
Needs to engage students in reading
Must use one of the 2 provided datasets on books
Developer problem :computer:
User interface
Features
Recommendations
Upon app start-up, users are asked to select which book genres they enjoy (from a list)
Two collections are displayed: one for highly rated books that match the user's favourite genres, another for books that are similar to (same author or same genre) as books in the user's 'currently reading' or 'completed' list
Clicking on a book opens the 'book info' screen (same for all screens)
Button in navigation bar to edit preferred genres
Search
Search bar at top of the page
User's search query will be checked against the title, author, description and genre of the books in the database
Stats + goals
Shows stats about the total number of pages read and total books read (calculated from books found in user's 'completed' list)
Button that allows user to enter the amount of time they spent reading today
Shows stats about total time spent reading and average time spent reading per day (based on user's inputs)
Shows how many days in a row the user has read ('reading streak')
User can set a goal to read a certain number of books within a time period of their choosing (progress is tracked using the user's 'completed' list)
Toggle for daily reading reminders
Collections
Users can add books to 3 different lists: 'wishlist', 'currently reading' or 'completed'
Books in each of the lists are displayed -- user can switch between viewing the different lists by clicking one of the 3 options in the dropdown at the top of the screen
Book info
A screen that contains all the information about the book the user just clicked on (title, author, ratings, description, publisher, page count, genre, ISBN and publication date)
Buttons to add to the user's 'wishlist', 'currently reading' or 'completed' lists
Usability principles
Tabbed app -- allows for easy navigation and clearly separates the app's different features [learnability, utility]
Simple UI with a shallow navigation hierarchy -- this allows the app's features to be used quickly and easily [utility, learnability]
Purple accent colour (to establish a calming mood suitable for reading) [utility]
Font: default system font, black, no smaller than 11pt [effectiveness]
Options to select favourite genres are presented as a multi-select checklist [effectiveness]
Clear and concise instructions when input is required from the user [learnability, effectiveness]
Titles and headings are descriptive and create meaningful hierarchy [learnability, utility]
Buttons that provide the same functionality are consistent [learnability, utility]
Simple + plain language is used (suitable to be easily understood by students) and is inclusive of all [accessibility, learnability]
All images have alternative text [accessibility]
Colour isn't used as the only means of conveying information [accessibility]
No flashing or jarring elements (to protect those with epilepsy) [accessibility]
Error messages need to be clear and understandable by an average user (e.g. in the case of no matching search results, incomplete data in the database, or invalid user input) [safety, learnability]
Errors should not cause user's input to be completely reset [safety]
User is able to delete data they did not mean to input (where they can enter the time they spent reading) -- easy reversal of actions [safety]
Number pad keyboard is opened when the user enters the time they spent reading [effectiveness]
Coding environment
Key algorithms
Book searching: user's search query needs to be checked against book titles, author, description and genres
Buttons for adding books to the user's 'wishlist', 'currently reading' list or 'completed' list -- they need to change the relevant boolean field for the book in the SQL database
Calculates total time spent reading (calculates the total sum of all the time the user has ever inputted)
Book recommendations: books that match the user's preferred genres and the genres/authors of the books in the user's 'completed' list need to be retrieved from the database
Tracking consecutive reading days: counter that is incremented each day and is reset to 0 if the user doesn't input the amount of time they spent reading one day
Development tools
Language: Swift, SQL
Low-fidelity prototype: Adobe XD
Database: SQLite3 (and terminal)
Data
Required app data
Title
Author
Rating (out of 5)
Description
Publisher
Page count
Genre(s)
ISBN
Publication date
Book cover image (not included in provided datasets -- could be retrieved from Goodreads website and then implemented into app's database)
In wishlist
In currently reading list
In completed list
Data source options
books.csv
Pros
Essential information including book title, author, rating, ISBN, number of pages, publication date and publisher
Won't require normalisation (flat file database will be suitable)
Cons
The 'ratings count' and 'text review' fields are vague and don't provide any useful information without more context
No fields that describe the type of book or the book content -- but this information would be very important to allow users to identify books and decide whether they would like to read them
Seems that audiobooks have been mixed with normal books, but the only way to differentiate a book from its audiobook is the publisher's name (which is unreliable and ineffective)
books2.csv
Pros
Essential information such as book title, author, rating, ISBN, number of pages, publication date and publisher
Lists book genres and provides a book description (very useful for searching + providing recommendations)
Normalisation process will not take too many steps (only column that requires its own table is 'genres')
Book description would be especially helpful when the user is deciding which books to read (and add to their wishlist)
Cons
Formatting in the descriptions is different for each record (seems that some records had fancy formatting that was deleted when the descriptions were added to the database)
Some ISBNs and genres are missing (incomplete data)
Data storage + retrieval
Database is a relational database
Database will be generated by importing data from a .csv file into an SQLite database
Data will be stored + retrieved from the SQLite database