1. legacy
Itinera API
  • ✈ Itinera API Documentation
  • Docs
    • legacy
      • Itinera — System Overview
      • Technology Stack & Architecture
      • Getting Started Guide
      • Infrastructure
      • Frontend Application
      • Architecture Overview
      • API Reference
      • Backend Services
      • Development Guidelines
    • phases
      • 01. Architecture Overview & Checkout Idempotency
      • Phase 2: Commerce & Checkout Engine
      • Phase 3: Webhooks & Asynchronous Fulfillment
      • Phase 4: Security Perimeter & Authentication
      • Phase 5: Database Schema & Entity Relationships
      • Phase 6: AI Quota & Telemetry Subsystems
      • Phase 7: API Route Matrix & FormRequests
      • Phase 8: Global Exception & Error Handling
      • Phase 9: Frontend Ecosystem & State Management
      • Phase 10: Design System & Component Library
      • Phase 11: Interactive GSAP Animations
      • Phase 12: Deployment & CI/CD Pipeline
      • Phase 13: Testing Strategies
      • Phase 14: Performance & Optimization
      • Phase 15: Developer Onboarding & Runbooks
      • 15-Phase Comprehensive Wiki & Documentation Plan
  • APIs
    • Auth
      • Register a new user
      • Log in a user
      • Log out user
      • Refresh JWT token
      • Forgot password request
      • Reset password verification
      • Get current user profile
      • Update user profile
      • Redirect to Google OAuth
      • Google OAuth Callback
      • Verify email via signed URL
    • Catalog
      • List all countries
      • Get country details
      • List all cities
      • List all regions
      • List all destinations
      • Get destination details
      • Get hotels by destination
      • List all hotels
      • Get hotel details
      • Get reviews for a hotel
      • List all flights
      • Get flight details
      • List all restaurants
      • Get restaurant details
      • List all attractions
      • Get current weather
      • Submit review for an entity
      • Delete review
      • Toggle favourite status for entity
      • List my submitted reviews
    • Bookings
      • Book a tour destination
    • V1 Aliases
      • V1 List all countries
      • V1 Get country details
      • V1 List all cities
      • V1 List all destinations
      • V1 Get destination details
      • V1 Get hotels by destination
      • V1 List all hotels
      • V1 Get hotel details
      • V1 Get reviews for a hotel
      • V1 List all flights
      • V1 Get flight details
      • V1 List all restaurants
      • V1 Get restaurant details
      • V1 List all attractions
      • V1 Get attraction details
      • V1 List all regions
      • V1 Get weather details
    • Trips
      • List user trips
      • Create a new trip
      • Get trip details
      • Update trip details
      • Delete a trip
      • Get creation metadata
      • Attach items to a trip
      • Update trip item
      • Detach items from a trip
      • Fork a trip
    • Conversations
      • List user conversations
      • Start a new conversation
      • Get conversation details
      • List messages in conversation
      • Send message to conversation
      • Mark conversation as read
    • Commerce Plans
      • List public plans
      • Get public plan details
    • Commerce Subscriptions
      • Subscribe to a plan
      • Upgrade active plan
      • Get active subscription info
      • Cancel active subscription
    • Commerce Checkout
      • Initiate Paymob payment checkout
    • Integrations
      • Paymob status webhook callback
      • Paymob redirect return callback
    • System Settings & Support
      • Submit public contact message
      • Subscribe to system newsletter
      • Get list of my reports
      • List all notifications
      • Mark single notification as read
      • List available surveys
      • Submit answers for survey
      • Get survey details
      • Update survey details
      • Delete survey response
    • AI Tools
      • Enhance itinerary details using AI
      • Request AI review of itinerary
      • Plan route using AI assistance
      • Get AI quota remaining details
      • Chat with AI Concierge assistant
      • Get AI Review progress by ID
    • Agency Integration
      • Request agency assignment
      • List agency active tasks
      • List agency managed trips
      • Get agency total earnings
      • Get agency profile details
      • Update agency profile details
    • Admin User Management
      • List users inside admin dashboard
      • Get user profile
      • Set user active status
      • Block user profile
    • Admin Catalog Moderation
      • Create new catalog category
      • Create new catalog destination
      • Create new hotel catalog record
      • Create new flight catalog record
      • Create new restaurant catalog record
      • Create new attraction catalog record
  • Schemas
    • User
    • ErrorResponse
    • Trip
    • Destination
    • Hotel
    • Flight
    • Restaurant
    • Attraction
    • Booking
    • Review
    • Agency
    • Survey
  1. legacy

Technology Stack & Architecture

Table of Contents#

1.
Stack At A Glance
2.
Backend Libraries And Why They Are There
3.
Frontend Stack
4.
Data & Caching Topology
5.
Version Notes And Gotchas

Stack At A Glance#

LayerTechnologyVersion constraint
LanguagePHPcomposer ^8.5 · CI 8.2 · Docker image 8.5-fpm-alpine
FrameworkLaravel^13.0
Authtymon/jwt-auth + Laravel Socialite^2.1 / *
RBACspatie/laravel-permission`^6.16
DatabaseMySQL (prod) · SQLite (tests/local quickstart)—
Cache/Queue backendRedis via predis`^2.0
Paymentspaymob/php-library^1.0
AIlucianotonet/groq-laravel → Groq LLM^1.0 (model default llama-3.1-8b-instant)
PDF / Excelbarryvdh/laravel-dompdf · openspout^3.1 / `^4.24
API docsdedoc/scramble (OpenAPI at /docs/api)^0.13.36
TestingPHPUnit ^11–13, Mockery, Collisiondev
FrontendVanilla HTML5/CSS3/JS + GSAP 3.12, Tailwind utilitiesno build step for pages
Section sources: composer.json, README badges/features

Backend Libraries And Why They Are There#

Diagram sources: Services tree, composer.json
Notable choices:
Scramble generates interactive docs from controller docblocks — no manual spec maintenance (README).
predis over ext-redis: the Docker build deliberately skips pecl redis because it fails against PHP 8.5; predis needs no extension (Dockerfile comment).
DomPDF + OpenSpout pair covers branded executive PDFs and spreadsheet exports with "All Time" default filtering.

Frontend Stack#

Plain ES5-flavoured modules under js/ loaded per page; shared core common.js exposes session guard, apiFetch wrapper around API_BASE, sidebar nav, toasts, formatters.
Session token stored under key itinera_token via the canonical Itinera config/api/session stack (window.Itinera).
Design system CSS lives in css/ (common.css, index.css, page-specific sheets + css/components/); GSAP drives hero timelines, tilt micro-interactions, KPI counters.
Weather radar carousel consumes /weather (Open-Meteo backed) for 17+ cities.
Section sources: Frontend README, js tree, css tree

Data & Caching Topology#

Redis backs cache keys declared in Support/Constants/CacheKeys.php, throttle limiters (throttle:weather|maps|ai|login…), and AI quota counters (AiUsageService).
Diagram sources: CacheKeys.php, routes throttle usage

Version Notes And Gotchas#

SymptomCauseFix guidance
Composer platform errors locally"php": "^8.5" requirement vs local 8.2run inside Docker or adjust platform check consciously
Redis features silently offCACHE_DRIVER=array fallbackset redis driver for quota/throttle correctness in tests that assert it
Scramble docs stalecached annotationsclear config/route caches after controller edits
GSAP animations missingCDN blocked offlinepages degrade gracefully; verify network or vendor locally
Modified at 2026-08-25 22:41:45
Previous
Itinera — System Overview
Next
Getting Started Guide
Built with