/html5-indexeddb-nodejs

POC - HTML5 with local persistence in IndexedDB and REST with NodeJS

Primary LanguageJavaScriptGNU Lesser General Public License v3.0LGPL-3.0

IDBNodeSQL

This project is a proof of concept (POC). It's purpose is to demonstrate an implementation of IndexedDB to make local data persistence and to synchronize it to a remote SQLite database using a NodeJS REST API.

  • Server Application : A NodeJS REST API using SQLite as a database (sqlite.db). The code is written in ES6 and uses Promises.

  • Client Application : A Web interface using IndexedDB as a database (using Dexie library).
    Elements are displayed in views by VueJS.

Additionally, an Angular2 front is proposed by Imad El Hitti (without the IndexedDB part).

For more details, see the Technological Plan.

Installation

  1. Download or clone this repository : git clone https://github.com/so-technology-watch/html5-indexeddb-nodejs.git
  2. Then install its dependencies : npm install

Requirements

  • Git if you want to clone this repository.
  • NodeJS to run the application.
  • Npm to install dependencies (see the full list below at "Dependencies").
  • A Web Browser to test the Client Application.
  • Postman if you just want to test the API.

Getting started

  1. Install this application (See Installation).
  2. Start the server with : node index.js
  3. Start your Web Browser and go to http://localhost:3000
    Or connect Postman to the API at : http://localhost:3000
  4. Try the different "Cars" and "Drivers" web pages and the different routes of the API.

For more details, see the Wiki documentation.

Dependencies (installed via npm install)

  • Body-parser, a Node.js body parsing middleware.
  • Ejs embedded JavaScript templates.
  • Express, a fast and minimalist web framework for node.
  • Sqlite, a wrapper library that adds ES6 promises and SQL-based migrations API to sqlite3*.
  • Bluebird promise library.

*Sqlite3 : (Asynchronous, non-blocking SQLite3 bindings for Node.js.)

Todo

  • Add/Refactor comments in code.
  • Refactor front code.

Credits

Thanks

License

This project uses the LGPL v3 License (See the LICENSE file in this repository).