I find myself with the time to start a new project, and I’m planning on logging the development process so here goes. It’s going to be a digital implementation of the small but very helpful productivity process called the Pomodoro Technique.
The key goal of the project is to create a comprehensive implementation of a HTML5 Offline Application that addresses the following criteria:
- Client Application for Mobile and Desktop that works with or without an internet application.
- Server Application that functions entirely as an API, for authentication, backup and synchronisation.
- Support for client side translation.
- Full application is accessible for screen readers, and usable by those without sight.
- Application is usable across the full spectrum of modern mobile and desktop browsers, at least on the mobile side: iOS, Android and WinPhone; and on the desktop side: IE9/10, Chrome, Firefox, Safari, Opera.
While I don’t know how things will turn out in the end, my initial plan is to use the following tech:
- AngularJS for client side application control, templates and code modularity.
- JayData for offline storage abstraction, to support both WebSQL and IndexedDB without having to write low level code for both.
- ngTundra, an Angular Module I’ve written for client side translation.
- Written is Scala, ethos being the server API should be as rock solid as possible to keep all other clients honest. This means having type safety, plus using a functional style as much as possible to reduce side effects.
- More exploration needs to be done in this space, but I’m hoping to work with Finagle + routing delivered through something like Finatra.
- The server will avoid doing anything beyond API communication as much as possible.
Anyway, it’s just the beginning and at the moment I’m scaffolding the code base and wire-framing. I’ll use this blog as a development log, looking to talk about all sorts of things such as implementation details, the tools I’ll be using, and any major difficulties I experience working through the above plan. Here we go!