nJoy Documentation
Brief Overview     Quick Start
Core Concepts: Basics     Data Formats     Fetching Data     Uploading Data     Authentication    
Service APIs: User API     Group API     Photo API     Landmark API     Track API     Topic API    

Overview

nJoy is an experimental platform for creating Internet-based mobile services. It's designed to facilitate the development of mobile services based on standard web technologies.

nJoy provides a simple web interface for storing, retrieving and sharing data on the web. It's designed with standard web technology (like HTTP, XML, Atom, JSON) and it nicely integrates with the Web 2.0 approach to web services. nJoy also provides provides a high-level of customability for retrieving content on low bandwidth and high latency networks (like 2G and 3G). The main design philosophy is just enough requests, just enough data. This allows mobile clients to carefully tune the amount of data transiting in the network without compromising functionality. In short, nJoy makes it easy to publish content in a Web 2.0 environment and to optimize the data traffic in a mobile environment.

Some of the use cases that are supported by the nJoy APIs are:

  • Uploading and retrieving photos and metadata
  • Sharing photos in public and in groups
  • Updating current location, defining landmarks and uploading tracks
  • Synchronizing contacts and messages between the phone and network
  • Defining topic of interests
  • Mashing up data with other web services
  • Creating Atom feeds of personal content (like photos or location)

nJoy Functionality

nJoy can be thought of as a storage system that is operated with the basic HTTP operations GET, PUT, POST and DELETE. Each piece of information (binary and metadata) is a web resource that is identified by a well-defined URI. The HTTP operations are applied to the URIs in order to fetch a representation of the resource or to update its content. The key advantage of nJoy is to provide several methods for customizing the representations that are fetched from the network. Hence, clients can always fetch the optimal representation for a particular task.

The key functionality of nJoy is:
  • Uniform interface to the data (independent of the particular API)
  • Built to be flexible so that additional protocols or functional layers can be added in the future.
  • Based on the RESTful architecture style that easily integrates with any development kit (any client supporting HTTP connections can interact with nJoy, no extra software is needed)
  • Design architecture that favors cacheability
  • Global unique identification of data and content
  • Services are designed to be stateless (avoiding the bottleneck of session management in the backend)
  • Secure authentication mechanism and access control on the data. Data is securely stored on the backend and access is carefully checked. Data can be private, shared in a group or public.
  • Ease of use and fast learning curve
  • Well known practices for defining the service level agreement (for future usage)
  • Supports the thin client vision where data is kept stored in the network and clients mainly render views generated on the server-side.
  • nJoy supports the vision of the programmable web and Web 2.0

nJoy Design Requirements

The ultimate goal of nJoy is to provide a secure and reliable infrastructure for building internet-based services. There is a basic set of services (like storage, authentication, data format conversions) that should be taken for granted by projects that are building mobile applications and services. nJoy aims at providing the basic data layer for storing the raw data that is generated and consumed by several applications (web and mobile clients).

nJoy's approach is twofold. For Nokia internal users nJoy aims at creating a high-level data layer over a reliable, low-latency and scalable infrastructure (hiding the underlying implementation and storage solutions). Decoupling the content storage from the application functionality simplify system integration and facilitate sharing content across different applications/projects. For external users, nJoy aims at delivering set of coherent and well-structured web APIs that enables 3rd party developers to mashup data stored in nJoy with other services.

Based on these objectives, the key design requirements for nJoy are:

  • Scalable: nJoy must provide a scalable solution in terms of speed, capacity and throughput for a potential huge user base (millions of users).
  • Secure and Trustable: personal data of the users will be stored in nJoy. Therefore it must provide an adequate level of security.
  • Fast and Reliable: nJoy may become the underlying building block for applications with high-performance requirements.
  • Open and Easy: nJoy must provide a simple but reach interface for accessing the data.
  • Optimized for Mobile Usage: an important requirement for nJoy is to provide solutions that work in a mobile environment characterized by low bandwidth and high latency.

nJoy Design Principles

To address the previous requirements, nJoy follows the following design principles:

  • RESTful design: nJoy is based on the principles of the REST architecture design.
  • Uniform interface: The methods for operating with the API are generic and not API or data specific.
  • Simplicity: nJoy should be as simple as possible, but not any simpler.
  • Web standards: nJoy should be based on standard web technologies in order to simplify system integration.