{"id":18564778,"url":"https://github.com/luftdaten-at/datahub","last_synced_at":"2026-04-01T22:23:50.778Z","repository":{"id":247793823,"uuid":"651533115","full_name":"luftdaten-at/datahub","owner":"luftdaten-at","description":"Open source data management system for air quality and environmental data. Used for citizen science and STEM education. Build in Django / PostgreSQL.","archived":false,"fork":false,"pushed_at":"2026-03-22T09:09:18.000Z","size":10371,"stargazers_count":1,"open_issues_count":11,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-22T11:26:07.819Z","etag":null,"topics":["citizen-science","data-management-system","django","docker"],"latest_commit_sha":null,"homepage":"https://datahub.luftdaten.at","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luftdaten-at.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-06-09T12:58:04.000Z","updated_at":"2026-03-22T09:07:09.000Z","dependencies_parsed_at":"2026-02-26T19:01:26.483Z","dependency_job_id":null,"html_url":"https://github.com/luftdaten-at/datahub","commit_stats":{"total_commits":172,"total_committers":4,"mean_commits":43.0,"dds":0.6046511627906976,"last_synced_commit":"af6040781678f97cd541024df72ac22e0f1d861f"},"previous_names":["luftdaten-at/datahub"],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/luftdaten-at/datahub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luftdaten-at%2Fdatahub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luftdaten-at%2Fdatahub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luftdaten-at%2Fdatahub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luftdaten-at%2Fdatahub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luftdaten-at","download_url":"https://codeload.github.com/luftdaten-at/datahub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luftdaten-at%2Fdatahub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["citizen-science","data-management-system","django","docker"],"created_at":"2024-11-06T22:16:19.263Z","updated_at":"2026-04-01T22:23:50.751Z","avatar_url":"https://github.com/luftdaten-at.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# luftdaten-datahub\n\n## About luftdaten-datahub\nluftaten-datahub is an open source plattform build on the Django Web Framework. It is an citizen science tool to explore air quality data measured by Luftdaten.at devices and other sources.\n\n## Contributing\n\nWe use GitHub Flow for our development process. Follow these steps to commit your changes:\n\n### 1. Fork the Repository\n\nFirst, fork the repository to your own GitHub account:\n\n1. Navigate to the [main repository](https://github.com/luftdaten-at/datahub.git).\n2. Click the \"Fork\" button in the upper right corner of the repository page.\n3. This creates a copy of the repository in your GitHub account.\n\n### 2. Clone the Forked Repository\n\nClone your forked repository to your local machine:\n\n```sh\ngit clone https://github.com/your-username/datahub.git\ncd datahub\n```\n\n### 3. Create a Branch\n\nCreate a new branch to work on your changes. Use the following naming convention: `feature/{issue-number}-{issue-name}`. \n\nFor example, if you are working on issue #123 to add user authentication, you would name your branch:\n\n```sh\ngit checkout -b feature/123-add-user-authentication\n```\n\n### 4. Make Your Changes\n\nMake your changes to the codebase. Ensure you:\n\n- Write clear and concise commit messages.\n- Test your changes thoroughly.\n- Follow the coding standards and guidelines of the project.\n\n### 5. Commit Your Changes\n\nCommit your changes to the branch:\n\n```sh\ngit add .\ngit commit -m \"Description of your changes\"\n```\n\n### 6. Push to Your Fork\n\nPush your changes to your forked repository on GitHub:\n\n```sh\ngit push origin feature/123-add-user-authentication\n```\n\n### 7. Open a Pull Request\n\nNavigate to the main repository on GitHub, and you should see a prompt to open a pull request for your branch. Click \"Compare \u0026 pull request\":\n\n1. Provide a clear and concise title for the pull request.\n2. Include a detailed description of your changes and any relevant information.\n3. Reference the issue number in the description using keywords like `fixes`, `closes`, or `resolves` followed by the issue number (e.g., `fixes #123`).\n4. Request a review from the repository maintainers.\n\n### 8. Review Process\n\nYour pull request will be reviewed by the maintainers. Be prepared to make additional changes based on their feedback. Once approved, your changes will be merged into the main branch.\n\n### 9. Keep Your Fork Up-to-Date\n\nTo keep your fork updated with the latest changes from the main repository, add the original repository as a remote and pull the latest changes:\n\n```sh\ngit remote add upstream https://github.com/luftdaten-at/datahub.git\ngit fetch upstream\ngit checkout main\ngit merge upstream/main\n```\n\n### 10. Delete Your Branch\n\nAfter your pull request has been merged, you can safely delete your branch:\n\n```sh\ngit branch -d feature/123-add-user-authentication\ngit push origin --delete feature/123-add-user-authentication\n```\n\nBy following these steps, you can contribute effectively using GitHub Flow. Thank you for your contributions!\n\n\n## Documentation\n\n### Development\nDevelopment version:\n\n    docker compose up -d\n    docker compose exec app python manage.py migrate\n    docker compose exec app python manage.py createsuperuser\n\nIf you don't have a `.env` file yet, copy it from the template: `cp project.env .env`.\n\n**Shortcut:** run manage.py via the app container with:\n\n    ./manage \u003ccommand\u003e\n\nExamples: `./manage check`, `./manage migrate`, `./manage test`.\n\nopen in web browser: http://localhost\n\nCreate migrations after doing changes at the data models:\n\n    docker compose exec app python manage.py makemigrations\n\nChanges to the database:\n\n    docker compose exec app python manage.py shell\n    \u003e\u003e from {app_name}.models import {model_name}\n    \u003e\u003e {model_name}.objects.all().delete()\n\nUpdate requirements.txt:\n\n    pip-compile requirements.in\n\n\n### Testing\nRun the unit tests.\n    docker compose exec app python manage.py test\n    docker compose logs\n\nThere are https-tests in the /test folder which can be run with the Visual Studio Code Extension REST Client.\n\n### Versions\n* Django: 4.2\n* Python: 3\n* Postgres: 16\n* Bootstrap: 5.3.2\n* Gunicorn: 21\n\n### Templates and static files\n\nAll template files are in the folder /app/templates\n_base.html is the base template with different blocks.\nhome.html can be used as an example on how to use the blocks.\n\nStatic files like css, js and images are in the folder /app/static.\nUploads are in the folder /app/media.\n\n### Admin\nThe admin login can be found unter /backend.\n\n\n### Translation to German\nRun the following command in your project directory:\n\n    docker compose exec app python manage.py makemessages -l de\n\nThis scans your project for strings marked for translation and creates a django.po file in the locale/de/LC_MESSAGES directory.\n\nOpen the django.po file, find your strings, and add the German translation.\n\n    docker compose exec app python manage.py compilemessages\n\n\n### Production\nCollect static files as preparation.\n\n    docker compose exec app python manage.py collectstatic\n\nBuild and push to Dockerhub.\n\n    docker build -f Dockerfile.prod -t luftdaten/datahub:tagname --platform linux/amd64 .\n    docker push luftdaten/datahub:tagname\n\nCreate docker-compose.prod.yml from example-docker-compose.prod.yml by setting the secret key. Then run:\n\n    docker compose -f docker-compose.prod.yml up -d \n\n## API Documentation\n\nOpen API Standard 3.1\n\n/api/docs\nhttps://datahub.luftdaten.at/api/docs\n\n## License\nThis project is licensed under the European Union Public Licence v. 1.2 (EUPL-1.2).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluftdaten-at%2Fdatahub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluftdaten-at%2Fdatahub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluftdaten-at%2Fdatahub/lists"}