Job description
---------------
Enhance open source Javascript reader of HTML-based ebooks [Monocle][] to support additional features as seen on [[login to view URL]][] (developers of Monocle, with custom features added) for Webkit-based iPhone app:
[Monocle]: [login to view URL]
[[login to view URL]]: [login to view URL]
- Add touch-scrollable Table of contents when list of chapters is longer than vertical screen size.
Monocle already comes with [[login to view URL]]([login to view URL]), which creates an onscreen tappable widget which brings up a TOC's pop-up. When the TOC is longer than its popup, though, overflowing chapters are not accessible, since the list is only scrollable on a regular browser, not on iPhone/iPad's touch-based Webkit. [login to view URL]'s version is scrollable on the iPhone.
- Add bookmarking system, which the reader can use to return to specific reading points at any moment. Bookmarks should be kept after after quit/reopen.
- Add variable font sizing that stays after quit/reopen. Monocle comes with [[login to view URL]]([login to view URL]) to alternate between two fixed CSS font sizes (100%, 115%). Turn it into controls that make the current font-size "bigger" or "smaller", instead of fixed values.
- Add cover animation based on CSS 3D Transforms (this one is not required but definitely a plus).
- Add state saving so that reading point is restored upon quit/reopen (via Monocle's [[login to view URL]]([login to view URL]), or cookies, or persistent storage or any trick you provide).
All these features are already implemented in [login to view URL]'s enhanced version of Monocle. I.e. This [Monocle sample book][] does not have them, while this [[login to view URL] sample book][] does (and then some others that I do not need).
[Monocle sample book]: [login to view URL]
[[login to view URL] sample book]: [login to view URL]
Plus:
- Integrate [[login to view URL]]([login to view URL]), which will dinamically re-hyphenate text on change of line length (because of font-size, orientation and screen size). I.e. the hyphenating engine is already implemented, you just need to make Monocle load the script. See Monocle's main developer [hint]([login to view URL]) on possible approach.
- Change lateral tap/click behaviour to not slide page to tapped/clicked coordinates while on hold (it causes jerky motion on slower iPhones), while keeping the on-release effect of sliding to next/previous page by touch-based gestures of lateral tapping or sliding to move to next/previous page.
Required skills (do not apply if you do not master them)
---------------------------------------------------------
- High profiency in Javascript programming.
- Experience implementing DOM Touch events targetting Mobile Safari for iOS (see <http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariJSRef/_index.html> if you think you can learn that up and master it **before** applying).
- Having had a deep look at Monocle's code and see how it works (uncompressed it is barely 100KB).
- Need to have an iPhone or iPod touch or iPad, since even if web-based, those are the intended platforms.
Not required but definitely a plus:
- Experience implementing CSS 3D Transforms targetting Mobile Safari (in order to deck up some transitions between pages, such as that of [login to view URL] cover and backcover).
- Experience with web-to-native app frameworks such as PhoneGap, NimbleKit, Appcelerator Titanium or others that will allow to wrap the web project inside an iOS App.