{"id":22835413,"url":"https://github.com/dxw/air-text","last_synced_at":"2025-05-06T20:48:04.291Z","repository":{"id":257975060,"uuid":"861931326","full_name":"dxw/air-text","owner":"dxw","description":"Rebuild of airTEXT.info","archived":false,"fork":false,"pushed_at":"2025-05-05T21:11:33.000Z","size":5070,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-05-05T22:26:54.443Z","etag":null,"topics":["client","delivery-plus"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dxw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-09-23T18:28:24.000Z","updated_at":"2025-05-05T21:11:36.000Z","dependencies_parsed_at":"2025-03-29T14:23:33.081Z","dependency_job_id":"0dd8ec9d-c1b1-45c5-bdfb-cae8b1b7c503","html_url":"https://github.com/dxw/air-text","commit_stats":null,"previous_names":["dxw/air-text"],"tags_count":0,"template":false,"template_full_name":"dxw/rails-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dxw%2Fair-text","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dxw%2Fair-text/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dxw%2Fair-text/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dxw%2Fair-text/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dxw","download_url":"https://codeload.github.com/dxw/air-text/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252769136,"owners_count":21801373,"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":["client","delivery-plus"],"created_at":"2024-12-12T22:09:42.667Z","updated_at":"2025-05-06T20:48:04.239Z","avatar_url":"https://github.com/dxw.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# airTEXT\n\nThis is a rebuild of the airTEXT.info service\n\n1. [Getting started](/doc/getting-started.md)\n\n## Description of the service\n\nA service for providing forecasts and personalised alerts on air quality and\nother environmental factors in:\n\n- Greater London\n- Cambridge\n- the Chelmsford/Colchester area\n\n## Terminology\n\nWe aim to use and refine a \"ubiquitous language\" for use throughout the service.\nWe believe that this will optimise our communication and minimise our\nmisunderstandings and our cognitive load. We will aim use the same terms in:\n\n- the UI of the service\n- the code we write\n- our sketches and mockups\n- our research sessions\n- our documentation and our presentations to partner organisations\n\nSee [./doc/terminology.md][]\n\n## Tests\n\n### Local unit and integration tests\n\n#### Fast feedback loop\n\nThese tests (Rspec and Capybara) can be run at maximum speed with:\n\n```sh\nbundle exec rspec\n```\n\n### Full pre-commit checks\n\nBefore committing you should run our complete set of checks and tests.\n\nChoose from either the dockerised or undockerised version of the supplied\ncomprehensive test script which includes:\n\n- formatting files with `prettier`\n- checking scripts with `shellcheck`\n- linting Ruby files with `standardrb`\n- linting JS with `eslint`\n- linting CSS with `stylelint`\n- running automated test suite with `rspec`\n- running API specs and generating OpenAPI spec via the\n  `rswag_api_tests_with_docs` `rake` task\n- analysing vulnerabilities in Ruby gems with `brakeman`\n\ne.g.\n\n```sh\n./script/no-docker/test\n```\n\n## Architecture decision records\n\nWe use ADRs to document architectural decisions that we make. They can be found\nin [doc/architecture/decisions](./doc/architecture/decisions/) and contributed\nto with the [adr-tools](https://github.com/npryce/adr-tools).\n\n## Managing environment variables\n\nWe use [Dotenv](https://github.com/bkeepers/dotenv) to manage our environment\nvariables locally.\n\nThe repository will include safe defaults for development in `/.env.example` and\nfor test in `/.env.test`. We use 'example' instead of 'development' (from the\nDotenv docs) to be consistent with current dxw conventions and to make it more\nexplicit that these values are not to be committed.\n\nTo manage sensitive environment variables:\n\n1. Add the new key and safe default value to the `/.env.example` file eg.\n   `ROLLBAR_TOKEN=ROLLBAR_TOKEN`\n1. Add the new key and real value to your local `/.env.development.local` file,\n   which should never be checked into Git. This file will look something like\n   `ROLLBAR_TOKEN=123456789`\n\n### Required environment variables\n\n- `CERC_FORECAST_API_HOST_URL`: find the URL of the CERC API host in the\n  1Password vault\n- `CERC_FORECAST_API_KEY`: find the API key in the 1Password vault\n- `CERC_FORECAST_API_CACHE_LIMIT_MINS`: how often we expire our cached forecasts\n- `CERC_SUBSCRIBE_API_HOST_URL`: find the URL of the CERC API host in the\n  1Password vault\n- `CERC_SUBSCRIBE_API_KEY`: find the API key in the 1Password vault\n- `MAPTILER_API_KEY`: used for vector tiles display within Leaflet. Dev and prod\n  keys are in the 1Password vault\n\n## Access\n\nThe service is deployed to Heroku at\n[https://air-text-3e4548b53179.herokuapp.com/][].\n\n## Source\n\nThis repository was bootstrapped from\n[dxw's `rails-template`](https://github.com/dxw/rails-template).\n\n[https://air-text-3e4548b53179.herokuapp.com/]:\n  https://air-text-3e4548b53179.herokuapp.com/\n[./doc/terminology.md]: ./doc/terminology.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdxw%2Fair-text","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdxw%2Fair-text","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdxw%2Fair-text/lists"}