SeptemCore LogoSeptemCore
Getting Started

Introduction to Platform-Kernel

Platform-Kernel is an industry-agnostic, multi-tenant B2B2B modular core designed for independent module developers. Learn the foundational concepts, the seven primitives, and the architectural philosophy.

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:

Loading diagram...
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.

Loading diagram...

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

On this page