Description¶
Console is a web-app targeted to App builders and Endusers which help to create and use workspaces, automations and applications.
It runs on every modern browser up to date (Chrome, Firefox, Safari, Edge).
A user account is needed to access the service.
Technical stack¶
Library |
Usage |
Version |
Typescript | Language | 4.5.2 |
React | VDOM library | 17 |
Next | Framework | 12 |
next-i18next | Internationalization utility | 10 |
final-form | Forms management | 4 |
socket.io | WebSocket | 4 |
The web app is built on top of typescript language and React/NextJS framework.
Through NextJS, the app is dynamically routed and some pages can be rendered on server side for SEO and caching.
Internationalization is managed by i18next. Translations are located in public/:lang folder under many json files.
Languages supported are english, french and spanish. English is the default language.
Forms are managed by final-form.
Realtime connexion with EDA uses socket.io library.
App states are managed by React context API with thematic Providers.
Design¶
The console should be responsive, usable on width > 768px. On smaller devices, some functionalities may not be available. An explication will be displayed to let user knows what he could do on a bigger screen.
The features should have accessibility in mind. Main functionalities should be usable with keyboard and readable with a screen reader.
Performance¶
Run Lighthouse to check for performance, best practices, accessibility, and SEO. For best results, use a production build of Next.js and use incognito in your browser so results aren't affected by extensions.
Lighthouse's results must be green.
Quality¶
Development and quality standards¶
- At least 70% test coverage
- Maximum 3 % duplicated code
Tests¶
All components have a minimum snapshot test. Complex components have as many snapshots than different possible states. Utils have unit tests.
Tests |
Minimal coverage rate |
Details |
Unit tests | At least 70% | N/A |
Snapshot tests | At least 70% | All components have a minimum snapshot test. Complex components have as many snapshots than different possible states. |
E2E | 30% | N/A |
Logs¶
No log must appears in user's console.
Errors¶
Unexpected errors are sent to sentry.
Security¶
App only read path which is parsed by NextJS. XSS attack should not be possible.
Authenticated user token is stored in local storage.
Company Social Responsibility (CSR)¶
- Use lazy loading for occasional resource loading
- Limit databases results with pagination
- Group massive processing into more effective batches
Hosting¶
Dockerfile, docker-compose and Helm chart ready to use.
Linting¶
The code should be formatted using Prettier, using the version specified in the package.json