Backend application for creating and managing places/POIs (or in german "Orte"), formatted text and assets like images, audio and video on a web-based map. Additionally relations between places can be set. Output is a public available API w/JSON or exportable as CSV/JSON/GeoJSON data. It has also some extra features like visualising relations between places and a map to go feature (see below).
Based on Ruby on Rails 7.2, Ruby 3, MariaDB, jQuery, Leaflet and Foundation 6.
Contributions to this application are appreciated (see below).
๐ฅ Latest Release v0.9:, published July 2025
For a user manual and other informations check our Handbook in the wiki, a German version is also available.
This application uses Nominatim, a search engine for OpenStreetMap data to look up address and geolocation data. By implementing this application you should respect the Nominatim Usage Policy!
ORTE Backend ist basically a backend which provides JSON and GeoJSON export of its layers and map. Since version 0.7 offers a "map to go" feature, where user can generate a static, Nuxt.js based website from their single layer (and its places) and place this site on their webspace. So you can get your frontend website and all defined data directly out of the application.
Basic steps for a local installation on your machine:
- Ruby 3.2+, RVM, Rubygems
- Maria DB
- ffmpeg (for the video feature)
- ImageMagick or graphicsmagick (for image features)
- Redis
- Node.js (v18++)
Additional requirements for production
- Webserver (e.g. Apache or NGINX)
- Passenger stand-alone
To schedule the maintenance cron job to remove outdated import files in the tmp folder on staging and production env, add it to the crontab file. This is an example how the line in the crontab file could look like to do the cleanup every Sunday at 3:30 am:
30 3 * * 0 cd /path/to/ORTE-backend && RAILS_ENV=production bundle exec rake cron_jobs:maintenance:import_files_cleanupReplace /path/to/ORTE-backend with the full path to the Rails application.
$ git clone git@github.com:a-thousand-channels/ORTE-backend.git$ gem install bundler
$ bundle install$ sudo mysql -u root
> CREATE USER 'orte'@'localhost' IDENTIFIED BY 'orte00';
> GRANT ALL PRIVILEGES ON *.* TO 'orte'@'localhost';
> CREATE DATABASE orte CHARACTER SET utf8 COLLATE utf8_general_ci;
> CREATE DATABASE orte_test CHARACTER SET utf8 COLLATE utf8_general_ci;
> exit;
$ bundle exec rails db:schema:load
$ bundle exec rails db:seedNote: With Mariadb locally, you might not need a user root, just
sudo mysql
Some settings (like email settings or database setup) you'll need for productive installation on a server are stored in the credential file.
Edit the credential file with
$ EDITOR=vim bundle exec rails credentials:editAll used and needed variables are explained in the credentials.yml.default file.
To use this in different environments, with development and installations for staging or production server you can use the multi-environment credentials that came with Rails 6.1.
To create/edit a specific credential file for staging use:
$ EDITOR=vim bundle exec rails credentials:edit --environment stagingFor details on this technique please read this good explainer about credentials in Rails 6.1
Also edit settings.yml to define your custom server address.
As a default at ORTE, satellite imagery is used as a base layer. This imagery is available only up to level 18. If you want to have satellite imagery on a higher zoom level (19-21), where you can more clearly see details on streets, places and buildings, than you have to define an additional satellite imagery provider. ORTE has as a preset for Mapbox satellite imagery, but to use it, you need to have a Mapbox account and to generate a Mapbox API Token. (Of course this completely optional, and you switch on user level or permant on map level to a OSM base map.)
You can define your mapbox token in the credentials (token[:mapbox])
$ bundle exec rails s$ RAILS_ENV=test bundle exec rails db:migrate
$ RAILS_ENV=test COVERAGE=true bundle exec rspec specA project by and for A Thousand Channels
Initial code and UI by Ulf Treger with kind support by and in collaboration with:
- Pragma Shift, Hamburg, for code donation,
- Treffentotal 2018, Hamburg (first use public case with a map at map.treffentotal.de, which gets its geolocations from ORTE backend via JSON),
- Participants of mapping workshops of city/data/explosion at Kunst- und Kulturverein Spedition, Bremen 2019+
- Members of the working group "Queer narratives, mappped" ๐ for testing, bringing up ideas and feature requests for improving the user interface and the maps and thinking the tool more inclusive,
- Sandbostel Camp Memorial for the public submission interface and to Sefux for coding it.
- Prototype Fund for funding the development in 2021-2022, especially the MapToGo feature, mapping of relations plus some enhanced privacy features,
- A big thanks to birtona for coding the CSV import feature and extending the public API plus improving code quality and to MarcusRiemer for code reviews and to the Civic Data Lab for funding the development of these features.
- Thanks dyedwiper for code contributions to the GeoJSON feature.
- A Thousand Channels members Jarami110d and tab-oo for creating, editing and illustrating the handbook, a users documentation in the wiki
There is an active fork by Leerstandsmeldungen with PostgreSQL and Pundit Gem for a more sophisticated model of authorization and roles.
Feedback, bug reports and code contributions are most welcome.
Send your feedback to hello@a-thousand-channels.xyz.
Please file bug reports and feature request to our Github Repository at https://github.com/a-thousand-channels/ORTE-backend
For code contributions, please fork this repo, make a branch, commit your code & create a pull request.
All contributors shall respect the Contributor Covenant Code of Conduct
Please support our project by Buy Us A Coffee or contact us for alternatie ways of supporting us.
This project is licensed under a GNU General Public Licence v3



