Skip to content

Architecture of the Deployment

This document provides an in-depth look at the architecture of the Rooms deployment. It outlines the various components involved, their interactions, and how they contribute to the overall functionality of the system.

Components Overview

Deployment Overview Figure 1: Complete deployment architecture showing all components and their relationships

The deployment architecture consists of several key components, each serving a specific purpose:

  • Rooms Backend: The core application server that handles business logic, API requests, and data processing.
  • Rooms Frontend: The user interface that allows users to interact with the Rooms application
  • PostgreSQL Database: The primary database for storing application data, user information, and configurations.
  • Redis Cache: An in-memory data structure store.
  • Traefik Reverse Proxy: Manages incoming traffic, routes requests to the appropriate services, and handles SSL termination.
  • Dozzle: A web-based log viewer for monitoring container logs in real-time.
  • Glances: A cross-platform monitoring tool that provides real-time system statistics.
  • PgAdmin: A web-based administration tool for managing PostgreSQL databases.
  • RedisInsight: A GUI tool for managing and monitoring Redis databases.
  • Documentation Server: Hosts the mkdocs-based documentation for easy access.

Components

The deployment consists of three main categories: Core Services, Infrastructure, and Management Tools. Each component runs as a Docker container orchestrated via Docker Compose.

Core Application Services

🚀 Rooms Backend

Technology Stack: Go
Purpose: Handles API requests, business logic, and data processing

The backend serves as the core application server, managing all business operations and communicating with PostgreSQL for data persistence. Authentication tokens are cached in Redis for optimal performance.

🎨 Rooms Frontend

Technology Stack: React, Vite, TypeScript
Purpose: User interface for application interaction

The frontend provides an intuitive interface for users to manage rooms and interact with backend services through RESTful API calls.


Data Layer

🗄️ PostgreSQL Database

Purpose: Primary data persistence layer

PostgreSQL stores all application data including user accounts, room configurations, bookings, and system settings. The database is managed through PgAdmin for administrative tasks.

⚡ Redis Cache

Purpose: In-memory caching and session management

Redis improves application performance by caching JWT tokens, session data, and frequently accessed information. This reduces database load and speeds up authentication operations.


Infrastructure & Routing

🔀 Traefik Reverse Proxy

Purpose: Traffic routing, SSL termination, and load balancing

Traefik manages all incoming HTTP/HTTPS traffic, automatically routing requests to appropriate services. It handles SSL certificate provisioning and renewal through Let’s Encrypt integration.


Monitoring & Administration

📊 System Monitoring

Dozzle - Container log aggregation
Real-time log viewer for all Docker containers, essential for debugging and monitoring application behavior.

Glances - System performance metrics
Cross-platform monitoring tool displaying CPU, memory, disk, and network statistics in real-time.

🛠️ Database Administration

PgAdmin - PostgreSQL management interface
Web-based tool for database administration, query execution, and schema management.

RedisInsight - Redis management GUI
Visual tool for monitoring Redis performance, inspecting data structures, and executing commands.


Documentation

📚 Documentation Server

Technology: MkDocs
Purpose: Centralized technical documentation

Hosts comprehensive documentation for the Rooms application, including architecture details, API references, and deployment guides.


Quick Reference

Component Type URL Auth
Frontend Application Link User Login
Backend API Application Link API Key
Swagger Docs Documentation Link Public
Traefik Infrastructure Link 🔒 Admin
Dozzle Monitoring Link 🔒 Admin
Glances Monitoring Link 🔒 Admin
PgAdmin Admin Tool Link 🔒 Admin
RedisInsight Admin Tool Link 🔒 Admin
Documentation Documentation Link Public

Legend: 🔒 = Requires authentication