Components are the primary building blocks used to assemble your citizen observatory. FLAMENCO offers a wide variety of components from which you can choose.

There are three main groups of components:

  • Data collection components
  • Data processing components
  • Data visualisation components

Typically, data collection components produce data automatically e.g., from sensor data, and thus do not require an input. Data processing components receive data as input, perform some calculations, e.g, the average and send the results as output. Data visualisation components receive data, format it for display in a visualisation, e.g., a pie chart and thus do not require an output. To build your FLAMENCO mobile application, you can combine different kinds of components from these groups together in the visual editor.

Component Menu

To find a component you can scroll through the menu or make use of the search function using the input field at the top of the menu. To add a component to your application, just drag it onto the canvas. Once a component is on the canvas it becomes part of your citizen observatory.

A tooltip showing info about a component appears when you hover over it. Furthermore, by right-clicking on an existing component on the canvas, a menu appears from which you can delete the component. In addition, you can use the menu to view information about the component in detail.


Components are miniature programs that receive data through input ports, and produce data on their output ports, thereby continuing the flow of information.

Input ports can be found on the left side on the component, output ports on the right. Components can have multiple input and/or output ports.

The color of a port indicates the type of data it expects/produces. Only compatible ports can be connected through a connection. The legend on the bottom left of the screen provides more information on data types and their colors.


Components can be connected to form a flow of information. To connect two components, just click on an output port of one component and drag the connection to an input port of another component.

Multiple connections can be created from the same output port, and input ports can accept connections from multiple components.

Note that connections can only be established between compatible ports (i.e. ports with the same color). A flashing plug icon ( ) is shown when connecting to highlight compatible ports of other components..


To customize an existing component on the canvas, you can right-click on it to reveal a pop-up menu. This menu grants access to the component's configuration window.

Configuring a component does not change its primary function, but enables you to make further customizations of the component in your citizen observatory. For example the text font style, a title or heading, which map layer to use, visualisation chart configurations, etc.

Changes made to a component's configuration are immediately applied to your citizen observatory.

Note that not every component can be customized.

Data Types

Understanding the data types in FLAMENCO is important when designing a data collection app on the canvas. The different colors for the data types can be viewed by clicking the legend in the bottom-left part of the canvas at any time when building your application. The different data types used during the flow of information between components are explained below.

  • Observations are the primary data type for your citizen observatory. They represent the data samples recorded by data producing components (see the components section), augmented with some additional (meta) information, e.g., the device model that recorded the data and the time the data sample was made. They can be added together to make an ObservationCollection.
  • GeoJSON is an open format for representing data on a map, such as points or shapes. FLAMENCO uses this as a data type for map elements.
  • Location represents data that specifies a specific GPS location in form of coordinates.
  • Numeric data types consist of data samples recorded as numbers, e.g., the output of a counter component that releases the counts as numbers.
  • Dataset is simply a collection of calculated data, such as the output of a component that groups incoming data by each day they were recorded.
  • Boolean represents data that can only have one of two possible values (common examples are true/false, yes/no or on/off)
  • All is a data type that can hold any kind of value, including the data types mentioned above. As a result, input ports with the All data type accept any connection

Philosophy of Operation

The core philosophy of citizen observatories is that they collect Observations or Observation Collection. As such, each citizen observatory's mobile app should produce observations and upload these to the citizen observatory. An Observations corresponds to 1 single data measurement, so it is up to you to decide what type of data should be present in each measurement. For example, consider the following citizen observatory:

In order to understand what is going on, we read the flow of information from left to right as follows:

Each mobile app (components in black) acts as follows:
  1. When the toggle button is pressed, the app will start tracking the location using GPS.
  2. Whenever a new location is provided, we (a) display this location on the mobile app using a map marker, and more importantly (b) generate an observation from the location.
  3. We add some extra data to each new observation. In this case, we add the most recent sound pressure level as recorded by the microphone.
  4. A buffer is used to store observations locally on the smartphone when no internet connection is available.
  5. We then send observations to a database on the server
On the server-side, the citizen observatory:
  1. Stores all observations received by every mobile app user
  2. Creates a map marker for each of these observations, and apply colour coding based on the sound pressure level value
  3. Stores each map marker in a collection to store them together
The web-based dashboard of the citizen observatory
  1. Contains a map visualisation that will receive all the map markers stored in the GeoJSON collection, and display these on a map.
The result is a citizen observatory that displays sounds pressure levels of each user on a map on the website.

Rate of Information Flow

In the mobile app in the aformentiod example, the flow of information starts with a LocationTracker component, meaning that the rate at which observations are produced is decided by the GPS sensor (e.g. every second). As such, the app reads as: Every second, capture the user's location and register the latest recorded sound pressure level at this location.

When designed an application, you must reason about the rate of information you want to produce. When exactly do you want a new measurement to be made? For example, the implementation below is a slight modification of the aformentioned example.

Here we change the position of the LocationTracker component and the SoundPressureLevel component. As a result, observations are now only produced whenever the SoundPressureLevel component produces data. if we configure this component to capture a sound sample every minute, the resulting now reads as:Every minute, capture a sound sample to calculate sound pressure levels, and register the current location of the user when the sample is made.

Think clearly about the rate of your flow of information!

Tips and Tricks

To begin building your app, start small e.g., with 2 or 3 component, link them together, then view an initial preview of the output of the current component. With this simple configuration, you can easily see if everything is working as expected. You can then proceed in an incremental fashion by adding the next component one by one onto the canvas, linking each one to the rest of the existing component while observing its preview.

When building your citizen observatory, you can have a live preview of the mobile app and the web-based dashboard. The mobile app preview and the dashboard preview can be toggled from the menu. These windows can be moved around the canvas at your convenience. You do this by clicking on icon on the bottom left of the preview ( ) and dragging the window to the desired area.

You can rearrange the order of your mobile app's user-interface by clicking the rearrange button ( ). When enabled, you can drag-and-drop the user-interface elements to a new location.

Every action you perform is automatically saved! As such, there is no risk to lose your progress.

A citizen observatory is are community-based environmental monitoring and information system. FLAMENCO enables you to easily deploy your own observatory, including:

  • Customizable data collection app
  • Persistent data storage in the cloud
  • Data processing and analysis in the cloud
  • Dashboard with real-time data visualisations

To do so, just follow the next steps.

1. Register an Account

To make use of the FLAMENCO platform you need to be a registered user. Creating a new account can be done in a few simple steps. 

  • Press Sign Up in the top right corner of the page and fill in your details.

2. Create A New Observatory

Click on and specify a name, description, and upload a logo as app icon for your observatory. Now you are ready to start building!

As administrator of your own observatory, you can open the to design your own mobile app to collect data, and to specify the data processing methods, as well as the real-time visualisations on your observatory's dashboard.

3. The Observatory Builder

The Observatory Builder is a 3-in-1 solution to design the mobile app, server-side data processing, and web-based visualisations of your citizen observatory.

The Observatory Builder's component menu is therefore split into 3 categories, each containing a set of components that can be used to construct the different parts of your citizen observatory.

The mobile tab contains the components that are used to build the app that will be used to collect data for your observatory. You can see a preview of the mobile app by clicking on the corresponding button in the menu.

The server tab contains the components that will process observatory data received from all the data collection client mobile apps. The server also stores the data collected in the observatory database so that the dashboard can retrieve it.

The dashboard tab contains the components that will be used to visualize data on your observatory’s webpage after being collected and stored by the server. You can see a preview of the dashboard visualisations by clicking on the corresponding button in the menu.

A campaign is the use of an existing citizen observatory for a particular scenario or project. For example, within an existing citizen observatory on sound pressure level monitoring, a campaign can be deployed by a group of citizens to map the noise pollution of their neighbourhood. Campaigns set specific constraints to specify the subset of data you are interested in, including:

  • Geographical constraints to specify an area of interest
  • Temporal constraints to specify a timeframe

Each campaign has its dedicated data processing and analysis separate from its citizen observatory. Furthermore, each campaign has its own visualisations dashboard as well.

1. Create A Campaign

To deploy your own campaign, click on the button on the webpage of the corresponding observatory.

Fill in a campaign name and a campaign description. The FLAMENCO platform also gives you the option to design an intake survey for your campaign that participants must fill in before they can participate.

When the option of intake survey is selected, you will be prompted to design the survey in a following screen. The data of participants from this intake survey can be used in the campaign design, for example to categorize your data based on certain questions answered by participants of your campaign.

2. Design your Campaign

As administrator of a campaign, you have access to the which enables you to specify the subset of observatory data that is relevant for your campaign. Each campaign receives all input from the observatory's databases. It is up to you to filter this data for your specific needs. This is done by placing constraints on the collected data. Examples include:

  • Geographical constraints
  • Temporal constraint
  • Participant constraints

Note that each of these constraints are optional.

The campaign builder automatically shows the various database components of the observatory on the left side of the screen. These act as starting point for your campaign's data flow.

Similar to the Observatory Builder, the component menu of the campaign builder contains different categories.

The campaign category contains components to filter the observatory data. In case the campaign contains an intake survey, additional components are available.

The dashboard category contains visualisation components to design your campaign's dashboard. You can see a preview of the dashboard visualisations by clicking on button on the right side of the screen.