Skip to main content

Introduction to Platform-Kernel

Platform-Kernel is a production-grade, industry-agnostic modular SaaS core built for independent software developers who need a complete infrastructure layer without building one from scratch. It provides every service your module needs — from authentication and data persistence through financial ledgers and real-time notifications — through a unified, type-safe SDK.

What this documentation covers

This portal is for independent module developers integrating with Platform-Kernel. If you are operating the kernel itself (infrastructure, self-hosting, DevOps), start with Self-Hosting → Requirements.


The Business Model: B2B2B White-Label

Platform-Kernel is a white-label SaaS core operating across three tenant tiers in a strict hierarchy:

TierRoleWhat they do
Platform OwnerOperates the kernelManages infrastructure, billing plans, system-wide settings
PartnerWhite-label resellerProvisions client tenants, customises branding, manages access
ClientEnd-user organisationInstalls modules, manages their own users and data

Each tier is fully isolated. The kernel enforces Row-Level Security (RLS) in PostgreSQL and a closure-table ancestry structure for O(1) hierarchy lookups — a tenant_id propagates through every API call, every database row, and every Kafka message.


The Core Philosophy: "Everything Is a Primitive"

Platform-Kernel is not a collection of micro-features. It is built around seven primitives — atomic, composable building blocks that collectively cover 100 % of the infrastructure concerns a module developer will ever need. Every module solves its domain problem by combining exactly these seven primitives.

#PrimitiveSDK PackageBackend ServiceResponsibility
1Auth@platform/sdk-authIAM ServiceAuthentication (JWT ES256, Argon2id), RBAC, MFA (TOTP), OAuth providers, multi-tenant delegation
2Data@platform/sdk-dataData LayerCRUD (PostgreSQL + RLS), analytics (ClickHouse), cache (Valkey), CDC pipeline, auto-generated REST endpoints
3Events@platform/sdk-eventsEvent BusDomain events (Kafka), transactional messaging (RabbitMQ), browser CustomEvents bridge
4Notify@platform/sdk-notifyNotification ServiceWebSocket push, browser push, pluggable channels (Email, SMS, Telegram, Discord, Slack, WhatsApp, Webhook)
5Files@platform/sdk-filesFile StorageS3-compatible upload/download, presigned URLs, antivirus staging, server-side image processing (libvips)
6Money@platform/sdk-moneyMoney ServiceACID wallets, integer-only ledger (no float), hold/confirm/cancel, reversals, double-entry bookkeeping
7Audit@platform/sdk-auditAudit Log ServiceImmutable append-only audit trail (ClickHouse), dual-write resilience (Kafka + PostgreSQL WAL), 7-year retention
The boundary rule

Platform-Kernel contains zero business logic. It does not know what your module does. Authentication, data storage, money movement, and notifications are infrastructure concerns — your module's domain logic is always yours.


System Architecture

The kernel is a polyglot monorepo: Go services (backend), TypeScript packages (SDK and UI), and Module Federation 2.0 for runtime module loading.

Protocol Translation

Clients (browser, SDK, external systems) communicate with the kernel exclusively via REST/HTTP through the API Gateway. Internally, the gateway translates every request into a gRPC call to the appropriate Go service. This means:

  • Your module's SDK calls hit https://api.septemcore.com/api/v1/...
  • The Gateway validates the JWT, checks rate limits, validates against OpenAPI schemas, then forwards as gRPC
  • Go services only expose gRPC — there is no direct REST route to any backend service

Tech Stack at a Glance

LayerTechnology
Backend servicesGo 1.26.1
Frontend shellVite 8 · React 19 · TypeScript strict
Module loadingModule Federation 2.0 (@module-federation/vite)
SDKTypeScript, 12 npm packages + 10 frontend packages
Primary databasePostgreSQL 17 (OLTP, with RLS)
Analytics databaseClickHouse (OLAP, ReplacingMergeTree)
CacheValkey (Redis-compatible)
Message streamingApache Kafka (domain events, 8 topics)
Task queuesRabbitMQ (transactional, retry, DLQ)
File storageS3-compatible (SeaweedFS or AWS S3)
SecretsHashiCorp Vault (JWT signing keys, TLS certs)
API contractsOpenAPI 3.1.0 (9 specs) · gRPC / Protobuf (7 packages)
SecurityJWT ES256 · Argon2id · mTLS · AES-256-GCM · TLS 1.3
Documentation engineDocusaurus 3.10.0

Who This Documentation Is For

ReaderWhat to start with
Module developer (frontend-first)QuickstartSDK Overview
Module developer (full-stack)QuickstartProject StructureModule Manifest
Architect / technical evaluatorArchitecture OverviewConcepts → Multi-Tenancy
DevOps / infrastructureSelf-Hosting → Requirements

What Platform-Kernel Is Not

Understanding boundaries is as important as understanding capabilities:

Not includedHow to solve it
Business logic for any specific domainBuild your own module using the seven primitives
Pre-built UI beyond the admin shellCompose from @platform/sdk-ui Design System components
Industry-specific integrationsRegister your external integration via Integration Hub
A monolithic application frameworkPlatform-Kernel is pure infrastructure — your module architecture is your own

Next Steps

GuideWhat you will learn
QuickstartScaffold your first module and register it with the kernel in five steps
Project StructureAnatomy of a module — every directory and file explained
Module ManifestFull module.manifest.json specification with all fields
Concepts → PrimitivesHow the seven primitives compose into module features