Production-style MVP for recommending Snowmass ski pods using strict user constraints and Open-Meteo hourly forecasts.
For the simplest local launch on this computer, start with START_HERE.md.
backend/: FastAPI API, terrain dataset, scoring logic, tests.frontend/: Static HTML/CSS/JS single-page UI.
This project has two small parts:
- The backend is the brain. It picks the best Snowmass pod based on your settings and weather.
- The frontend is the page you open in your browser.
On Windows:
- Install Python 3.11 from python.org.
- Open PowerShell in this folder.
- Install backend packages:
python -m pip install -r .\backend\requirements.txt- Start the backend:
python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --app-dir .\backend- In a second PowerShell window, start the frontend:
node .\frontend\server.js- Open http://127.0.0.1:3000
- Quick checks:
- Backend health: http://127.0.0.1:8000/health
- Frontend: http://127.0.0.1:3000
make setup-backendmake run-backendBackend URL: http://127.0.0.1:8000
make test-backendOpen frontend/index.html in your browser. The page calls http://127.0.0.1:8000/recommend.
GET /health->{"ok": true}POST /recommend-> top 3 pod recommendations (with best 2-hour window, reasons, and excluded pods)GET /live/snowmass-> live runs and lifts, with each mapped run including official pod metadata and a canonical difficulty label when the trail can be confidently linked
- Apply strict hard constraints first.
- Pull forecast hours from Open-Meteo.
- Score each pod per hour and select best contiguous 2-hour window.
- Return top pods with explainability bullets (2-5).
- If weather unavailable, use neutral assumptions and reduce confidence.
- Resort operations feed integration (lifts, closures, grooming reports).
- Better crowd modeling and dynamic congestion penalties.
- Run-level route suggestions beyond pod-level.
- Feedback-driven personalization from user labels.