User:Fozy81/sandbox

--

'''MOVED TO Hoodie (Software). This article is now live on Wikipedia'''

In computing, Hoodie is an open-source Javascript package, that enables offline first, Front-end web development by seamlessly providing a complete backend infrastructure. It aims to allow developers to rapidly design web applications using only frontend code by providing a backend based on Node.js and Apache CouchDB. It runs on many Unix-like systems as well as on Microsoft Windows.

Hoodie is produced by the Hoodie Open Source Project, founded by Jan Lehnardt and Gregor Martynus in 2011 and first released in 2013. It is written in Javascript and released as free software under the Apache License 2.0

Overview
Hoodie is designed to abstract away the configuration and communication between the database backend and allow web-based Front-end development using simple calls to the Hoodie API. Hoodie uses CouchDB to store data for the application. If the application is offline and cannot access the CounchDB database, data is stored locally on the device in the offline PouchDB database. The data will later be synced to CounchDB when the server is re-connected, using CouchDB’s unique database synchronisation feature.

Hoodie depends on Node.js and Node Package Manager (npm) Javascript packages to allow Hoodie to be used from the command line and to provide other tools for Hoodie projects. When Hoodie and its dependencies are installed, a skeleton project directory and basic files to start a web application including index.html and main.js are created. Hoodie can also be used with large web application frameworks such as Backbone.js, Ember.js or AngularJS.

The core Hoodie package is targeted at creating personal applications and saving user data to personal storage areas. For instance, for todo lists, memos or favourite book lists. A set of basic commands are provide to achieve these functions, such as user signup, login and store. Hoodie extensions provide functions beyond the core backend commands. Extensions can be written by anyone and use the npm package system. For instance, an extension to store data globally and allow mulitple users to share and collaborate on the same data can be installed.

Architecture
The core structure of Hoodie is to provide a Javascript package that provides API calls to store data on CouchDB or offline on PouchDB. The user does not need to understand how the on/offline synchronisation works. The backend is dealt with by simple commands to store and retrieve data.

Example of the store function:

The 'hoodie.store.add' function adds an object to a personal database store. The 'type' parameter is where the object will be stored in CouchDB. CounchDB is a noSQL database and as such does not have tables but the 'type' identifier is similar to adding to a particular table in a database. This allows data/documents of a similar type to be stored, queried or retrieved using the same type identifier.

Full example of store function:

The example above shows how a todo item could be added to the hoodie store. The item is added as with a type of 'todo' and the data sent is the simply a title value.

Community
Hoodie is open source and encourages community involvement. It is one for the first open source projects to establish a code of conduct from the outset. Hoodie community aims to involve both coders and non-coders in helping the project. As the Hoodie package is aimed at beginners and users unfamiliar with full stack development, the community encourages all levels of technical and non-technical users to get involved.

Characteristics

 * Designed for offline first, noBackend, noSQL web development.
 * Hoodie is open source and encourages community involvement.
 * Hoodie is flexible, further extensions to core functionality are encouraged.
 * Designed using an approach of writing simple, idealised 'dreamcode' and then finding a way to implement this into working code.

Platforms and users
Built to be cross-platform, Hoodie works on all major Linux distributions, as well as on other Unix-like systems Mac OS X, and Microsoft Windows support.

Hoodie is used commercially by the Appback hosting site, mintues.io web application and Neighbourhoodie development house.

A showcase of applications using Hoodie is provided on the Hoodie website.