Who this is for
Teams building industry software for a specific trade
Agencies serving many small businesses from one platform
Product teams whose value is the domain, not the plumbing beneath it
What we solve for you
Every product needs the same foundation: accounts, sign-in, permissions, multi-tenancy, sync, sharing, billing, data export, deletion and an admin console. You have built it before. You will build it again for the next product, unless something else owns it. That is where we come in: UniCore provides the foundation, and you build your product on top of it.
What you get
One assembly, one hard boundary
A plugin is a single .NET assembly that references only the SDK. A compiler analyzer fails the build if it reaches into the platform internals, so your plugin stays separable and upgradable by construction.
An admin console you don't write
Declare settings, collection, insight and action panels in your manifest and the dashboard renders them, including forms, grids and foreign-key pickers. There is no frontend code in a plugin.
Your data model, managed for you
Declare a domain and the platform provisions it, namespaced by your plugin so two products can never collide. Schema changes go through a forward-only migrator you control.
A published API with up-to-date docs
Turn on the domain API and the platform serves OpenAPI, a browsable Swagger UI and typed CRUD straight from your loaded plugin, including an optional anonymous read surface for public pages.
Billing, metering and erasure as facades
Declare products, charge once, create subscriptions, record usage against a meter. React to the platform's erasure events instead of implementing account deletion yourself.
Deploy without a restart
Upload the assembly and it loads in place across every host that needs it, isolated and single-versioned. No rolling restart, no planned downtime required.
How it works
Start with the SDK
Reference the SDK package and declare a manifest: identity, version, the hosts you need, your permissions and your release notes.
Declare your domain
Describe your definitions and their fields. The platform provisions them on install and hands you a migrator for everything after that.
Write your endpoints
Define routes and attach a permission to each. Mark the ones that should be publicly reachable and the gateway publishes them anonymously.
Declare the admin surface
Write your panels as data in the manifest. This step usually costs multiple frontend sprints. Here it costs a single line of code.
Verify in CI
The SDK checks your manifest, plugin includes and the assembly boundary before anything is uploaded.
Install and adopt
The assembly is loaded only once. Each tenant then adopts the plugin independently, and the plugin can create initial data for them.
What ships with UniCore and what you write
Everything on the left already exists, is tested and is maintained by us. Everything on the right is yours to write.
Ships with UniCore
Multi-tenant accounts and tenant isolation
Email and password sign-in
Google, Microsoft and Apple sign-in
Sessions and session renewal
Roles, named permissions and row-level access
Sharing and group membership
A schema-managed data store with migrations
Background jobs
Messaging between hosts
Realtime push to connected clients
Email, Telegram and Discord notifications
Approve and reject buttons inside those messages
Products, subscriptions and entitlement gates
Usage metering
GDPR erasure and data export
Audit logging
An admin console rendered from your manifest
OpenAPI and Swagger for your own API
Release notes for your own versions
You write
Your domain model
Your business rules
Your user interface
Before you ask
What is not in the SDK yet?
There is no file or blob facade, so attachments are metadata today. There is no document-rendering contract, so PDF generation is up to you. The job interface has no schedule section, so recurring work runs on events, messages or on demand. And the query filter grammar is string-typed, with no boolean equality, so boolean predicates are evaluated after the query.
Can I ship a plugin without your source code?
Yes. The SDK is a package, and the analyzer enforces the boundary at build time rather than by convention. A third party can build and ship a plugin without ever seeing the platform source.
How does one plugin serve many customers?
Each tenant adopts the plugin independently, and every data call is tenant-scoped by the host's execution context. You do not write tenant filters, and you cannot forget one.
What happens when I upgrade?
Upgrades are deliberate. A newer binary on boot only marks an update as pending; the upgrade itself runs as a job you trigger. Uninstall is a soft delete and keeps the data. A full data purge is a separate, irreversible step that requires a manual trigger.
Where does it run?
On your infrastructure. UniCore is self-hosted: one compose file, PostgreSQL or SQL Server. Offline and air-gapped installs are supported. There is no managed hosting option today.
See it applied to your own case
Thirty minutes, screen-shared, with your API or your product idea on the table. No slide deck.