Skip to main content

Architecture Overview

This section provides technical documentation for developers and engineers working on or integrating with ABRA.

Technology Stack

Backend

  • PHP 8.2 with Laravel 10
  • MySQL 8.0 database
  • Redis for caching and queues

Frontend

  • Vue 3 with Composition API
  • Inertia.js for SPA without API
  • Tailwind CSS for styling
  • Pinia for state management

Infrastructure

  • Google Cloud Platform (GCP)
  • Docker containerization
  • Laravel Reverb for WebSockets

High-Level Architecture

┌─────────────────────────────────────────────────────────────┐
│                        CLIENTS                               │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐        │
│  │ Browser │  │ Mobile  │  │   PMS   │  │ Webhooks│        │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘        │
└───────┼────────────┼────────────┼────────────┼──────────────┘
        │            │            │            │
        ▼            ▼            ▼            ▼
┌─────────────────────────────────────────────────────────────┐
│                     ABRA APPLICATION                         │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                   Laravel Backend                     │  │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐    │  │
│  │  │ Inertia │ │   API   │ │ Webhooks│ │ Workers │    │  │
│  │  └─────────┘ └─────────┘ └─────────┘ └─────────┘    │  │
│  └──────────────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                    Vue.js Frontend                    │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
        │            │            │
        ▼            ▼            ▼
┌─────────────────────────────────────────────────────────────┐
│                      DATA LAYER                              │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐                     │
│  │  MySQL  │  │  Redis  │  │  Files  │                     │
│  └─────────┘  └─────────┘  └─────────┘                     │
└─────────────────────────────────────────────────────────────┘

Key Patterns

Multi-Tenancy

ABRA is multi-tenant by hotel. Each hotel has isolated data with shared application code.

Command/Service Pattern

Business logic is organized into Commands and Services for testability and reuse.

Event-Driven Processing

PMS integrations use event streaming for real-time data synchronization.