# Overview

# Structural overview

FacilMap consists of several layers:

  • The Server is a Node.js app that stores the data of collaborative maps in a database and runs a socket.io (opens new window) server to access and modify those maps. It also includes a HTTP server that serves the frontend and the map exports.
  • The Client is a JavaScript library that provides methods to access the data on collaborative maps by sending requests to the socket.io server.
  • The Leaflet components are a JavaScript library that provides classes to dynamically show the data received by the Client on a Leaflet (opens new window) map.
  • The Frontend is a JavaScript app that provides a complete UI written in Vue.js (opens new window) to create, access and modify collaborative maps. It uses the Client to access those maps and the Leaflet components to render them on a map.

FacilMap is completely written in TypeScript (opens new window). The code base is split into several NPM modules, each of which can be used independently (although some depend on some others):