{"id":23315225,"url":"https://github.com/itk-dev/event-database-imports","last_synced_at":"2025-04-07T03:26:24.145Z","repository":{"id":190659018,"uuid":"659697502","full_name":"itk-dev/event-database-imports","owner":"itk-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-26T20:41:46.000Z","size":9842,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-03-26T20:48:20.869Z","etag":null,"topics":["event-database"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/itk-dev.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-06-28T11:18:37.000Z","updated_at":"2025-03-12T11:52:54.000Z","dependencies_parsed_at":"2023-09-27T14:41:34.874Z","dependency_job_id":"ad8760d2-5641-4c9a-87f3-adb7887860f5","html_url":"https://github.com/itk-dev/event-database-imports","commit_stats":null,"previous_names":["itk-dev/event-database-imports"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fevent-database-imports","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fevent-database-imports/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fevent-database-imports/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itk-dev%2Fevent-database-imports/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itk-dev","download_url":"https://codeload.github.com/itk-dev/event-database-imports/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247585785,"owners_count":20962399,"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":["event-database"],"created_at":"2024-12-20T15:33:21.419Z","updated_at":"2025-04-07T03:26:24.120Z","avatar_url":"https://github.com/itk-dev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Danish event database (version 2.x)\n\n[![Woodpecker](https://img.shields.io/badge/woodpecker-prod|stg-blue.svg?style=flat-square\u0026logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEuMjYzIDIuNzQ0QzIuNDEgMy44MzIgMi44NDUgNC45MzIgNC4xMTggNS4wOGwuMDM2LjAwN2MtLjU4OC42MDYtMS4wOSAxLjQwMi0xLjQ0MyAyLjQyMy0uMzggMS4wOTYtLjQ4OCAyLjI4NS0uNjE0IDMuNjU5LS4xOSAyLjA0Ni0uNDAxIDQuMzY0LTEuNTU2IDcuMjY5LTIuNDg2IDYuMjU4LTEuMTIgMTEuNjMuMzMyIDE3LjMxNy42NjQgMi42MDQgMS4zNDggNS4yOTcgMS42NDIgOC4xMDdhLjg1Ny44NTcgMCAwMC42MzMuNzQ0Ljg2Ljg2IDAgMDAuOTIyLS4zMjNjLjIyNy0uMzEzLjUyNC0uNzk3Ljg2LTEuNDI0Ljg0IDMuMzIzIDEuMzU1IDYuMTMgMS43ODMgOC42OTdhLjg2Ni44NjYgMCAwMDEuNTE3LjQxYzIuODgtMy40NjMgMy43NjMtOC42MzYgMi4xODQtMTIuNjc0LjQ1OS0yLjQzMyAxLjQwMi00LjQ1IDIuMzk4LTYuNTgzLjUzNi0xLjE1IDEuMDgtMi4zMTggMS41NS0zLjU2Ni4yMjgtLjA4NC41NjktLjMxNC43OS0uNDQxbDEuNzA3LS45ODEtLjI1NiAxLjA1MmEuODY0Ljg2NCAwIDAwMS42NzguNDA4bC42OC0yLjg1OCAxLjI4NS0yLjk1YS44NjMuODYzIDAgMTAtMS41ODEtLjY4N2wtMS4xNTIgMi42NjktMi4zODMgMS4zNzJhMTguOTcgMTguOTcgMCAwMC41MDgtMi45ODFjLjQzMi00Ljg2LS43MTgtOS4wNzQtMy4wNjYtMTEuMjY2LS4xNjMtLjE1Ny0uMjA4LS4yODEtLjI0Ny0uMjYuMDk1LS4xMi4yNDktLjI2LjM1OC0uMzc0IDIuMjgzLTEuNjkzIDYuMDQ3LS4xNDcgOC4zMTkuNzUuNTg5LjIzMi44NzYtLjMzNy4zMTYtLjY3LTEuOTUtMS4xNTMtNS45NDgtNC4xOTYtOC4xODgtNi4xOTMtLjMxMy0uMjc1LS41MjctLjYwNy0uODktLjkxM0M5LjgyNS41NTUgNC4wNzIgMy4wNTcgMS4zNTUgMi41NjljLS4xMDItLjAxOC0uMTY2LjEwMy0uMDkyLjE3NW0xMC45OCA1Ljg5OWMtLjA2IDEuMjQyLS42MDMgMS44LTEgMi4yMDgtLjIxNy4yMjQtLjQyNi40MzYtLjUyNC43MzgtLjIzNi43MTQuMDA4IDEuNTEuNjYgMi4xNDMgMS45NzQgMS44NCAyLjkyNSA1LjUyNyAyLjUzOCA5Ljg2LS4yOTEgMy4yODgtMS40NDggNS43NjMtMi42NzEgOC4zODUtMS4wMzEgMi4yMDctMi4wOTYgNC40ODktMi41NzcgNy4yNTlhLjg1My44NTMgMCAwMC4wNTYuNDhjMS4wMiAyLjQzNCAxLjEzNSA2LjE5Ny0uNjcyIDkuNDZhOTYuNTg2IDk2LjU4NiAwIDAwLTEuOTctOC43MTFjMS45NjQtNC40ODggNC4yMDMtMTEuNzUgMi45MTktMTcuNjY4LS4zMjUtMS40OTctMS4zMDQtMy4yNzYtMi4zODctNC4yMDctLjIwOC0uMTgtLjQwMi0uMjM3LS40OTUtLjE2Ny0uMDg0LjA2LS4xNTEuMjM4LS4wNjIuNDQ0LjU1IDEuMjY2Ljg3OSAyLjU5OSAxLjIyNiA0LjI3NiAxLjEyNSA1LjQ0My0uOTU2IDEyLjQ5LTIuODM1IDE2Ljc4MmwtLjExNi4yNTktLjQ1Ny45ODJjLS4zNTYtMi4wMTQtLjg1LTMuOTUtMS4zMy01Ljg0LTEuMzgtNS40MDYtMi42OC0xMC41MTUtLjQwMS0xNi4yNTQgMS4yNDctMy4xMzcgMS40ODMtNS42OTIgMS42NzItNy43NDYuMTE2LTEuMjYzLjIxNi0yLjM1NS41MjYtMy4yNTIuOTA1LTIuNjA1IDMuMDYyLTMuMTc4IDQuNzQ0LTIuODUyIDEuNjMyLjMxNiAzLjI0IDEuNTkzIDMuMTU2IDMuNDJ6bS0yLjg2OC42MmExLjE3NyAxLjE3NyAwIDEwLjczNi0yLjIzNiAxLjE3OCAxLjE3OCAwIDEwLS43MzYgMi4yMzd6Ii8+PC9zdmc+Cg==)](https://woodpecker.itkdev.dk/repos/12)\n[![GitHub Release](https://img.shields.io/github/v/release/itk-dev/event-database-imports?style=flat-square\u0026logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgODBMMCAyMjkuNWMwIDE3IDYuNyAzMy4zIDE4LjcgNDUuM2wxNzYgMTc2YzI1IDI1IDY1LjUgMjUgOTAuNSAwTDQxOC43IDMxNy4zYzI1LTI1IDI1LTY1LjUgMC05MC41bC0xNzYtMTc2Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43TDQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODB6bTExMiAzMmEzMiAzMiAwIDEgMSAwIDY0IDMyIDMyIDAgMSAxIDAtNjR6Ii8+PC9zdmc+)](https://github.com/itk-dev/event-database-imports/releases)\n[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/itk-dev/event-database-imports/pr.yaml?style=flat-square\u0026logo=github)](https://github.com/itk-dev/event-database-imports/actions/workflows/pr.yaml)\n[![Codecov](https://img.shields.io/codecov/c/github/itk-dev/event-database-imports?style=flat-square\u0026logo=codecov)](https://codecov.io/gh/itk-dev/event-database-imports)\n[![GitHub last commit](https://img.shields.io/github/last-commit/itk-dev/event-database-imports?style=flat-square)](https://github.com/itk-dev/event-database-imports/commits/develop/)\n[![GitHub License](https://img.shields.io/github/license/itk-dev/event-database-imports?style=flat-square)](https://github.com/itk-dev/event-database-imports/blob/develop/LICENSE)\n\nThis is the next iteration of [the event database](https://github.com/itk-event-database/event-database-api) used by the\nmunicipality of Aarhus.\n\nThe event database is an API platform for event aggregation from the public vendors throughout the cites. It gets data\nmainly from feeds (JSON/XML) or APIs provided by the vendors. It is highly configurable in doing custom feed mappings\nand extendable to read data from APIs and map this data to event. It also has a user interface to allow manual entering\nof events.\n\nThe data input is pulled/pushed from a range of differently formatted sources and normalized into an event format that\ncan be used across platforms.\n\nFor more detailed and technical documentation, see the [docs](docs/README.md) folder in this repository.\n\n## Record Architecture Decisions\n\nThis project utilizes record architecture decisions documents which can be located in [docs/adr](docs/adr) in this\nrepository.\n\n## Installation\n\nThe application is built around Symfony and event messages for more information see the technical documentation in the\n[docs](docs/README.md) folder in this repository.\n\n```shell\ndocker compose up -d\ndocker compose exec phpfpm composer install\ndocker compose exec phpfpm bin/console doctrine:migrations:migrate\ndocker compose exec phpfpm bin/console app:index:create\ndocker compose exec phpfpm bin/console messenger:setup-transports\n```\n\n### Consume messages\n\nIn development, you need to consume messages by stating the consumer using the command below. Production setup uses the\nsupervisor container to automatically consume messages and process them. The service is defined in the\n[docker-compose.server.override.yml](docker-compose.server.override.yml) composer file.\n\nManual consume messages with this command.\n\n```shell\ndocker compose exec phpfpm bin/console messenger:consume async\n```\n\n### Load feeds\n\nImport/read feeds and create events based on their data you need to set up cron jobs that with regular intervals execute\nthe command below. If you need to have different import intervals, you can add the database id of the feed you what to\nrun with `--id \u003cid\u003e`. If you want to loop over all feeds configured, omit the id parameter.\n\n```shell\ndocker compose exec phpfpm bin/console app:feed:import\n```\n\n### Search index (front end data)\n\nThe front end [API](https://github.com/itk-dev/event-database-api) connects to ElasticSearch for fast event look up.\nThe index is automatically built when data is entered in the UI or feeds are parsed. But if you need to populate the\nindexes, you can run this command:\n\n```shell\ndocker compose exec phpfpm bin/console app:index:populate\n```\n\nThis command is also helpful if the index gets out-of-sync with the database or if the index changes and needs\nre-indexing.\n\n### Fixtures\n\nThe project comes with doctrine fixtures to help development on local machines. They can be loaded with the standard\ndoctrine fixture load command:\n\n```shell\ndocker compose exec phpfpm bin/console doctrine:fixtures:load\n```\n\n### Production\n\nWhen installing composer and Symfony based application in production, you should not install development packages,\nhence use this command:\n\n```shell\ndocker compose exec phpfpm composer install --no-dev --optimize-autoloader\n```\n\n#### Recommend setup\n\nUsing all three repositories, you can create the setup depicted below and have communication between the backend\n(imports) and the API (frontend) by using the\n[shared service's repository](https://github.com/itk-dev/event-database-services.git).\n\n![Network setup production](./docs/images/networks.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitk-dev%2Fevent-database-imports","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitk-dev%2Fevent-database-imports","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitk-dev%2Fevent-database-imports/lists"}