Previous Next

Haft in der DDR – Die Gefangenen der Stasi

ForGedenkstätte Berlin-Hohenschönhausen
WithHannes Hoepfner (concept)
TagsProcessWire, Mapbox, Vue.js, Data visualization, App

The Webapp "Imprisonment in the GDR - The Prisoners of the Stasi" provides a tool for researchers, historians and students to explore the various aspects of political persecution and imprisonment in the GDR. It contains the largest collection of data on prisoners of the Stasi of the period from 1963 to the end of the GDR.

The database comprises more than 50.000 files and makes the data accessible to the public for the first time.

Einführung in die WebApp

Ideas and concept

The user interface is designed to be a simple to use but powerful tool to create complex queries. It allows the user to formulate custom questions and explore the archival data in a playful way.

The app connects statistical, biographical and geographical data by visualizing the query results on multiple layers. The data explorer is build on top of an interactive map which contextualizes and locates the query result in form of heatmaps.


The color palette is inspired by popular GDR color schemes, which was most prominently used as the Trabant car paint.

#90B9D3 RGB 144/185/211 #C9CCD7 RGB 201/204/215 #CAC4BD RGB 202/196/189 #A0A688 RGB 160/166/136 #CAB891 RGB 202/184/145 #000000 RGB 0/0/0 #9C9082 RGB 156/144/130 #475317 RGB 71/83/23 #9B7729 RGB 155/119/41 #4E90B9 RGB 78/144/185 Kristallblau (1990) Monsumgelb (1990) Parmagrün (1990) Neutral Weitere

Logo and variations

We like to design things as a set of rules, as a system with an inner logic, not necessarily with a final form. The logo consist out of five bars which are programmatically rearranged every time it is generated.

Blocklogo (online) Horizontal (print)

Map layer

The map shows country borders and country names as of 1990. The worldwide historical country borders are taken from the geodata "Historic National Boundaries" of the University of Minnesota. The exact borders of the GDR and FRG are taken from the historical administrative areas (VG-Hist) of the Federal Agency for Cartography and Geodesy.

The map style is an adapted version based on the style "minimo" by Nat Slaughter.

Importing and geocoding of historical addresses?

One of the main challenges was the resolution of the historical addresses. A simple geocoding request was in the majority of cases not enough, since many of the addresses, even cities, changed names in the meanwhile.

We developed a multi-step process to normalize the different spellings, map the historic names no new and translate GDR-post codes to current ones. And in the end, all addresses had to be anonymized. For residential addresses in large cities (100,000 inhabitants or more) we determined coordinates of the street centers and for residential addresses outside of large cities coordinates of the centers of today's postal code areas. These coordinates are also scattered randomly in defined areas without affecting the representation of regional distributions.

Geocoding Resolver
Geocoding Resolver
Import eines Verfahren-Datensatz
Import eines Verfahren-Datensatz


Very large files can be processed with generator functions or "yield".
Here, for example, we iterate over the import file, which currently has over 50.000 lines.

 * @param $file
 * @return \Generator
 * @throws \Exception
private function getGenerator($file): \Generator {
	$handle = fopen($file, 'rb');
	if ($handle === false) throw new \Exception('open file '.$file.' error');

	// detect csv delimiter
	if($this->csvDelimiter === 'auto') {
		$this->csvDelimiter = $this->detectCsvDelimiter(fgets($handle));
		fseek($handle, 0);

	while (feof($handle) === false) yield fgetcsv($handle, 0, $this->get('csvDelimiter'));