OLOW Hotel ERP - Project Overview
1. Introduction
OLOW Hotel ERP is a comprehensive, multi-tenant Property Management System (PMS) and Enterprise Resource Planning (ERP) solution designed for modern hospitality businesses in regions like Somalia. It integrates front-office operations with back-office accounting, HR, and inventory management into a single unified platform.
The system is built to handle the specific operational challenges of the region, including mobile money payments (SomXchange), expense-heavy operations, and flexible multi-currency support (USD/SOS).
2. Technical Stack
- Backend Framework: Laravel 12.x (PHP 8.2+)
- Frontend Stack: Livewire 3.x + Flux UI (TailwindCSS)
- Database: MySQL 8.0 (Running via Laravel Herd locally)
- Queue System: Redis (for SMS, Notifications, Bank Sync)
- WebSockets: Laravel Reverb (real-time notifications)
- Architecture: Domain-Driven Design (DDD) with Modular Monolith structure
3. Core Modules (21 Domains)
The application is divided into distinct domains (Modules) to ensure separation of concerns.
Operational Modules
- Front Desk: Reservations, Check-in/Check-out, Room Management, Folios, Revenue Management, Loyalty
- Housekeeping: Cleaning schedules, room inspections, checklists, night reset
- Restaurant: POS ordering, kitchen display, menu management, folio billing
- Laundry: Service tracking, guest/internal laundry, folio integration
- Gym: Memberships, Day Passes, check-in tracking
- Events (Hall): Banquet bookings, event pricing, capacity management
- Maintenance: Work orders, asset tracking, room-linked issues
- SMS: Automated guest communication (Pre-arrival, Welcome, OTPs), bulk marketing
Back-Office Modules
- Accounting: Double-entry GL, Chart of Accounts, P&L, Balance Sheet, AccountingMapService
- Finance: Accounting Setup UI, account mapping configuration
- Inventory: Stock management, FIFO costing, lot tracking, requisitions
- HR & Payroll: Staff profiles, attendance, monthly payroll, loan recovery, payslips
- Staff: Employee records, departments, positions, scheduling
- Expense: Petty cash, budget approval workflows, accounting integration
- Tax: Automated tax calculation engine with configurable rules
- Accounts Receivable (AR): Customer invoicing, receipts, aging reports
- Accounts Payable (AP): Vendor bills, payments, aging reports
Infrastructure Modules
- Property (Tenant): Multi-tenancy logic, subdomains, tenant isolation, onboarding wizard
- Party (Shared Kernel): Centralized contact entity (Customer/Vendor/Staff)
- Wallet: Guest prepaid credits, loyalty integration, SomXchange
- Import: CSV/XLSX data migration tools for onboarding
4. Key Design Decisions
Multi-Tenancy (SaaS)
The system uses a Single Database, Multi-Tenant SaaS approach.
- Identification: Tenants are identified via subdomain (e.g.,
hotel-a.hotels.testlocally,hotel-a.olow.comin production). - Isolation: The
BelongsToPropertytrait auto-scopes all queries byproperty_idand prevents record creation without a property context. - Context:
IdentifyTenantmiddleware resolves the tenant from the hostname and bindscurrent_property_idin the service container.Property::currentId()retrieves it.
Triple-Guard Authentication
webguard — Staff users (App\Models\User) accessing/admin/*customerguard — Guests (App\Domain\Party\Models\Customer) using the guest portaladminguard — Super Admins (App\Models\Admin) managing the/platformpanel
Domain-Driven Design
Code is organized by Business Domain rather than technical layer.
- Path:
app/Domain/{Module}/ - Structure:
Models/,Services/,Enums/,Events/,Listeners/,Jobs/,DTOs/
Accounting-First
Every financial action generates a real-time Journal Entry via AccountingPoster. Account IDs are resolved dynamically via AccountingMapService + AccountingKey enum — no hardcoded GL codes.
5. Getting Started
- For Developers: See Developer Onboarding Guide
- For Deployment: See Deployment Guide
- System Architecture: See Architecture Guide
6. Project Status
- Current Phase: Production — multi-tenant SaaS platform with 21 modules
- Version: v3.0 (Multi-tenant SaaS)
- Documentation: Updated February 2026
- Last Updated: February 11, 2026