Deseretbook Bookshelf

“[Luke:] I can’t believe it. [Yoda:] That is why you fail.”

In last 2 years we developed Android version of ebook reader for Deseretbook company. Deseretbook is a 150 year old publishing house based in Salt Lake City. It is focused on publishing Mormon Religion books ( the 5-th edition of Book Of Mormon is one of the most expensive rare books in USA, valued 40 000 USD ). Deseretbook works also in another different genres like classic novels, philosophical literature, audiobooks of different genres, etc.

With developing ebook reader the goal was to increase the publisher's auditory, deliver nice reading experience, open possibility for delivering of new media to the end users.

For this purpose in May 2014, Mr. Tom Welch - experienced software development manager and former CTO of Linspire linux distribution, contacted OSI in search of capable mobile development team in Sofia. So here we are - me, Maya Vlaevska and Mr. Welch met at the "Ivan Ivanov" office and started development. Initialy the development team consisted by Tom Welch, Russell Thornton - android developer in Deseretbook office, me -working remotely and Maya doing QA job. After few months of collaboration, Mr. Welch decided to move the whole development in Sofia and asked me to build development team. Our team build efforts lead to developing an OSI team.

This team now is well known for it's agility, technology competence, discipline, team spirit and ability to develop nice mobile solutions.

So who we are ?

Stancho Stanchev - software craftsman, requirements engineer, methodologist, mentor.

Svetlin Karabov - experienced android developer.

Ivajlo Dimitrov - android developer.

Julian Benkov - experienced IOS developer and UI software engineer.

Maya Vlaevska - QA lead.

Victoryia Dimitrova - QA.

Nikolay Tsinigarov - former member - android developer.

For a year in Google Play we have more than 50 000 downloads. To date - 08.12.2016 - only 8% of free applications in Google play has more than 50 000 downloads.

The application itself is rated 4.2 out of 5 stars by customers. 25 000 different Android devices are supported according Google Play statistics. Application registers average 7000 sessions per day and 2 200 active devices per day. We also take part in development of IOS version of the application which has the same functionality.

The application itself is pretty huge for mobile app - 100 000 lines of code, 900 classes, 8 000 methods in 700 files. Objective-C version has 114 000 lines of code, 400 classes in 1300 files.

Main functional parts of Deseretbook Bookshelf:

Library management; with two library views - grid and list view; few library filters; library search engine;

Download management; download selected book from site; download of all the books from library simultaneously;

Markups management; bookmarks, highlights, custom notes, tags - CRUD operations; micro search engine; opening a book;

Quotes management; quote of the day; grouping by authors and sources; create a quote;

Account management; messages; wish list;

EBook management; open, paginate, draw markups, calculate markups;

Audiobook management; play in foreground and background, markups;

library in grid view, filter by audiobooks applied

Actually this is the main view of the user's library.

Architectural remark: MVC or MVP or what... paradigm shifting... or switching... wait, wait, wait... too many images... and fragments too... and lists, and all this dances on the screen... scream...

“Do not assume anything Obi-Wan. Clear your mind must be if you are to discover the real villains behind this plot.“ - Yoda

discovery view with channels

Discovery view with channels. Channel is abstraction level entity.

Architectural remark: "mise en place" ( this is gourmet cooks philosophical sentence - meaning - everything on it's place )... place you said...

place this - where is it...? - Yoda ?... not Yoda ! Stancho started speaking like Yoda...

making selection in open ebook

This is how opened book looks like.

Methodology remark: A QA, a QA! My kingdom for a QA!

“How did you know, how did you know, Master Yoda?” Master Yoda knows these things. His job it is.” - Yoda...? yes... and Maya too... answering to Ivo's question...

markups drawn over ebook content

Few markup types are supported. Two transparent are transparent also.

Architectural remark: select it... with mouse... can it be selected simultaneously with all 100 mouses that the Master owns... mistake... mistake... big mistake... he really will do this possible... and he ordered 101-st... rumors say it is a big, fat RAT... which one - ver. 7 or ver. 9...

ebook table of content

Book table of content is shown.

Architectural remark: this has to be shown automatically on first book open... but if we open a book from external link for the first time... probably it shouldn't be visible... may be... think on that...

“Ready are you? What know you of ready? For eight hundred years have I trained Jedi. My own counsel will I keep on who is to be trained. A Jedi must have the deepest commitment, the most serious mind." - Yoda

local search in ebook

Local search in current book is supported.

Architectural remark: sometimes it can be done in main thread... but avoid that... you never know when this task will became too big for main thread... avoid "example driven development" in your professional works...

“PATIENCE YOU MUST HAVE my young padawan” - Yoda

markups view on bookmarks list

Markups view of user's library.

Architectural remark: UI specifics - tabs in another tab...these UI is mostly reused from ver. 1 of the application, and after that modified...fragments do nice job here... reuse...

“Do or do not. There is no try.” - Yoda... calls for Svetlin...

list of tags

Tag names in left, books with this tag on the right.

Architectural remark: what TransactionTooLargeException is... why Google, why it is not well documented... why committing fragment transaction is async... secretly...

quote view

Quote view.

DBQuote today = DBQuote.findQuoteByDate(new Date()); if (today != null) {

“Powerful you have become, the dark side I sense in you.” - Yoda... commenting this Svetlin's quantum leap snippet...

audiobook view

Main audiobook view. Audio service that understands only mp3 files, but this made it unextendible in functionality...because it has not enough information passed to it... Don't be dogmatic in following the rules... sometimes to be agile means to break the rules... but be wise, careful and disciplined when you do that... as you will walk on thin ice... there has to be "breaking the rules" authority in the team... who will take responsibility...

“If no mistake have you made, yet losing you are … a different game you should play” - Yoda... advising Victoryia how to find a bug... sometimes this doesn't help... she eats special mushrooms...

audiobook with bookmarks

Bookmarks of audiobook are shown.

Architectural remark: how I can mark the time... you can buy this from Julian... oh... but Yesterday he rised the prices... again... following Apple...

“The dark side clouds everything. Impossible to see the future is.” - Yoda... calls Julian for enlightenment...

general search functionality

General search functionality.

Architectural remark: search all simultaneously... whah... can not be done... ... and you should follow the "Don't Disable Controls" principle... this is some nightmare... MVVM is good here... because we have different sources to generate same view... UI ticketing helps in resolving "fast fingering" issues...

“Difficult to see. Always in motion the search engine is..” - Yoda...? almost... - Ivo

Future plans include adaptation for Android TV and Apple TV and integration with Google Auto.

“May the Force be with you.”-Yoda... and OSI Deseretbook team

Made with Adobe Slate

Make your words and images move.

Get Slate

Report Abuse

If you feel that this video content violates the Adobe Terms of Use, you may report this content by filling out this quick form.

To report a Copyright Violation, please follow Section 17 in the Terms of Use.