Logo Lanfrica

owuorviny109/SafariSmart

Domaine:

mobility

Type de record:

software
Créateur:
owu
Hôte:
AI-powered safari and travel planning platform for Kenya. Built with Django and Google Gemini AI. # SafariSmart Kenya **AI-Powered Safari and Travel Planning Platform** --- ## Project Overview **SafariSmart Kenya** is a travel platform designed to modernize how users plan their Kenyan safaris. By integrating **Google's Gemini AI**, the system generates personalized, budget-conscious, and interest-based itineraries. The platform aims to promote domestic tourism by making travel planning accessible and transparent. ### Mission To democratize travel planning in Kenya, enabling users to discover destinations and plan affordable trips through intelligent automation. --- ## System Architecture The following diagram illustrates the high-level architecture of the SafariSmart Kenya platform, detailing the data flow between the user, the Django backend, and the external Gemini AI service. ```mermaid graph TD User[User Client] -->|HTTP Request| LoadBalancer[Load Balancer/Render] LoadBalancer -->|Forward| Django[Django Backend] subgraph "Application Layer" Django -->|Route| Views[View Controllers] Views -->|Validate| Forms[Form Validation] Views -->|Query| ORM[Django ORM] end subgraph "AI Integration Layer" Views -->|Prepare Prompt| GeminiService[Gemini Service] GeminiService -->|API Call| GeminiAPI[Google Gemini API] GeminiAPI -->|JSON Response| GeminiService end subgraph "Data Layer" ORM -->|Read/Write| DB[(PostgreSQL Database)] end GeminiService -->|Parsed Data| Views Views -->|Render| Templates[HTML Templates] Templates -->|Response| User ``` --- ## Database Schema The application uses a relational database to manage users, destinations, and generated itineraries. The core relationships are depicted below. ```mermaid erDiagram User ||--o{ Itinerary : "creates" User ||--o{ WizardSession : "has" Destination ||--o{ Itinerary : "included_in" Destination ||--o{ WizardSession : "selected_in" User { int id PK string username string email } Destination { int id PK string name string destination_type decimal average_cost_per_day string popular_activitie …