Architecture

How Pomavo is built: the service topology, data stores, messaging, and the principles behind the platform.

Overview

This section goes under the hood. While the rest of the documentation describes what Pomavo does, these pages explain how it works: the services that make up the system, where data lives, how work flows asynchronously, and the design principles that keep the platform fast, multi-tenant, and extensible.

This is engineering-oriented documentation. You do not need any of it to use Pomavo, but it is useful if you operate a deployment, build plugins, or integrate deeply.

Service Topology

Pomavo is composed of focused services orchestrated together. Each has a single responsibility:

ServiceResponsibility
WebReact single-page app, the entire user interface
Web APIThe core REST API: tickets, templates, workflows, projects, search, permissions
WorkerAsynchronous background processing, every side effect runs here
AutomationsOne-time startup tasks: database migrations, seeding, search-index setup
AuthStandalone identity service for sessions, OAuth, and token issuance
Plugins & integrationsSandboxed extensions and first-party integrations such as GitHub

The browser talks to the Web API; the Web API performs the operation, persists it, and hands off everything that can happen later to the Worker through a message log.

Data Stores

Pomavo uses the right store for each job rather than forcing everything into one database:

StoreWhat it holds
PostgreSQLThe system of record, tickets, templates, workflows, projects, users, permissions
ElasticsearchThe search index that powers the query language and saved queries
MongoDBBackground jobs and their per-run execution logs
Object storageAttachments and binary assets
Messaging - KafkaThe durable event log connecting the Web API to the Worker

Core Principles

Deep Dives

Observability

Every service emits OpenTelemetry traces, metrics, and structured logs to a Grafana-based stack, so operators can follow a single user action from the API through the message log and into the Worker's job runs.