Package Content
Module Architecture
flowchart TD
OC["āļø Odoo Core\n(base, mail, web, sale,\naccount, portal, website)"]
BASE["sadeem_saas_base\nšļø SAAS Base\nServers, backups, git accounts,\nnotifications (ntfy), SSH terminal,\nwebhooks, SaaS logs"]
CF["sadeem_cloudflare\nš Cloudflare Connector\nDNS record management\nvia Cloudflare API"]
NPM["sadeem_nginx_proxy_manager\nš Nginx Proxy Manager\nReverse proxy & SSL\nvia NPM API"]
PORT["sadeem_portainer\nš³ Portainer Connector\nDocker environment management\nvia Portainer API"]
SUB["sadeem_subscription\nš SAAS Subscription Base\nCore SaaS logic: subscriptions,\nstages, billing, domains,\nportal, module management,\nbackups, slave communication"]
DOCKER["sadeem_saas_docker\nš³ Docker SAAS\nDocker deployment strategy:\nstack provisioning via Portainer,\ncontainer logs, resource monitoring"]
DBFILT["sadeem_saas_dbfilter\nšļø DB Filter SAAS\nShared-instance deployment:\nDBFilter server groups,\ndomain routing, DB provisioning"]
SYNCDB["sadeem_saas_dbfilter_sync_db\nš DBFilter Sync Databases\nSync existing DBFilter server\ndatabases into subscriptions"]
TRIAL["sadeem_subscription_trial\nš Subscription Trial\nPublic trial request form,\ncustomizable trial packages"]
WEB["sadeem_subscription_website\nš Website Plans\nPublic plan marketplace,\nsubscription purchase via website"]
TRIAL_DOCK["sadeem_subscription_trial_docker\nš³š Trial + Docker\nDocker fields for trial packages"]
TRIAL_DB["sadeem_subscription_trial_dbfilter\nšļøš Trial + DBFilter\nDBFilter fields for trial packages"]
WEB_DOCK["sadeem_subscription_website_docker\nš³š Website Plans + Docker\nDocker fields for website plans"]
WEB_DB["sadeem_subscription_website_dbfilter\nšļøš Website Plans + DBFilter\nDBFilter fields for website plans"]
OC --> BASE
OC --> SUB
BASE --> CF
BASE --> NPM
NPM --> PORT
CF --> PORT
BASE --> SUB
NPM --> SUB
CF --> SUB
CF --> DOCKER
SUB --> DOCKER
PORT --> DOCKER
CF --> DBFILT
SUB --> DBFILT
DBFILT --> SYNCDB
SUB --> TRIAL
SUB --> WEB
TRIAL --> TRIAL_DOCK
DOCKER --> TRIAL_DOCK
TRIAL --> TRIAL_DB
DBFILT --> TRIAL_DB
WEB --> WEB_DOCK
DOCKER --> WEB_DOCK
WEB --> WEB_DB
DBFILT --> WEB_DB
classDef infra fill:#1e3a5f,color:#fff,stroke:#4a9eff
classDef core fill:#2d5a27,color:#fff,stroke:#5cb85c
classDef strategy fill:#5a3e00,color:#fff,stroke:#f0a500
classDef feature fill:#3d1a5e,color:#fff,stroke:#9b59b6
classDef variant fill:#1a4040,color:#fff,stroke:#1abc9c
class BASE,CF,NPM,PORT infra
class SUB core
class DOCKER,DBFILT strategy
class SYNCDB,TRIAL,WEB feature
class TRIAL_DOCK,TRIAL_DB,WEB_DOCK,WEB_DB variant
SAAS Package āā sadeem_saas_base āā sadeem_cloudflare āā sadeem_nginx_proxy_manager āā sadeem_portainer āā sadeem_subscription āā sadeem_saas_docker āā sadeem_saas_dbfilter āā sadeem_saas_dbfilter_sync_db āā sadeem_subscription_trial āā sadeem_subscription_trial_dbfilter āā sadeem_subscription_trial_docker āā sadeem_subscription_website āā sadeem_subscription_website_dbfilter āā sadeem_subscription_website_docker SAAS Package Slave āā sadeem_saas_slave SAAS Package Backup āā sadeem_saas_backup_manager
SAAS Base (sadeem_saas_base)
Foundation module required by all other SAAS modules. Provides shared infrastructure, security groups, and core integrations.
| Feature | Description |
|---|---|
| Root Servers | SSH connectivity, command execution, real-time monitoring (CPU/RAM/Disk/Network), web terminal, VS Code server |
| Git Integration | GitHub account management, repository tracking, webhook registration, commit logging, syntax-validated code deployment |
| PostgreSQL Servers | Remote database server connection configuration |
| Backup Servers | Remote backup API integration with S3/cloud account syncing |
| Notification Servers | Push notifications via self-hosted ntfy and Firebase FCM, per-subscription token management |
| Webhooks | Inbound webhook endpoints that trigger actions on Odoo records |
| Audit Logging | Full log of all SSH commands and server actions |
Cloudflare Connector (sadeem_cloudflare)
Integrates Odoo with the Cloudflare API for DNS management.
| Feature | Description |
|---|---|
| Accounts | Store and validate API credentials per Cloudflare account |
| DNS Records | Create, update, delete, and check A and CNAME records remotely |
| Proxied Mode | Toggle Cloudflare proxying and configure TTL per record |
| Status Checks | Compare local record config against live Cloudflare state |
| Duplicate Detection | Auto-links to existing remote records on conflict |
Nginx Proxy Manager Connector (sadeem_nginx_proxy_manager)
Integrates Odoo with the Nginx Proxy Manager API for reverse proxy and SSL management.
| Feature | Description |
|---|---|
| Servers | Connect to NPM instances with JWT authentication and automatic token refresh |
| Proxy Hosts | Create, enable, disable, and delete proxy hosts remotely |
| SSL Certificates | Auto-provision Let's Encrypt certs; reuses latest valid cert if found |
| Status Checks | Verify live host state and compare against local config |
Portainer Connector (sadeem_portainer)
Integrates Odoo with the Portainer API for Docker infrastructure orchestration.
| Feature | Description |
|---|---|
| Portainer Servers | Connect via API key; install Portainer on root servers via SSH with auto admin setup |
| Environments | Track Docker hosts with real-time capacity; carry Nginx/Cloudflare/domain defaults for subscriptions |
| Stack Management | Create, update, start, stop, delete Docker stacks; check health |
| Container Control | Restart, start, stop, and exec commands in containers |
| Image Config | Define Docker images with version tags and environment assignment strategies |
| Environment Selection | Pick optimal Docker host by sequence or lowest usage |
Subscription (sadeem_subscription)
Core SaaS subscription lifecycle management module. All deployment strategy modules extend this.
| Feature | Description |
|---|---|
| Subscriptions | Full lifecycle: Draft ā Building (DNS + Nginx + DB) ā Running ā Stopped / Cancelled |
| Stages | Multi-stage environments per subscription (dev, test, production) |
| Packages & Modules | Reusable Odoo module collections assignable to subscriptions |
| Backup Management | Create, download, restore backups via remote backup server |
| Collaborators | Team access management with portal invite workflow |
| Update Requests | Resource upgrade requests (users, storage, stages) with approve/decline |
| Model Limits | Per-model record limits synced to slave instances |
| Database Templates | Pre-built DB snapshots for fast subscription setup |
| Dashboard | Real-time KPI cards, charts, alerts, and activity feeds |
| Portal | Customer self-service for backups, stages, domains, git, and more |
| SQL Console | Run SQL queries directly on slave databases |
Docker SAAS (sadeem_saas_docker)
Docker-based subscription deployment strategy via Portainer.
| Feature | Description |
|---|---|
| Docker Subscriptions | Container lifecycle, Odoo configuration, worker scaling |
| Docker Stages | Independent stage containers with separate configuration |
| Code Server | Browser-based VS Code containers for remote development |
| Dashboard Extension | Environments section added to the subscription dashboard |
DB Filter SAAS (sadeem_saas_dbfilter)
Shared-instance deployment strategy using Odoo database filtering.
| Feature | Description |
|---|---|
| DB Filter Servers | Multi-tenant Odoo server configuration |
| Server Groups | Load balancing with sequence or capacity-based selection |
| Invoice Integration | Automatic subscription creation from confirmed invoices |
DBFilter Sync Databases (sadeem_saas_dbfilter_sync_db)
Add-on for sadeem_saas_dbfilter. Syncs existing databases from a DBFilter server into Odoo subscriptions.
| Feature | Description |
|---|---|
| Sync Wizard | Select existing databases on a DBFilter server and import them as subscriptions |
| Server Integration | Adds sync action directly on the DBFilter server form |
Subscription Trial (sadeem_subscription_trial)
Public trial subscription request system via website form.
| Feature | Description |
|---|---|
| Trial Packages | Configurable trial duration, resource limits, and auto-subscription creation |
| Trial Requests | Customer submissions via public form with automatic subscription provisioning |
Subscription Trial - DB Filter (sadeem_subscription_trial_dbfilter)
Extends trial packages with DB Filter server group configuration for DBFilter-based trial provisioning.
Subscription Trial - Docker (sadeem_subscription_trial_docker)
Extends trial packages with Docker image configuration for Docker-based trial provisioning.
Subscription Website Plans (sadeem_subscription_website)
Public-facing subscription purchase system with website checkout and payment.
| Feature | Description |
|---|---|
| Plans | Configurable offerings with packages, add-ons, and multi-period pricing |
| Plan Orders | Customer orders integrated with sale orders and Odoo payment |
| Website Flow | Browse plans ā configure ā pick subdomain ā checkout ā pay |
Website Plans - DB Filter (sadeem_subscription_website_dbfilter)
Extends website plans with DB Filter server group configuration for DBFilter-based subscription creation.
Website Plans - Docker (sadeem_subscription_website_docker)
Extends website plans with Docker image and workers add-on for Docker-based subscription creation.
SAAS Package Slave (sadeem_saas_slave)
Installed on each client Odoo instance. Enables remote control from the master SAAS platform.
| Feature | Description |
|---|---|
| Remote Control | User management, module install/uninstall, SQL execution |
| Backup | Backup creation and restore operations on the client side |
| Bypass Login | Direct admin login without password for support access |
| Info Endpoint | Exposes resource usage, database info, and module list to master |
SAAS Package Backup (sadeem_saas_backup_manager)
Standalone backup management server running on a separate Odoo instance.
| Feature | Description |
|---|---|
| Backup Operations | Create, delete, and download database backups via REST API |
| Scheduled Actions | Automated backup routines with configurable retention |
| Amazon S3 | Cloud storage integration for off-site backup storage |