{"id":25614534,"url":"https://github.com/mapforge-org/mapforge","last_synced_at":"2025-04-13T20:11:50.197Z","repository":{"id":219506879,"uuid":"729304206","full_name":"mapforge-org/mapforge","owner":"mapforge-org","description":"Vector layer editor for maps","archived":false,"fork":false,"pushed_at":"2025-04-10T03:16:03.000Z","size":41972,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-10T11:22:20.958Z","etag":null,"topics":["geo","geojson","geojson-editor","gis","hotwire","maplibre","maplibre-gl-js","mapping","ruby-on-rails"],"latest_commit_sha":null,"homepage":"https://mapforge.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mapforge-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-08T21:17:31.000Z","updated_at":"2025-04-08T22:39:42.000Z","dependencies_parsed_at":"2024-04-15T23:41:49.194Z","dependency_job_id":"a29624bd-8658-4dc3-b54a-7e02cf8cfb23","html_url":"https://github.com/mapforge-org/mapforge","commit_stats":{"total_commits":31,"total_committers":2,"mean_commits":15.5,"dds":0.4838709677419355,"last_synced_commit":"36bb17f30a1aadd1a64234defe1d8d9ba16aed23"},"previous_names":["digitaltom/mapforge","mapforge-org/mapforge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapforge-org%2Fmapforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapforge-org%2Fmapforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapforge-org%2Fmapforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mapforge-org%2Fmapforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mapforge-org","download_url":"https://codeload.github.com/mapforge-org/mapforge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248774979,"owners_count":21159534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geo","geojson","geojson-editor","gis","hotwire","maplibre","maplibre-gl-js","mapping","ruby-on-rails"],"created_at":"2025-02-22T02:21:19.601Z","updated_at":"2025-04-13T20:11:50.182Z","avatar_url":"https://github.com/mapforge-org.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Tests](https://github.com/digitaltom/mapforge/actions/workflows/ci.yml/badge.svg)](https://github.com/digitaltom/mapforge/actions/workflows/ci.yml)\n[![Docker](https://github.com/digitaltom/mapforge/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/digitaltom/mapforge/actions/workflows/docker-publish.yml)\n[![Code Climate](https://api.codeclimate.com/v1/badges/b56fa0cb960a90502022/maintainability)](https://codeclimate.com/github/digitaltom/mapforge)\n[![Coverage Status](https://coveralls.io/repos/github/digitaltom/mapforge/badge.svg?branch=main)](https://coveralls.io/github/digitaltom/mapforge?branch=main)\n\n# README\n\nMapforge is an open source (Ruby on Rails) web application that lets you create and share geojson layers on top of different base maps. It uses [maplibre gl](https://maplibre.org/maplibre-gl-js/docs/) as map library and supports desktop and mobile views. Your browser is connected to the server via websockets, so all changes are immediately visible to all clients for collaborative editing or creating real-time maps.\n\nA reference installation is running at [mapforge.org](https://mapforge.org), see the [changelog](CHANGELOG.md) here.\n\n![Mapforge Screenshot](https://github.com/digitaltom/mapforge/blob/main/docs/screenshot.png?raw=true)\n\nGeoJSON layers can get styled to your needs using an extended version of the [geojson](https://macwright.com/2015/03/23/geojson-second-bite.html)\n[mapbox simplestyle spec](https://github.com/mapbox/simplestyle-spec/tree/master/1.1.0). See [docs/geojson.md](docs/geojson.md) for supported attributes.\n\n\n## Development Setup\n \n### Install dependencies:\n\nFor openSUSE (Debian package names in braces):\n\n```bash\nzypper in proj-devel # (libproj-dev) for building rgeo-proj4\nzypper in proj # (proj-bin) for running rgeo-proj4\nzypper in imlib2 imlib2-devel # (libimlib2, libimlib2-dev) to resize screenshots\nzypper in ImageMagick # (imagemagick) for dragonfly image processing\nzypper in npm # for running eslint\nbundle\n```\n\n### Run develoment server:\n\n`bin/thrust rails server`\n\n* To use [Maptiler](https://www.maptiler.com/) base maps, provide the env MAPTILER_KEY\n* To use routing features provided by [openrouteservice.org](https://openrouteservice.org/), set env OPENROUTESERVICE_KEY\n* MongoDB backend is expected at: `ENV.fetch(\"MONGO_URL\") { \"localhost:27017\" }`\n* Redis (for action cable) is expected at: `ENV.fetch(\"REDIS_URL\") { \"redis://localhost:6379/1\" }`\n* To allow login via Github and Google, create oauth apps there, and set `GITHUB_CLIENT_ID`/`GITHUB_CLIENT_SECRET` and `GOOGLE_CLIENT_ID`/`GOOGLE_CLIENT_SECRET`\n* The first user that logs in automatically gets set as admin\n* The default base map can get set with `DEFAULT_MAP`\n\nIn development, the ENV vars can get set in the file `.env.development`.\n\n### Base maps\n\nAvailable base maps are defined in app/javascript/maplibre/basemaps.js.\n\nSome base maps are only available with a https://www.maptiler.com/cloud/ key, provided as ENV `MAPTILER_KEY`.\nThere are also examples for using maptiler vector maps with custom styles, for example created with [maputnik](https://maplibre.org/maputnik/).\n\n\n## Rake tasks\n\n* Import map from a mapforge export:\n\n  `bin/rake seed:mapforge_file['db/seeds/examples/fosdem.json']`\n\n* Import map from geojson (samples in db/seeds):\n\n  `bin/rake seed:geojson_file['db/seeds/examples/germany_areas.json']`\n\n  More geojson example files at: https://exploratory.io/map\n\n* Take screenshots of updated maps for preview:\n\n  `bin/rake maps:screenshots` (use MAPFORGE_HOST to set the host)\n\n* Animate a marker along a line: `bin/rake animation:path[\u003cmap_id\u003e, \u003cline_id\u003e, \u003cpoint_id\u003e]`\n\n\n## Tests\n\nLinters:\n  * `bin/rubocop`\n  * `npm install; npm run lint:css; npm run lint:js`\n\nFix style with eslint: `npm run fix:js`\n\nTo run the test suite: `bundle exec rspec`\n\nThe repository is also covered with automatic Github Actions jobs. You can\nrun those locally with the tool [act](https://github.com/nektos/act).\nFor example `act -j test`.\n\n\n## Production Setup\n\n### Container build\n\nGithub builds a new container on each commit to `main` at: `ghcr.io/digitaltom/mapforge:main`. Or, you can build your own image with: `podman build -t mapforge .`.\n\nBefore running the container, make sure the services MongoDB (`podman run -d --name mongo -v \u003clocal_dir\u003e:/data/db -p 27017:27017 mongo:7.0`) and Redis (`podman run -d --name redis -p 6379:6379 redis`) are running.\n\nNow, you can run the image with: `podman run -e SECRET_KEY_BASE=e3c9f2... --network=host ghcr.io/digitaltom/mapforge:main` (use `-e RAILS_ENV=development` if you don't have an SSL termination, like Traefik in front of the container)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapforge-org%2Fmapforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmapforge-org%2Fmapforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmapforge-org%2Fmapforge/lists"}