NearNode is a Django-based travel planning application that addresses the "last mile" problem and supports multi-modal trip planning with natural-language search.
Finds cheaper flights to nearby airports and calculates total trip cost (flight + ground transport). Users enter their final address; the app evaluates airports within a configurable radius and prioritizes total journey time and cost.
Goes beyond flight-to-flight connections by suggesting train links (e.g. fly into Brussels, train to Amsterdam, fly out) and scoring layovers by lounge access, sleeping pods, and city access.
Natural-language trip search: users describe what they want (e.g. "warm beach under €300, max 5 hours from Milan"). The app parses the query and returns top matches using your flight database or Amadeus when configured.
Couples can sync via a shared code, vote on options, and see matches that fit both preferences.
Route-level delay likelihood and self-transfer risk for unbundled connections.
Prerequisites: Python 3.8+, pip
- Clone the repo and enter the project directory.
- Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt - Copy environment:
cp .env.example .envand add your keys. - Run migrations:
python manage.py migrate - (Optional) Create superuser:
python manage.py createsuperuser - (Optional) Load airports:
python manage.py load_world_airports - Start the server:
python manage.py runserver
Access: Web UI at http://localhost:8000 · Admin at http://localhost:8000/admin · API at http://localhost:8000/api
| Feature | Method | Endpoint |
|---|---|---|
| Nearest alternate | POST | /api/nearest-alternate/ |
| Multi-modal search | POST | /api/multi-modal/ |
| AI Search | POST | /api/ai-search/ |
| Collaborative | POST/GET | /api/collaborative/* |
| Delay prediction | GET | /api/delay-prediction/?flight_id=... |
Request bodies use JSON (e.g. origin_airport_code, final_destination_address, date for nearest alternate; query for AI Search). Authentication required for protected endpoints.
- AI Search (LLM): Set in
.env:AI_SEARCH_LLM_BACKEND=ollamawith optionalOLLAMA_BASE_URLandAI_SEARCH_OLLAMA_MODEL. Without a backend, keyword-based parsing is used. - Real flights: Set
AMADEUS_API_KEYandAMADEUS_API_SECRETfor live flight search; useload_world_airportsso origins/destinations resolve. - Weather: Optional
WEATHER_API_KEYfor destination weather in results. - Database: SQLite by default; use PostgreSQL in production (see
settings.py).
nearnode/– Django project settingscore/– Models, views, profileapi/– REST API (views, serializers, services)templates/– HTML templatesmanage.py,requirements.txt
Django, Django REST Framework, Geopy, Tailwind CSS. Optional: OpenAI-compatible LLM (Ollama/Groq/OpenAI), Amadeus API, Celery/Redis.
See LICENSE.