OSM-Completionist
OSM-Completionist copied to clipboard
⛔️ DEPRECATED iOS companion app for OpenStreetMap that allows contributors to complete missing information
DEPRECATED
This repository is no longer supported.
Please consider implementing the quest functionality directly in the GoMap!! repository, e. g. as part of bryceco/GoMap#221.
Pay OSM-Surveyor a visit and consider contributing there as well.
Most of the added functionality is available from the Git history as atomic commits, ready to be picked and built upon.
OSM Completionist
OSM Completionist is an iOS companion app that allows OpenStreetMap contributors to complete missing information for objects around them.
Instead of advanced editing possibilities, OSM Completionist uses the concept of "quests", analog to StreetComplete for Android.
Based on GoMap
This repository is a fork of GoMap!!, a comprehensive OpenStreetMap editor for iPhone/iPad.
If you're looking for a full OpenStreetMap editor, download GoMap on the App Store.
Join our TestFlight beta!
Do you want to help testing pre-releases of OSM Completionist? Become a TestFlight tester today! 🚀
Continuous delivery
OSM Completionist makes use of fastlane. For a list of available actions, please refer to the auto-generated README.
Getting started with development
- Install XcodeGen
- Run
xcodegen generate
in the root directory of this repository - Open the project file (
Completionist.xcodeproj
)
Signing
To automate the signing, this project uses fastlane match. Fetch the certificates for development with
% bundle exec fastlane match development
Screenshots
Screenshots are taken automatically with fastlane snapshot. To create new screenshots, run
% bundle exec fastlane snapshot
App Icon
The app icon is based on the 1024x1024 PNG file in fastlane/metadata/app_icon.png
.
After changing this "master" app icon,
re-generate the app icons using the
fastlane plugin "appicon" like so:
% bundle exec fastlane regenerate_app_icon
Source code structure
- iOS - Code specific to the iOS app
- Mac - Code specific to the Mac app (old, doesn't build anymore)
- Shared - Shared code (drawing code, OSM data structures, etc)
- Images - Images used for application elements (buttons, etc)
- POI-Icons - Icons used for map elements (POIs, etc)
- presets - The presets database copied from the iD editor
- xliff - Translation files
External assets
A number of assets used in the app come from other repositories, and should be periodically updated. Because updating these items can be a lengthy process it is performed manually rather than at build time:
- iD presets database (https://github.com/openstreetmap/id-tagging-schema)
- iD presets icons (https://github.com/ideditor/temaki.git, https://github.com/mapbox/maki.git)
- Name suggestion index (https://github.com/osmlab/name-suggestion-index)
- NSI brand imagery (pulled from facebook/twitter/wikipedia)
- WebLate translations (https://hosted.weblate.org/projects/go-map/app)
How to update external assets
Starting from the src
directory:
-
(cd presets && update.sh)
# fetches latest presets.json, etc. files and NSI -
(cd POI-Icons && update.sh)
# fetches maki/temaki icons -
(cd presets && getBrandIcons.py)
# downloads images from various websites and converts them to png as necessary -
(cd presets && uploadBrandIcons.sh)
# uploads imagery to gomaposm.com where they can be downloaded on demand at runtime (password required) -
(cd xliff && update.sh)
# downloads latest translations from weblate (password required)
Continuous integration
Prerequisite
- Make sure you have fastlane installed. (From a terminal, change to the
src/iOS
directory and runbundle install
.) - Since fastlane stores your provisioning profiles and certificates in a Git repository (
MATCH_REPO
), you need to create a new, empty repository if you haven't already. The profiles and certificates are protected by a password (MATCH_PASSWORD
). - When creating the Beta locally, fastlane will make sure that your certificates and provisioning profiles are up-to-date.
How to release a Beta locally
You'll need to obtain the values for the following parameter:
-
MATCH_REPO
: The URL to the Git repository that contains the provisioning profiles/certificates -
MATCH_PASSWORD
: The password for encrypting/decrypting the provisioning profiles/certificates -
FASTLANE_TEAM_ID
: The ID of the developer team at developer.apple.com -
FASTLANE_USER
: The email address that is used to sign in to App Store Connect -
FASTLANE_ITC_TEAM_ID
: The ID of the team at appstoreconnect.apple.com
In order to release a new Beta to the TestFlight testers, run
% MATCH_REPO=<GIT_REPOSITORY_URL> \
MATCH_PASSWORD=<MATCH_PASSWORD> \
FASTLANE_TEAM_ID=<APPLE_DEVELOPER_TEAM_ID> \
FASTLANE_USER=<APP_STORE_CONNECT_EMAIL> \
FASTLANE_ITC_TEAM_ID=<APP_STORE_CONNECT_TEAM_ID> \
bundle exec fastlane beta
Formatting
In order to have a consistent code style, please make sure to install
SwiftFormat and run it on a regular basis. Consider setting up a pre-commit
Git hook, as described here.
Assets
The Go Map!! app icon was created by @Binnette.
Assets
The icons for the quests were retrieved from rugk/streetcomplete-quest-svgs and then converted to PDF using CairoSVG:
% cairosvg $path -o $pdf_path
For details on the license of the icons, please refer to authors.txt in the StreetComplete repository.
Presets and translation
Go Map!! is using iD presets, so you can improve translations by improving translations of iD presets.