High-Level Design (HLD)¶
End-to-end overview of the Pixis FinOps platform: a multi-tenant SaaS that reconciles billing, ERP, and bank data on behalf of customer organizations.
flowchart TB
subgraph users[Users]
U[Customer org users<br/>web browser]
end
subgraph edge[Edge / Security]
NX[nginx reverse proxy<br/>TLS 1.2+ termination]
CS[CrowdSec IDS/IPS]
end
subgraph app[Pixis Application]
FE[Frontend<br/>Next.js]
BE[Backend API<br/>FastAPI]
WK[Celery workers<br/>+ Beat scheduler]
end
subgraph data[Data & State]
PG[(Managed PostgreSQL<br/>Supabase — AES-256 at rest<br/>Row-Level Security)]
RD[(Redis<br/>task queue / cache)]
end
subgraph ext[External Integrations]
ST[Stripe]
ZO[Zoho Books]
QB[QuickBooks]
NS[NetSuite]
OR[Oracle Fusion]
GO[Google OAuth / Drive]
AI[OpenAI / Gemini LLM]
end
U -->|HTTPS| NX
NX --> CS
NX --> FE
NX -->|/api/v1| BE
FE --> BE
BE --> PG
BE --> RD
WK --> PG
WK --> RD
BE <-->|OAuth / API keys<br/>encrypted credentials| ST & ZO & QB & NS & OR
BE <--> GO
BE -->|document/text| AI
WK <--> ST & ZO & QB & NS & OR
classDef sec fill:#fde,stroke:#b36
classDef store fill:#def,stroke:#36b
class NX,CS sec
class PG,RD store
Key points¶
- Single entry point — all traffic enters through nginx (TLS 1.2+) fronted by CrowdSec.
- Multi-tenancy — every tenant's data is isolated by PostgreSQL Row-Level Security scoped
by
organization_id; the frontend sends anX-Organization-Idheader validated against the JWT org claim. - Stateless app tier — frontend and backend hold no durable state; all state lives in managed PostgreSQL and Redis.
- Integrations — external ERP/billing credentials are stored encrypted (AES-256-GCM) and used by both the API (on-demand) and Celery workers (scheduled sync).
- Webhooks — Stripe and Zoho deliver events inbound to
/api/v1/webhooks/...(validated by signature or shared token).