MapStore leverages a full separation of concerns between the backend and the frontend.
The backend is a suite of web services, developed in Java and deployed into a J2EE container (e.g. Apache Tomcat).
The frontend is based on the ReactJS library and the Redux architecture, which is a specific implementation of the Flux architecture.
It allows plugging different mapping libraries (with Leaflet and OpenLayers as our first implementation targets) abstracting libraries implementation details using ReactJS web components and actions based communication.
Backend services include at least (but not only) these ones:
- Generic, configurable, HTTP-Proxy to avoid CORS issues when the frontend tries to communicate with external services, based on the GeoSolutions http-proxy project.
- Internal storage for non structured resources (json, XML, etc.) based on the GeoSolutions GeoStore project.
- Configuration services, to allow full application(s) and services configurability
- Security with the ability to configure authentication using an internal or external service, and a flexible authorization policy for services and resources access.