Skip to content

Technology

AleksiP edited this page Dec 2, 2020 · 5 revisions

Leaflet

Leaflet was chosen for it's simplicity and maintainability for what it's meant for. OpenLayers was also considered but since servicemap doesn't require complex drawing tools, Leaflet was chosen for it's easier usability. Using combination of pure leaflet and react-leaflet because react-leaflet couldn't handle marker clustering

Considered options

  • OpenLayers was considered but deemed unnecessary for this project because of it's complexity wasn't required

Redux

Redux was chosen as the state management tool for the project. Its clear and spesific design constraints and scalability help keep the logic intact and functional in case the product is developed further by different programmers.

Additional libraries

  • React redux is used to connect react to redux store
  • Redux Thunk is used too handle fetch-requests that need to be executed asynchronously
  • Reselect is a library that helps redux state management by creating memorised selectors that reduce unnecessary component updating

Considered options

Mobx was considered, but we decided to choose the more stricter state management system. Since the project will likely have programmers changing multiple times during development, it would make more sense to choose a system with less freedom and chances for unintended spreading of code. There was also talk about this project getting more unexpected changes which would also support decision to go for Redux to keep the state more managed.

Material UI

Material UI was chosen for this project for it's great accessibility features. Components have inbuilt aria functionality. Themes for easy and unified stylings.

  • Uses material design specifications
  • Great accessibility built into components
  • Themes for building unified stylings and easy high contrast mode

Links

Other integral libraries

react-intl

React Intl for internationalization (i18n). Intl was chosen for it's capabilities of localizing date objects and changing them to relative format. Compared to i18next this provided us with a translation and localization library in one package. i18next would have required us to implement a time formatting library and required functionality.

Sentry

Sentry for error logging

Clone this wiki locally