A Modern Multi-Tenant Hotel Management System
AboutΒ Β Β |Β Β Β FeaturesΒ Β Β |Β Β Β TechnologiesΒ Β Β |Β Β Β InstallationΒ Β Β |Β Β Β License
Innkeeper is a comprehensive multi-tenant hotel management system designed to streamline and modernize hotel operations. Built on a robust foundation of AdonisJS v6 backend and React 19 with Inertia.js frontend, it provides a complete solution for managing multiple hotel properties from a single platform.
This system addresses the complex needs of modern hospitality businesses, from small boutique hotels to large hotel chains. With its multi-tenant architecture, each hotel property maintains complete data isolation while benefiting from shared infrastructure and centralized management capabilities.
graph TB
subgraph "π₯οΈ Frontend"
UI["π React + Inertia.js<br/>Guest Portal | Staff Dashboard | Admin Panel"]
end
subgraph "π§ Backend Services"
API[AdonisJS API]
AUTH[Multi-Tenant Auth]
BOOKING[Booking Engine]
PMS[Property Management]
end
subgraph "πΎ Data Layer"
DB[(PostgreSQL)]
CACHE[(Redis)]
end
UI --> API
API --> AUTH
API --> BOOKING
API --> PMS
AUTH --> DB
BOOKING --> DB
PMS --> DB
BOOKING --> CACHE
AUTH --> CACHE
style UI fill:#e1f5fe
style API fill:#f3e5f5
style DB fill:#e8f5e8
style CACHE fill:#fff3e0
For a detailed view of the database structure, you can access our interactive database diagram:
π Interactive Database Diagram
erDiagram
ORGANIZATIONS {
int id PK
string name
string slug
string email
string timezone
string currency
}
HOTELS {
int id PK
int organization_id FK
string name
string address
int star_rating
int total_rooms
time check_in_time
time check_out_time
}
ROOMS {
int id PK
int hotel_id FK
int room_type_id FK
string room_number
string status
string housekeeping_status
}
ROOM_TYPES {
int id PK
int hotel_id FK
string name
int max_occupancy
decimal base_price
string bed_type
}
GUESTS {
int id PK
int organization_id FK
string first_name
string last_name
string email
string phone
string document_number
}
RESERVATIONS {
int id PK
int organization_id FK
int hotel_id FK
int room_id FK
int guest_id FK
string confirmation_code
string status
date check_in_date
date check_out_date
decimal total_amount
}
PAYMENTS {
int id PK
int reservation_id FK
int guest_id FK
string transaction_id
string method
string status
decimal amount
string currency
}
ORGANIZATIONS ||--o{ HOTELS : "owns"
ORGANIZATIONS ||--o{ GUESTS : "manages"
HOTELS ||--o{ ROOMS : "contains"
HOTELS ||--o{ ROOM_TYPES : "defines"
HOTELS ||--o{ RESERVATIONS : "receives"
ROOM_TYPES ||--o{ ROOMS : "categorizes"
GUESTS ||--o{ RESERVATIONS : "makes"
ROOMS ||--o{ RESERVATIONS : "assigned_to"
RESERVATIONS ||--o{ PAYMENTS : "generates"
- π’ Multi-Tenant Architecture: Manage multiple hotel properties with complete data isolation
- ποΈ Room Management: Comprehensive room inventory, types, amenities, and pricing
- π Reservation System: Advanced booking engine with real-time availability
- π₯ Guest Management: Complete guest profiles, preferences, and history
- πΌ Front Desk Operations: Check-in/out, room assignments, and walk-ins
- π§Ή Housekeeping: Room status tracking, cleaning schedules, and maintenance
- π° Billing & Invoicing: Flexible pricing, taxes, discounts, and payment processing
- π Analytics Dashboard: Real-time occupancy, revenue, and performance metrics
- π Channel Manager: Integration with OTAs (Booking.com, Expedia, etc.)
- π± Mobile-Responsive: Full functionality across all devices
- π Multi-Language Support: Internationalization for global operations
- π· Staff Management: Roles, permissions, schedules, and task assignments
- π§ Communication Hub: Automated emails, SMS notifications, and guest messaging
- π― Revenue Management: Dynamic pricing and yield optimization
- π Third-Party Integrations: POS systems, door locks, and accounting software
- π Role-Based Access Control: Granular permissions for different user types
- π Real-Time Updates: WebSocket-powered live updates across the platform
- π Scalable Architecture: Built to handle properties of any size
- π Data Security: End-to-end encryption and compliance with hospitality standards
- π API-First Design: RESTful API for easy integrations
- π± Progressive Web App: Installable on mobile devices
- π¨ Customizable UI: Theming system for brand consistency
- AdonisJS v6: Enterprise-grade Node.js framework
- PostgreSQL: Robust relational database with multi-tenant support
- Redis: High-performance caching and session management
- Bull Queue: Background job processing
- JWT: Secure authentication
- React 19: Modern UI library
- Inertia.js: SPA experience without the complexity
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first styling
- shadcn/ui: Beautiful, accessible components
- Recharts: Data visualization
- Docker: Containerization
- Vite: Lightning-fast development
- ESLint & Prettier: Code quality
- Japa: Testing framework
- Node.js (v18 or higher)
- pnpm (recommended) or npm/yarn
- PostgreSQL (v14 or higher)
- Redis (v6 or higher)
- Docker (optional, for containerized setup)
-
Clone the repository:
git clone https://github.com/gabrielmaialva33/innkeeper.git cd innkeeper -
Install dependencies:
pnpm install
-
Set up environment variables:
cp .env.example .env
Configure your database, Redis, and other settings in the
.envfile. -
Run database migrations:
node ace migration:run
-
Seed initial data (optional):
node ace db:seed
-
Start the development server:
pnpm dev
Your application will be available at
http://localhost:3333
For a containerized environment:
docker-compose up -d
pnpm docker-
Build the application:
pnpm build
-
Run migrations in production:
node ace migration:run --force
-
Start the production server:
pnpm start
For detailed documentation, visit our Wiki or check the /docs
folder.
API documentation is available at /api/docs when running in development mode.
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License. See the LICENSE file for details.
Built with β€οΈ for the hospitality industry