{"id":18068937,"url":"https://github.com/lwitkowski/aero-offers","last_synced_at":"2025-04-05T16:17:07.391Z","repository":{"id":251070972,"uuid":"835667334","full_name":"lwitkowski/aero-offers","owner":"lwitkowski","description":"Online tool for analysing price trends of gliders/sailplanes and airplanes over time","archived":false,"fork":false,"pushed_at":"2025-04-02T21:32:31.000Z","size":58373,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T22:27:30.940Z","etag":null,"topics":["aircraft","gliders","offers","plane","sailplane"],"latest_commit_sha":null,"homepage":"https://aero-offers.pl","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lwitkowski.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}},"created_at":"2024-07-30T09:45:18.000Z","updated_at":"2025-04-02T21:32:33.000Z","dependencies_parsed_at":"2024-09-17T10:28:23.197Z","dependency_job_id":"be1ada76-aa2d-4aba-8970-8faf36050924","html_url":"https://github.com/lwitkowski/aero-offers","commit_stats":{"total_commits":135,"total_committers":3,"mean_commits":45.0,"dds":0.2592592592592593,"last_synced_commit":"24197702979d2ef870f2bfd1c36f23620dfd9b9d"},"previous_names":["lwitkowski/aero-offers"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwitkowski%2Faero-offers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwitkowski%2Faero-offers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwitkowski%2Faero-offers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lwitkowski%2Faero-offers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lwitkowski","download_url":"https://codeload.github.com/lwitkowski/aero-offers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361705,"owners_count":20926643,"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":["aircraft","gliders","offers","plane","sailplane"],"created_at":"2024-10-31T08:08:18.199Z","updated_at":"2025-04-05T16:17:07.379Z","avatar_url":"https://github.com/lwitkowski.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aero-offers\n\nThis project aims at reviving [aero-offers.com](aero-offers.com) - invaluable source of price trends for gliders and other aircrafts, originally developed and maintained by @rthaenert\n\n## Development\n\n[![CD - UI](https://github.com/lwitkowski/aero-offers/actions/workflows/cd-ui.yaml/badge.svg)](https://github.com/lwitkowski/aero-offers/actions/workflows/cd-ui.yaml) \n[![CD - Backend (api, jobs)](https://github.com/lwitkowski/aero-offers/actions/workflows/cd-backend.yaml/badge.svg)](https://github.com/lwitkowski/aero-offers/actions/workflows/cd-backend.yaml)\n\n### Project structure (building blocks /  deployment units)\n\n- `ui` - vue.js application. Deployed as Azure Static Web App (for free).\n- `backend/api` - python flask app with few REST endpoints. Deployed as Azure Container App (running 24/7) \n- `backend/jobs` - python scripts triggered periodically. Much more resource-heavy than API, bundled in the same Docker image as `api`, deployed as Azure Container Job.\n    - `run_update_offers` - scans few portals (e.g. soaring.de) and stores new offers in the database, then assigns manufacturer and model to new (not yet classified) offers stored in the database\n- `db` - Azure CosmosDb NoSQL fully managed database (for free; check https://github.com/lwitkowski/aero-offers/pull/135 for decision record).\n\n#### Deployment\n\nTrunk Based Development and Continuous Deployment is utilized here - all changes pushed/merged to main are automatically deployed to production env. Currently, the project is running in Azure.\n\n### TODO\n- [ ] Scraper: update db offer if price or location (or any other parameter) has changed\n- [x] UI: consent banner for GA\n- [ ] aero-offers.com\n- [ ] Improve aircraft types structure and introduce 2 levels: glider (e.g Discus 2c 18m) and model (Discus 2cFES 18m) as prices between models sometimes differ significantly\n- [ ] utilize https://github.com/weglide/GliderList as source of truth for glider types/models\n- [ ] UI: admin panel for manual (re) classification (or community-based)\n- [ ] crawler for Facebook Marketplace - do they have an api?\n- [ ] crawler for https://www.aircraft24.de\n- [ ] crawler for https://plane-sale.com\n\n### Running backend locally without Python\n`docker compose up --build` - starts CosmosDb and Python Flask backend\n\n### Prerequisites for local development with hot reloads\n- python 3.13+\n- docker (compose)\n- nodejs\n\nStart CosmosDb emulator in docker (available for debugging via `localhost:1234`):\n```bash\ndocker-compose up cosmosdb\n```\n\nInit python environment\n```bash\ncd backend\n./init_dev_env.sh\n```\n\nStart backend api (python app):\n```\ncd backend\n./start_api.sh\n```\n\nStart UI (vue app):\n```\ncd ui\nnpm run dev\n```\nUI has own, detailed README.md file.\n\nRun crawlers/spiders \u0026 reclassifier:\n```\ncd backend\n./run_spiders.sh \u0026\u0026 ./run_classifier.sh\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flwitkowski%2Faero-offers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flwitkowski%2Faero-offers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flwitkowski%2Faero-offers/lists"}