-
Notifications
You must be signed in to change notification settings - Fork 11
Technology
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
- OpenLayers was considered but deemed unnecessary for this project because of it's complexity wasn't required
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.
- 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
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 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
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 for error logging