Skip to content

Architecture

Overview of the ITeas Tools Integration Platform architecture.

System Architecture

┌─────────────────────────────────────────────────────────────┐
│                     Web Application                         │
│                      (Yii2 Framework)                       │
├─────────────────────────────────────────────────────────────┤
│  Controllers  │  Modules  │  API Components  │  Widgets     │
├─────────────────────────────────────────────────────────────┤
│                   Core Components                            │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐     │
│  │Autotask  │ │  Graph   │ │  Jamf    │ │YouTrack  │     │
│  │  Client  │ │  Client  │ │  Client  │ │  Client  │     │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘     │
├─────────────────────────────────────────────────────────────┤
│                  External Services                           │
│  Autotask │ MS Graph │ Jamf │ YouTrack │ AutoDNS │ etc.   │
└─────────────────────────────────────────────────────────────┘

Configuration System

The application uses a custom environment-based configuration loader:

  • iteas\envLoader\Configurator - Loads config from environment variables or files
  • Supports _FILE suffix for reading secrets from files (Docker secrets pattern)
  • Configuration split across multiple files in src/config/

Module System

The application is organized into Yii2 modules:

ModulePurpose
restRESTful API endpoints
webhookWebhook handlers for external services
mailManagerMailgun email management
pickingWarehouse picking/inventory (with nested REST API)
schoolToolSchool management tools
ytSyncYouTrack synchronization
auditlogAudit logging (iteas package)
cronBackground job scheduling (iteas package)

Each module:

  • Has its own namespace and directory in src/modules/
  • Can have its own migrations
  • Can have nested submodules (e.g., picking/rest)
  • Is registered in src/config/modules.php

API Components

Core components are singleton services registered in the application:

API Clients:

php
Yii::$app->autotask       // Autotask PSA integration
Yii::$app->microsoftGraph // Microsoft Graph API
Yii::$app->youtrack       // YouTrack API
Yii::$app->jamf           // Jamf device management
Yii::$app->autoDNS        // Domain/DNS management
Yii::$app->froxlorClient  // Hosting panel API
Yii::$app->mailgunApi     // Email service API

Business Components:

php
Yii::$app->Bmd                // BMD accounting integration
Yii::$app->sharepointSettings // SharePoint configuration
Yii::$app->settings           // Application settings

All API clients are configured via environment variables and initialized as application components.

Database Schema

The application uses multiple database migrations from:

  • Main application (@app/migrations)
  • RBAC system (@yii/rbac/migrations)
  • Background jobs (@iteas/cron/migrations)
  • Module-specific migrations (mailManager, picking, schoolTool, ytSync, auditlog)

Authentication & Authorization

  • Authentication: Azure AD OAuth via chunlaw/yii2-azure-authclient
  • Authorization: RBAC using yii\rbac\DbManager
  • User Model: app\models\User (implements IdentityInterface)

Request Flow

Web Request

User Request → index.php → web.php config → Route → Controller → View

Console Command

CLI → yii script → console.php config → Command Controller → Action

REST API Request

API Request → index.php → rest module → REST Controller → JSON Response

Directory Structure Philosophy

  • Separation of Concerns - Models, Views, Controllers separated
  • Module Isolation - Features grouped in self-contained modules
  • Shared Components - Common code in components/ and core/
  • Domain Models - External API models in subdirectories (autotask/, jamf/, yt/)

See Development for detailed directory structure.

Iteas Tools Integration Platform Version v1.0.20

Version: v1.0.20 Version: v1.0.20
Commit: d6d1a9aa
Deployed at: 2026-09-24T12:48:48Z