This chapter is about tools, libraries and technologies that are used in AsTeRICS Grid project:
This section is about tools that are used for development, dependency management and releasing.
The node package manager (npm) is used for managing Javascript dependencies and running various tasks related to the project. The npm configuration file is package.json.
The configuration file package.json includes the key dependencies
which include dependencies that are used in order to run AsTeRICS Grid:
- @klues/couch-auth: framework providing user management in connection to CouchDB, the database backend used by AsTeRICS Grid. Using fork of original couch-auth in order to fix session creation conflicts - already merged, so we could again use original
couch-auth
- cors: 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 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 Formatmatrix-encrypt-attachment
: used for Matrix messenger integrationmatrix-js-sdk
: used for Matrix messenger integration- morgan: 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: Javascript client for a couch-auth instance running on a server
- vue: 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.
The configuration file package.json includes the key dev-dependencies
which include dependencies that are used for development of AsTeRICS Grid. These are the most important ones:
- webpack: framework using for bundling javascript, vue and css resources
- webpack-dev-server: local http server for development of the application
- babel-core: framework for transpiling Javascript sources with newer language features to Javascript that is compatible with older browsers.
- jest: Unit testing framework for javascript
A description of available npm scripts is available in README.md.
Webpack 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.
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/.
These are the Javascript libraries that are directly imported:
- dom-i18n: easy to use DOM-internationalization library
- jQueryUI: library for user interface interactions, needed for jQuery contextMenu and GridList
- jQuery contextMenu: jQuery plugin for right-click context menus, used in AsTeRICS Grid e.g. for edit menu of a grid element
- jQuery: library for document traversal and manipulation, needed for jQueryUI
- loglevel: javascript logging library
- modernizr: for testing availability of JS features and redirect to
unsupported.html
if needed, see checks in index.html - ObjectModel: library for dynamic type checking, see data models in src/js/model/ - should be replaced by ES6 classes or TypeScript at some point.
- PouchDB: library for accessing IndexedDB and synchronization with a remote CouchDB
- responsive-voice: library for interacting with responsive voice service, generating TTS samples
- sjcl: crypto library published by Stanford University that is used for encryption of user configuration
- uart.min.js: library for interacting with WebSerial and WebBluetooth APIs, used for UART action.
- workbox-sw.js: library for creating Service Workers for offline support of the app