PWA App for Reviewing Workshops

Progressive Web Application for reviewing workshops based on the materials from Castrol.

Project Brief

Castrol is a British global brand(belongs to British Petroleum) of industrial and automotive lubricants offering a wide range of oils, greases, and similar products for most lubrication applications.

Before selecting an appropriate workshop that will be authorized to sell their products Castrol had to check that the workshop is eligible as well as to monitor it from time to time.

The customer contacted Devico to implement PWA for workers, that will review workshops. The main requirement was to have the ability to make a review in both offline and online modes.

Project Details

Industry: Machinery
Engagement Model: Time and Material
Technologies: Azure • NodeJS • CosmosDB • JavaScript • NodeJS • React • Redux • Material UI • Koa • PWA • Dexie.js • OAuth2 • AJV • Jest

The Challenge

Progressive Web Applications should work in both online and offline modes. The first challenge was to implement the right architecture for maintaining all data in sync with local IndexedDB on the front-end. Also, we had to implement the ability to mark changes and new entries to upload them when the user came back online. A massive amount of work performed to make the whole application available for offline usage.

Another challenge was the implementation of client-side validation with the same rules as it applied to the backend. To do this, we used JSON Schema with the same validation applied to both client and back-end.

The authentication was an additional challenge because we had to call their API, which was not designed to work in the needed way, especially in offline mode. So, we decided to encrypt credentials on the fly using dynamically generated RSA keys. We stored those encrypted credentials in user JWT token; the public key for them stored on the backend. On each token refresh, we generated new pairs of keys, which allowed us to have credentials secured; they cannot be retrieved without both parts.

2

developers worked

1000+

hours spent

100+

features implemented

14

techonolgies used

Technologies Used

JS
Node.js
ReactJS
Redux
Material-UI
Koa
Jest
Azure
CosmosDB
Dexie.js
PWA
Oauth2
AJV