Project details

Status
Legacy
Year
2015
Technologies
Django, REST, Postgres, Materialize

Javoo first approached Coded Internet through a colleague looking for a backend REST API for a mobile application. The relationship with Javoo grew and Coded Internet has so far created the API, and developed a temporary coming soon holding page, complete with mailing list signup.

The Javoo Story

Javoo is a family based private company, set up in memory of the co-founder’s family member who had Alzheimer’s. At Javoo our mission is simple the more we know about the individual with Alzheimer’s the better communication is.

Javoo Website

Javoo was created by the Rosenberg family to help the carers of those with Alzheimer’s. Initially just an Android mobile app, hopes are that this becomes a huge success and becomes a multi-platform social network.

REST API

The first challenge with Javoo was to create REST API that was capable of allowing users to create their own “world”, invite their friends to it, and share and comment on photos. To achieve this, we used the excellent Django web framework complete with the Django Rest Framework package and Django OAuth Toolkit. This allowed us to focus on the important elements of the API, such as ensuring that users could quickly find all images mentioning a certain tag without having to worry about the more mundane and sensitive tasks of user management, authentication, data input and validation.

Tags everywhere

One of the requirements of the Javoo API was the ability to find images by searching for a tag. The tags came in #tag format, and could exist in either the photo description or any of the comments posted to it.

In order to make the process of retrieving these as efficient as possible, an index of tags was built when one of the tag-able objects was saved. Although this created a lot of duplicate non-normalised data, it allowed the query to find tagged photos to be done by the database and not the application. Django’s built in Object Relationship Manager (ORM) handled the building of this query allowing the application to be compatible with a number of database engines.

Photos

The main element of the API is handling photos. These are stored on Amazon S3 and the URL to the file stored in the database. A Django backend is used to automatically handle the storage of the file, and its retrieval later. File names are randomly generated as a security measure.

In order to prevent the user downloading the same image multiple times, the serialised photo object also has a URL to an image thumbnail. It is possible for a client application to specify the dimensions of this photo through the URL. The generated thumbnail is stored for a time for when a subsequent request is needed, and the thumbnail URL stored in memcache so it can be quickly retrieved. In the event of memcache filling up, the oldest thumbnail is discarded to make way for newer ones.

Website

The Javoo website was designed to be fitting with the theme of Android applications. As such, it was created with Materialize, a CSS framework based on Google’s house style, Material Design. The design is mobile first, the content as consistent as possible across devices, and extremely efficient to load. The pages for the site are version controlled with git, and updated by pushing to our production server. Hopefully soon a CMS system will be implemented allowing easier updating of content, however due to time constraints it was quicker to launch without this and add it in later.

The design feature big bold blocks of colour designed to stand out on screen complemented by subtle shadows and layering. The resulting product looks modern and clean, whilst at the same time remaining informative for elderly users.

Hosting

Javoo’s online presence is hosted with Heroku, a Platform-as-a-Service built on top of the Amazon AWS Infrastructure-as-a-Service. This allowed us to not worry about building and maintaining servers, or have to focus time on scaling and redundancy later. All deployments are managed through git and add ons can be easily provisioned if required.

Heroku also perfectly compliments S3 storage and this is heavily used for serving static files.

Future

This is only the start for Javoo, and overtime the website will evolve and grow, along with an exciting web and iOS versions of the app. For now, check them out on Facebook, twitter and Instagram

2016 Update

Shortly after publishing the original article, Coded Internet parted ways with Javoo, and shortly thereafter they ceased trading. Their site continued to be available for a short period of time, however the domain is no longer registered