Skip to content

Exploration, monitoring and classification of incidents in time and space.


Notifications You must be signed in to change notification settings


Repository files navigation

TimeMap v0

TimeMap is a tool for exploration, monitoring and classification of incidents in time and space.
See a live instance here.

Build status


TimeMap is a standalone frontend application that allows to explore and monitor events in time and space. TimeMap uses OpenStreetMap satellite imagery as a backdrop by default, but can also be configured to use mapbox. It uses Leaflet and d3 to visually map information.

The recommended way to run a backend for timemap is using datasheet-server. This allows you to work with a spreadsheet or Google Sheet as a dynamic database for for timemap.

TimeMap has the following high-level features capabilites:

  • Visualize incidents of particular events on a map.
  • Visualize and filter these incidents over time, on an adjustable timeline that allows to zoom in and out.
  • Visualize types of incidents by tag and by category, which can be displayed using different styles.

A fully-functioning live version can be found as a result of the Forensic Architecture investigation of the Battle of Ilovaisk.

Get up and running

These easiest way to get up and running with timemap and datasheet-server is to follow the in-depth tutorial here.

We recommend using Node v16.x.x for its current compatibility. TimeMap may not work with other versions of Node.


  1. Pull this repository.
git clone
  1. Install dependencies via npm.
npm install
  1. Copy the example config
cp example.config.js config.js
  1. Run the development server, which will be available at http://localhost:8080.
CONFIG=config.js npm run dev

To run with a file that is not 'config.js' in the root directory, set the CONFIG environment variable:

CONFIG="myotherconfig.js" npm run dev

At this stage, you'll probably only see a basic map with several error modals. In order for TimeMap to be able to display interesting information, you'll have to make sure to have the capacity to serve data, as well as adjusting some configuration parameters. See the in-depth tutorial or datasheet-server.

Running without datasheet-server

Technically, timemap is backend agnostic, but it requires a series of endpoints to provide data for it to visualize. The data is expected in JSON format. Some data elements are required and their format has some required fields. Other additional endpoints are optional, and if enabled, they simply add features to your taste.

The combination of all these data types is called the domain of the application in the context of TimeMap.

Running tests

We are currently using Jest for front-end and component testing. These tests can be found inside src/test. The test suite can be invoked through CONFIG="my-optional-config.js" npm run test.

We also include an Ava test suite for smoke testing the Node server process responsible for instantiating the app. This test suite can be invoked using CONFIG="my-optional-config.js" npm run test:ava


Interested in helping us improve timemap? See our contributing guide to learn how to contribute and make suggestions. Please also read our code of conduct. We endeavour to cultivate a community around timemap and other OSS at Forensic Architecture that is inclusive and respectful. Please join us in this!


If you have any questions or just want to chat, please join our Discord server. This is where you can ask questions, as well as track our internal development on timemap and other codebases at Forensic Architecture.

timemap is distributed under the DoNoHarm license.