{"id":21627181,"url":"https://github.com/xxczaki/air-radar","last_synced_at":"2025-08-02T02:11:46.875Z","repository":{"id":88739075,"uuid":"281781432","full_name":"xxczaki/air-radar","owner":"xxczaki","description":"Generate air quality reports from anywhere in the world and share them with your friends!","archived":false,"fork":false,"pushed_at":"2025-06-07T23:57:43.000Z","size":6300,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-08T00:29:41.793Z","etag":null,"topics":["a11y","air","air-pollution","air-quality","airly","api","i18n","mongodb","mongodb-atlas","next","nextjs","react","recoil","vercel","waqi","web-app","web-application"],"latest_commit_sha":null,"homepage":"https://air-radar.vercel.app","language":"TypeScript","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/xxczaki.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-07-22T20:55:51.000Z","updated_at":"2020-09-16T21:07:12.000Z","dependencies_parsed_at":"2023-09-21T20:06:03.383Z","dependency_job_id":null,"html_url":"https://github.com/xxczaki/air-radar","commit_stats":{"total_commits":645,"total_committers":6,"mean_commits":107.5,"dds":0.6651162790697674,"last_synced_commit":"66b92c23c53595cd1dbd91231a3675ebfe5f7780"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xxczaki/air-radar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fair-radar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fair-radar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fair-radar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fair-radar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xxczaki","download_url":"https://codeload.github.com/xxczaki/air-radar/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fair-radar/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268326563,"owners_count":24232491,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["a11y","air","air-pollution","air-quality","airly","api","i18n","mongodb","mongodb-atlas","next","nextjs","react","recoil","vercel","waqi","web-app","web-application"],"created_at":"2024-11-25T01:15:45.884Z","updated_at":"2025-08-02T02:11:46.811Z","avatar_url":"https://github.com/xxczaki.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"**Disclaimer: Work in progress**\n\n---\n\n# Air Radar ☁️\n\n\u003e Generate air quality reports from anywhere in the world and share them with your friends!\n\n[![Build Status](https://travis-ci.org/xxczaki/air-radar.svg?branch=master)](https://travis-ci.org/xxczaki/air-radar)\n[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo)\n[![style: styled-components](https://img.shields.io/badge/style-%F0%9F%92%85%20styled--components-orange.svg?colorB=daa357\u0026colorA=db748e)](https://github.com/styled-components/styled-components)\n\n---\n\n## Highlights\n\n- Blazing fast (uses incremental SSG and many performance optimizations) ⚡\n- Uses 2* data sources merged into one, unified API 📑\n- Implements i18n 🌐\n- Features strong focus on accessibility 👍\n- Fully customizable 🛠️\n- Pleasing, fully responsive design 💅\n- Utilizes end-to-end encryption 🔒\n- Written in TypeScript\n\n*We aim to add more data sources in the future.\n\n## Development\n\nThe following environmental variables need to be provided:\n\n* `DB_URI` - MongoDB database URI.\n* `DB_USER` - Database username.\n* `DB_PASSWORD` - Database password.\n* `DB_NAME` - Database name.\n* `DB_COLLECTION` - Collection name.\n* `NEXT_PUBLIC_AIRLY_KEY` - [Airly API](https://developer.airly.eu/) key.\n* `NEXT_PUBLIC_WAQI_TOKEN` - [Air Quality Open Data Platform API](https://aqicn.org/api/) token.\n* `NEXT_PUBLIC_MAPBOX_TOKEN` - [Mapbox](https://www.mapbox.com/) API token.\n\nYou can use the [`.env.local`](https://nextjs.org/docs/basic-features/environment-variables#loading-environment-variables) file for this.\n\n---\n\n\u003e Hosted with [Vercel ▲](https://vercel.com)\n\n```bash\n# Run in development mode\n$ npm run dev\n\n# Build for production\n$ npm run build\n\n# Lint\n$ npm test\n```\n\n## TODO\n\n- [x] Home page\n\t- [ ] Multiple data sources\n\t\t- [x] Airly\n\t\t- [x] World Air Quality Index\n\t\t- [ ] ?\n\t- [x] Show the amount of reports created\n- [ ] Reports page\n    - [x] Map\n\t- [ ] Charts\n\t- [x] Sensor information\n\t\t- [x] Provider\n\t\t- [x] Location\n\t\t- [x] Distance\n\t- [x] Share functionality\n    \t- [x] Generate Open Graph images\n    \t- [x] Investigate the `Navigator.share()` API\n\t- [x] Information about WHO standards\n- [ ] Other pages\n\t- [ ] Allow adding custom-made air pollution sensors\n\t- [x] Manage locally created reports\n\t- [x] Privacy policy\n- [ ] i18n (long-standing task)\n- [x] Persist global state (possibly blocked by Recoil API changes)\n- [x] Secure API routes\n- [ ] Improve language-based redirection\n- [x] End-to-end encryption\n\n## Technology stack\n\n- [**React**](https://reactjs.org/) for UI;\n- [**Next.js**](https://nextjs.org/) for SSG, dynamic routes and much more;\n- [**Styled Components**](https://styled-components.com/) for styling;\n- [**Recoil**](https://recoiljs.org/) for state management;\n- [**MongoDB**](https://www.mongodb.com/) for storing user-generated reports.\n\n### License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxczaki%2Fair-radar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxxczaki%2Fair-radar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxczaki%2Fair-radar/lists"}