# Tools and libraries
This chapter is about tools, libraries and technologies that are used in AsTeRICS Grid project:
# Tools
This section is about tools that are used for development, dependency management and releasing.
# Node package manager (npm)
The node package manager (npm) (opens new window) is used for managing Javascript dependencies and running various tasks related to the project. The npm configuration file is package.json (opens new window).
# npm dependencies
The configuration file package.json (opens new window) includes the key dependencies
which include dependencies that are used in order to run AsTeRICS Grid:
- @klues/couch-auth (opens new window): framework providing user management in connection to CouchDB (opens new window), the database backend used by AsTeRICS Grid. Using fork of original couch-auth (opens new window) in order to fix session creation conflicts (opens new window) - already merged, so we could again use original
couch-auth
- cors (opens new window): CORS handler for HTTP requests, used by couch-auth
dotenv-flow
: used bysuperlogin/start.js
express
: used bysuperlogin/start.js
file-saver
: used fordownload backup to file
featurehls.js
: used for playback of special audio streams for web-radio and podcast featureshtml2canvas
: used for creating thumbnail screenshots of gridsinteractjs
: used by vue-css-grid-layout (opens new window) library (this library is not used as npm dependency, but the code is duplicated in foldersrc/vue-components/grid-layout
)jspdf
: used by PDF export featurejszip
: used for importing/exporting OBZ files from Open Board Format (opens new window)matrix-encrypt-attachment
: used for Matrix (opens new window) messenger integrationmatrix-js-sdk
: used for Matrix (opens new window) messenger integration- morgan (opens new window): logger for HTTP requests, used by couch-auth
n-ary-huffman
: used for Huffman input methodnavigo
: used for in-app routing, seerouter.js
pouchdb
: library for connecting with external CouchDB - the npm dependency is used bysuperlogin/start.js
, the app uses the direct import inindex.html
, see below.predictionary
: library for self-learning dictionary used for keyboard inputs, also see dictionaries atapp/dictionaries
- superlogin-client (opens new window): Javascript client for a couch-auth instance running on a server
- vue (opens new window): framework for building the user interface
vue-i18n
: internationalization library for Vue.jsvue-multiselect
: multiselect component, used for selecting tags in word forms feature
Also see other directly imported Javascript libraries.
# npm dev-dependencies
The configuration file package.json (opens new window) includes the key dev-dependencies
which include dependencies that are used for development of AsTeRICS Grid. These are the most important ones:
- webpack (opens new window): framework using for bundling javascript, vue and css resources
- webpack-dev-server (opens new window): local http server for development of the application
- babel-core (opens new window): framework for transpiling Javascript sources with newer language features to Javascript that is compatible with older browsers.
- jest (opens new window): Unit testing framework for javascript
# npm scripts
A description of available npm scripts is available in README.md (opens new window).
# Webpack
Webpack (opens new window) is used in order to bundling the Javascript sources to a single and minified bundle file. The configuration file for webpack is webpack.config.js (opens new window).
# Javascript libraries
This section is about Javascript libraries that are used within the AsTeRICS Grid project and are imported directly in index.html
and not via npm
. All directly imported libraries are located at app/lib/ (opens new window).
These are the Javascript libraries that are directly imported:
- dom-i18n (opens new window): easy to use DOM-internationalization library
- jQueryUI (opens new window): library for user interface interactions, needed for jQuery contextMenu and GridList
- jQuery contextMenu (opens new window): jQuery plugin for right-click context menus, used in AsTeRICS Grid e.g. for edit menu of a grid element
- jQuery (opens new window): library for document traversal and manipulation, needed for jQueryUI
- loglevel (opens new window): javascript logging library
- modernizr (opens new window): for testing availability of JS features and redirect to
unsupported.html
if needed, see checks in index.html (opens new window) - ObjectModel (opens new window): library for dynamic type checking, see data models in src/js/model/ (opens new window) - should be replaced by ES6 classes or TypeScript at some point.
- PouchDB (opens new window): library for accessing IndexedDB (opens new window) and synchronization with a remote CouchDB (opens new window)
- responsive-voice (opens new window): library for interacting with responsive voice service, generating TTS samples
- sjcl (opens new window): crypto library published by Stanford University that is used for encryption of user configuration
- uart.min.js (opens new window): library for interacting with WebSerial and WebBluetooth APIs, used for UART action.
- workbox-sw.js (opens new window): library for creating Service Workers for offline support of the app
← 01 Structure 03 Grid →