Skip to content

Online tool for analysing price trends of gliders/sailplanes and airplanes over time

License

Notifications You must be signed in to change notification settings

lwitkowski/aero-offers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aero-offers

This project aims at reviving aero-offers.com - invaluable source of price trends for gliders and other aircrafts, originally developed and maintained by @rthaenert

Development

CD - UI CD - Backend (api, jobs)

Project structure (building blocks / deployment units)

  • ui - vue.js application. Deployed as Azure Static Web App (for free).
  • backend/api - python flask app with few REST endpoints. Deployed as Azure Container App (running 24/7)
  • 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.
    • 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
    • run_update_fx_rates - updates currency exchange rates from ECB REST api
  • db - Azure CosmosDb NoSQL fully managed database (for free; check #135 for decision record).

Deployment

Trunk 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.

TODO

  • Scraper: update db offer if price or location (or any other parameter) has changed
  • UI: consent banner for GA
  • aero-offers.com
  • 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
  • utilize https://github.com/weglide/GliderList as source of truth for glider types/models
  • UI: admin panel for manual (re) classification (or community-based)
  • crawler for Facebook Marketplace - do they have an api?
  • crawler for https://www.aircraft24.de
  • crawler for https://plane-sale.com

Running backend locally without Python

docker compose up --build - starts CosmosDb and Python Flask backend

Prerequisites for local development with hot reloads

  • python 3.13+
  • docker (compose)
  • nodejs

Start CosmosDb emulator in docker (available for debugging via localhost:1234):

docker-compose up cosmosdb

Init python environment

cd backend
./init_dev_env.sh

Start backend api (python app):

cd backend
./start_api.sh

Start UI (vue app):

cd ui
npm run dev

UI has own, detailed README.md file.

Run crawlers/spiders & reclassifier:

cd backend
./run_spiders.sh && ./run_classifier.sh