Hoodie (software)

Last updated
Hoodie
Developer(s) Hoodie Open Source Project
Initial release2013;10 years ago (2013)
Written in Javascript
Type Web development
License Apache
Website hood.ie

In computing, Hoodie is an open-source JavaScript package, that enables offline-first, [1] front-end web development by providing a complete backend infrastructure. [2] It aims to allow developers to rapidly develop web applications using only front-end code by providing a backend based on Node.js and Apache CouchDB. [3] It runs on many Unix-like systems as well as on Microsoft Windows.

Contents

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

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 CouchDB database, data is stored locally on the device in the offline PouchDB database. The data will later be synced to CouchDB when the connection to the server is re-established, using CouchDB's database synchronisation feature. [7]

Hoodie depends on Node.js and Node Package Manager (npm) to allow it 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 an application including index.html and main.js are created. Hoodie can also be used with large web application frameworks including Backbone.js, Ember.js, and AngularJS. [8]

The core Hoodie package is targeted at creating personal applications and saving user data to personal storage areas. For instance, for to-do lists, memos or favourite book lists. A set of basic commands is provided to achieve these functions, which includes user signup, login, store, and more. 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 multiple users to share and collaborate on the same data can be installed. [9]

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 online/offline synchronisation works. The backend is dealt with by simple commands to store and retrieve data.

Example of the store function:

hoodie.store.add(type,object);

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:

$('#todoinput').on('keypress',function(event){if(event.keyCode===13&&event.target.value.length){hoodie.store.add('todo',{title:event.target.value});event.target.value='';}});

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 of the first open source projects to establish a code of conduct from the outset. [10] [11] 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 software development, the community encourages all levels of technical and non-technical users to get involved.

Characteristics

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 which uses hoodie to provide a Back end as a Service (BaaS), [12] minutes.io web application and Neighbourhoodie development house.

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

See also

Related Research Articles

A collaborative real-time editor is a type of collaborative software or web application which enables real-time collaborative editing, simultaneous editing, or live editing of the same digital document, computer file or cloud-stored data – such as an online spreadsheet, word processing document, database or presentation – at the same time by different users on different computers or mobile devices, with automatic and nearly instantaneous merging of their edits.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

<span class="mw-page-title-main">Mnesia</span>

Mnesia is a distributed, soft real-time database management system written in the Erlang programming language. It is distributed as part of the Open Telecom Platform.

<span class="mw-page-title-main">Apache CouchDB</span> Document-oriented NoSQL database

Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang.

Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications—as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.

<span class="mw-page-title-main">WaveMaker</span> Low-code programming platform

WaveMaker is an enterprise-grade Java low-code development platform for building software applications and platforms. WaveMaker Inc. is headquartered in Mountain View, California. For enterprises, WaveMaker is a low-code platform that aims to accelerate their app development and IT modernization efforts. For ISVs, it is a consumable low-code component that can sit inside their product and offer customizations.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">Google Wave</span> Software framework for real-time collaborative editing online

Google Wave, later known as Apache Wave, was a software framework for real-time collaborative editing online. Originally developed by Google and announced on May 28, 2009, it was renamed to Apache Wave when the project was adopted by the Apache Software Foundation as an incubator project in 2010.

<span class="mw-page-title-main">Node.js</span> JavaScript runtime environment

Node.js is a cross-platform, open-source server environment that can run on Windows, Linux, Unix, macOS, and more. Node.js is a back-end JavaScript runtime environment, runs on the V8 JavaScript Engine, and executes JavaScript code outside a web browser.

<span class="mw-page-title-main">Couchbase Server</span> Open-source NoSQL database

Couchbase Server, originally known as Membase, is an open-source, distributed multi-model NoSQL document-oriented database software package optimized for interactive applications. These applications may serve many concurrent users by creating, storing, retrieving, aggregating, manipulating and presenting data. In support of these kinds of application needs, Couchbase Server is designed to provide easy-to-scale key-value, or JSON document access, with low latency and high sustainability throughput. It is designed to be clustered from a single machine to very large-scale deployments spanning many machines.

<span class="mw-page-title-main">Opa (programming language)</span>

Opa is an open-source programming language for developing scalable web applications.

Meteor, or MeteorJS, is a partly proprietary, mostly free and open-source isomorphic JavaScript web framework written using Node.js. Meteor allows for rapid prototyping and produces cross-platform code. The server-side MongoDB program is the only proprietary component of Meteor and is part of the Meteor download bundle. It is possible to use Meteor without using the server-side MongoDB. It uses the Distributed Data Protocol and a publish–subscribe pattern to automatically propagate data changes to clients without requiring the developer to write any synchronization code. On the client, Meteor can be used with any popular front-end JS framework, Vue, React, Svelte, Angular, or Blaze.

Kotlin is a cross-platform, statically typed, general-purpose high-level programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise. Kotlin mainly targets the JVM, but also compiles to JavaScript or native code via LLVM. Language development costs are borne by JetBrains, while the Kotlin Foundation protects the Kotlin trademark.

Elliptics is a distributed key–value data storage with open source code. By default it is a classic distributed hash table (DHT) with multiple replicas put in different groups. Elliptics was created to meet requirements of multi-datacenter and physically distributed storage locations when storing huge amount of medium and large files.

Firebase is a set of backend cloud computing services and application development platforms provided by Google. It hosts databases, services, authentication, and integration for a variety of applications, including Android, iOS, JavaScript, Node.js, Java, Unity, PHP, and C++.

<span class="mw-page-title-main">React (software)</span> JavaScript library for building user interfaces

React is a free and open-source front-end JavaScript library for building user interfaces based on components. It is maintained by Meta and a community of individual developers and companies.

The following outline is provided as an overview of and topical guide to MySQL:

AppSheet is an application that provides a no-code development platform for application software, which allows users to create mobile, tablet, and web applications using data sources like Google Drive, DropBox, Office 365, and other cloud-based spreadsheet and database platforms. The platform can be utilized for a broad set of business use cases including project management, customer relationship management, field inspections, and personalized reporting.

References

  1. "Offline first web applications". thoughtworks. Retrieved 14 Jan 2017.
  2. "open-source hoodie is tailored for quick app dev". InfoWorld. Retrieved 14 Jan 2017.
  3. "hoodie part-1 an intro to hoodie". peteonsoftware. Retrieved 14 Jan 2017.
  4. "Twitter: @janl". @janl. Retrieved 2 Jan 2017.
  5. "First Hoodie presentation at apps.berlin.js (28.02.2013)". Alex Feyerke. Retrieved 2 Jan 2017.
  6. "License". Hoodie Open Source Project. Retrieved 29 Dec 2016.
  7. "CouchDB Replication Protocol". Apache CouchDB. Retrieved 2 Jan 2017.
  8. "Discover fast app dev with Hoodie". gadgetdaily. Retrieved 2 Jan 2017.
  9. "hoodie-plugin-global-share". Hoodie Open Source Project. Retrieved 14 Jan 2017.
  10. "Code of Conduct". TWiTFLOSS. Retrieved 29 Dec 2016.
  11. "Hoodie aims to be one of open source's most diverse and inclusive communities". Opensource.com. Retrieved 2 Jan 2017.
  12. "Don't leave users hanging making your hybrid app run offline". appback. Retrieved 14 Jan 2017.