# Quick links
- Embed FacilMap into any website using an iframe.
- Run your own FacilMap server.
- Use the FacilMap client to programmatically access and modify data on a collaborative map.
- Use the Leaflet components to embed certain feature of FacilMap into a Leaflet map.
- Use the FacilMap frontend to embed an extended or modified version of FacilMap into a website.
- Read about the dev setup to start contributing to the FacilMap code.
# 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.
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):
- facilmap-types (opens new window) provides common TypeScript types for map objects and the socket communication and is used by all other modules.
- facilmap-client (opens new window) contains the FacilMap client.
- facilmap-utils (opens new window) contains helper methods that are used by facilmap-leaflet, facilmap-frontend and facilmap-server, so they can run both in the browser and in Node.js.
- facilmap-leaflet (opens new window) contains the Leaflet components.
- facilmap-frontend (opens new window) contains the Frontend.
- facilmap-server (opens new window) contains the Server.