hotosm / fmtm

Field Mapping Tasking Manager - coordinated field mapping.
https://fmtm.hotosm.org/
GNU Affero General Public License v3.0
49 stars 46 forks source link

HOTOSM Logo

Field Mapping Tasking Manager (FMTM)

Coordinated field mapping for Open Mapping campaigns.

Release Version


| **CI/CD** | | [![Build and Deploy](https://github.com/hotosm/fmtm/actions/workflows/build_and_deploy.yml/badge.svg?branch=main)](https://github.com/hotosm/fmtm/actions/workflows/build_and_deploy.yml?query=branch%3Amain) [![Build CI Img](https://github.com/hotosm/fmtm/actions/workflows/build_ci_img.yml/badge.svg?branch=development)](https://github.com/hotosm/fmtm/actions/workflows/build_ci_img.yml) [![Build ODK Images](https://github.com/hotosm/fmtm/actions/workflows/build_odk_imgs.yml/badge.svg?branch=development)](https://github.com/hotosm/fmtm/actions/workflows/build_odk_imgs.yml)
[![🔧 Build Proxy Images](https://github.com/hotosm/fmtm/actions/workflows/build_proxy_imgs.yml/badge.svg?branch=development)](https://github.com/hotosm/fmtm/actions/workflows/build_proxy_imgs.yml) [![Publish Docs](https://github.com/hotosm/fmtm/actions/workflows/docs.yml/badge.svg?branch=development)](https://github.com/hotosm/fmtm/actions/workflows/docs.yml) [![pre-commit.ci](https://results.pre-commit.ci/badge/github/hotosm/fmtm/development.svg)](https://results.pre-commit.ci/latest/github/hotosm/fmtm/development) | | :--- | :--- | :--- | | **Tech Stack** | | ![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=for-the-badge&logo=fastapi) ![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB) ![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge&logo=postgresql&logoColor=white) ![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge&logo=kubernetes&logoColor=white) ![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white) | | **Code Style** | | [![Backend Style](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/format.json&labelColor=202235)](https://github.com/astral-sh/ruff) [![Frontend Style](https://img.shields.io/badge/code%20style-prettier-F7B93E?logo=Prettier)](https://github.com/prettier/prettier) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://pre-commit.com) | | **Quality** | | [![Coverage](https://docs.fmtm.dev/coverage.svg)](https://docs.fmtm.dev/coverage.html) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9218/badge)](https://www.bestpractices.dev/projects/9218) | | **Community** | | [![Slack](https://img.shields.io/badge/Slack-Join%20the%20community!-d63f3f?style=for-the-badge&logo=slack&logoColor=d63f3f)](https://slack.hotosm.org) [![All Contributors](https://img.shields.io/github/all-contributors/hotosm/fmtm?color=ee8449&style=flat-square)](#contributors-) | | **Other Info** | | [![docs](https://github.com/hotosm/fmtm/blob/development/docs/images/docs_badge.svg?raw=true)](https://docs.fmtm.dev/) [![dev-roadmap](https://github.com/hotosm/fmtm/blob/development/docs/images/dev_roadmap_badge.svg?raw=true)](https://roadmap.fmtm.dev) [![timeline](https://github.com/hotosm/fmtm/blob/development/docs/images/timeline_badge.svg?raw=true)](https://docs.fmtm.dev/timeline) [![license](https://img.shields.io/github/license/hotosm/fmtm.svg)](https://github.com/hotosm/fmtm/blob/main/LICENSE.md) |

Building on the success of HOT's Tasking Manager, a tool for coordinating remote digitization of map features, the FMTM was conceived with the purpose of tagging the features with field-verified information.

While there are many excellent applications for tagging map features already, the FMTM aims to solve the problem of coordinating field mapping campaigns.

More details can be found here: overview, timeline, docs page, and the FAQ.

How FMTM Works

  1. Project is created in an area with three things:
    • Data extract: the features you want to map, say building polygons.
    • ODK XLSForm: the survey for mappers on the ground to fill out for each feature.
    • Task areas divided by feature count and linear features (e.g. rivers, roads).
  2. Users assign a task area for themselves, and generate a QR code that is opened in ODK Collect.
  3. User navigates to the feature and fills out the XLSForm survey, then submits.
  4. The submissions are collected by ODK Central, which feeds the data back into FMTM, for cleaning, conflation with existing data, and pushing back to OSM.

Usage of ODK

This project relies heavily on the ODK ecosystem underneath:

Contributing 👍🎉

In the wake of the 2010 Haiti earthquake, volunteer developers created the Tasking Manager after seeing a similar coordination challenge for mapping areas without existing data.

Now with over 500,000 volunteer mappers, the Tasking Manager is a go-to resource for volunteers to map collaboratively.

To aid future disaster response, we would really welcome contributions for:

Please take a look at our Documentation and contributor guidance for more details!

Reach out to us if any questions!

Install

To install for a quick test, or on a production instance, use the convenience script:

curl --proto '=https' --tlsv1.2 -sSf https://get.fmtm.dev | bash

Alternatively see the docs for various deployment guides.

Roadmap

Status Feature
🖥️ project area splitting avoiding roads, rivers, railways
🖥️ XLSForm generation in ODK Central
📱 mapping of project via survey in ODK Collect mobile app
📱 locking & unlocking of tasks to coordinate mapping
📱 download base imagery & geolocation for in the field
🖥️ view mapper submissions in the FMTM dashboard
📢 Beta Release
🖥️ & 📱 basic user tutorials and usage guides
⚙️ 📱 open ODK Collect with feature already selected
⚙️ 📱 live updates during mapping (if online)
🖥️ export (+merge) the final data to OpenStreetMap
🖥️ organization creation
🖥️ simplify project creation with basic / advanced workflows
🖥️ refinements to task splitting algorithm
🖥️ improvements to the validation criteria and workflow
🖥️ Field Admin role
📱 fully offline FMTM (± small field-based device)

[!Note] 📱 for mobile / mappers

🖥️ for desktop / managers / validators

A more developer-facing roadmap can be found here.

Contributors ✨

Here's how you can contribute:

Thanks goes to these wonderful people:

Ivan Gayton
Ivan Gayton

📆 💻 👀 🤔
Rob Savoye
Rob Savoye

🚧 🧑‍🏫 💻 👀 🤔
Ramya
Ramya

🐛 📖 🤔 🖋 🎨 📆
Sam
Sam

💻 👀 🚇 🤔 🚧 🧑‍🏫
Susmina_Manandhar
Susmina_Manandhar

📖 🤔 🐛 🧑‍🏫
Manjita Pandey
Manjita Pandey

🐛 📖 🤔 🖋 🎨 📆
Sujan Adhikari
Sujan Adhikari

💻 🚧
Nishit Suwal
Nishit Suwal

💻 🚧
Deepak Pradhan (Varun)
Deepak Pradhan (Varun)

💻 🤔 🚧
Niraj Adhikari
Niraj Adhikari

💻 🤔 🚧
krtonga
krtonga

💻 📖 🔧 🤔
Petya
Petya

📖 📋 🤔
Mohamed Bakari Mohamed
Mohamed Bakari Mohamed

💻
G. Willson
G. Willson

💻
JoltCode
JoltCode

💻
Neelima Mohanty
Neelima Mohanty

📖
Tayebwa Noah
Tayebwa Noah

📖
Mohammad Areeb
Mohammad Areeb

📖
AugustHottie
AugustHottie

📖
Ahmeed Etti-Balogun
Ahmeed Etti-Balogun

📖
Uju
Uju

📖
JC CorMan
JC CorMan

📖
Prajwal Khadgi
Prajwal Khadgi

💻
shushila21
shushila21

💻
Kshitij Raj Sharma
Kshitij Raj Sharma

💻
Mahesh-wor 'Invoron'
Mahesh-wor 'Invoron'

🚇
Azhar Ismagulova
Azhar Ismagulova

💻 ⚠️
synneolsen
synneolsen

🤔
Freedisch
Freedisch

💻
prasidha1
prasidha1

💻
Raj Bhattarai
Raj Bhattarai

💻
Sijan Dhungana
Sijan Dhungana

💻
Khushi Gautam
Khushi Gautam

📖
Aayam Ojha
Aayam Ojha

💻
Add your contributions

Repo Activity

FMTM Repo Activity