JavaScript

Stack

This describes our technology stack and we are mainly using React in latest implementations.

Frameworks

Bootstrap

OpusCapita user interface uses an extended version of Twitter Bootstrap 3.3.7 HTML, CSS and JS framework for developing web-based HTML5 user interfaces.

Bootstrap 4

CSS
Uses Sass instead of Less for source CSS files. Sass is used in new implementations.
Icons
Drops Glyphicons icon fonts. For alternative use Font Awesome.
Flexbox
Uses Flexbox by default. Flexbox is very useful for creating layouts more easily.

React

User interfaces are mainly built using React with JSX syntax and ES6.

Library Description Notes
React Library for building user interface
React Bootstrap JavaScript parts of Bootstrap with React components Bootstrap 4 fork of React Bootstrap
React Intl Internationalization library for React. Used for Internationalization and formatting dates, numbers and strings.
React Redux React binding to Redux. Provides a convenient way for "connecting" React to Redux by using connect higher order component (HOC).
React Router Routing library for React
React Redux Router React bindings to between Redux and Router. Used for keeping state in sync with router.
Redux Thunk Redux Middleware for Async actions
Draft.js Draft.js is a framework for building rich text editors in React.
React-Motion A spring that solves your animation problems.
Recompose A React utility belt for function components and higher-order components.

Libraries

Library Description Notes
Axios Promise based HTTP client
SuperAgent SuperAgent is a small progressive client-side HTTP request library, and Node.js module with the same API, sporting many high-level HTTP client features.
Immutable Immutable collections for JavaScript
Redux State handling. Redux is a predictable state container for JavaScript apps.
Lodash A modern JavaScript utility library delivering modularity, performance & extras
shallowequal Like lodash isEqual but for shallow equal
Classnames A simple JavaScript utility for conditionally joining classNames together
Validate.js Validate.js provides a declarative way of validating javascript objects
Moment.js Parse, validate, manipulate, and display dates and times in JavaScript
React DnD Drag and Drop for React

Test frameworks and tools

Library Description Notes
Mocha Mocha is a feature-rich JavaScript test framework
Jest Zero configuration testing platform. Jest is used by Facebook to test all JavaScript code including React applications.
Chai Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.
Jasmine Jasmine is a behavior-driven development framework for testing JavaScript code./td>
Enzyme Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output.
Istanbul Yet another JS code coverage tool that computes statement, line, function and branch coverage with module loader hooks to transparently add coverage when running tests. Supports all JS coverage use cases including unit tests, server side functional tests and browser tests. Built for scale. Could be used together with nyc (the Istanbul command line interface)
Sinon Standalone test spies, stubs and mocks for JavaScript. Works with any unit testing framework.
Nock Nock is an HTTP mocking and expectations library for Node.js

Build Tools

Library Description Notes
Babel JavaScript compiler ES6 is used, but ES2017 is not used yet.
Webpack Module bundling Use version 2.x and update existing 1.x to 2.x as soon as possible.
ESLint The pluggable linting utility for JavaScript and JSX Used together OpusCapita ESLint config
OpusCapita npm scripts Package provides an unified release/build approach for npm package and grails plugin from npm packages.

Node.js server side frameworks and libraries

Library Description Notes
Express Fast, unopinionated, minimalist web framework for Node.js Often used together with the following libraries:

body-parser
Node.js body parsing middleware.
cookie-parser
cookie parsing middleware
Helmet
Helmet helps you secure your Express apps by setting various HTTP headers

Sequelize Sequelize is a promise-based ORM for Node.js and io.js Optionally could be used with Epilogue to create flexible REST endpoints and controllers from Sequelize models in Express app
Intel Logging library thst supports hierachical named loggers, convenient configuration and console injection(replacement)
morgan HTTP request logger middleware for node.js
Passport Passport is authentication middleware for Node.js
Request Simplified HTTP client
Nodemailer Library for email sending

Other

Following are still used in some products, but should not be used in new implementations.

jQuery

Library Description Notes
jQuery Fast, small, and feature-rich JavaScript library for document traversal and manipulation, event handling, animation, and Ajax. Use as latest version as possible.
jQuery UI Curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Not used in new implementations.
jqGrid
jQuery-File-Upload File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Not used in new implementations.
jQuery Tipsy Tipsy is a jQuery plugin for creating a Facebook-like tooltips effect based on an anchor tag's title attribute. Not used in new implementations.

Twitter Bootstrap

Library Description Notes
bootstrap-switch Turn checkboxes and radio buttons in toggle switches. Not used in new implementations.
bootstrap-datepicker Flexible datepicker widget in the Bootstrap style. Not used in new implementations.
Color Picker Not used in new implementations.

CSS

Library Description Notes
Normalize.css Part of Bootstrap. Not used in new implementations.

JS Plug-Ins, which are part of Bootstrap

Library Description Notes
ScrollSpy.js Part of Bootstrap. Not used in new implementations.
Transition.js Part of Bootstrap. Not used in new implementations.
Button.js Part of Bootstrap. Not used in new implementations.
Collapse.js Part of Bootstrap. Not used in new implementations.
Affix.js Part of Bootstrap. Not used in new implementations.