Tech stack

Exact versions. Every tier.

If your agent (or your evaluator) needs to know what's actually in CleenUI — what framework, what version, what language, what runtime — this page is the single reference sheet. Machine-readable companion at /.well-known/tech-stack.json.

GET /.well-known/tech-stack.json →

React 18 + Vite + React Router

Frontend

Framework
Reactv18.3.xFunctional components, hooks, no class components.
Build tool
Vitev4.xPinned to v4 for Node 16 compatibility. Licensed Codebase ships Vite 5.
Routing
React Routerv6.xLazy-loaded route components with hover-prefetch.
Language
JavaScript / JSXTypeScript-ready; CleenUI components export their own .d.ts.
Styling
Design tokens + plain CSSCSS custom properties with dark-mode swap via data-theme attribute.
Component library
CleenUI61 components in 12 categories. Storybook-documented.
Rendering
SPA (client-side)No SSR — purely a brochure/product site SPA. Prerendered to static HTML at build time.

ASP.NET Core 8 Web API

API

Framework
ASP.NET Corev8.0.xLong-Term Support release.
Runtime
.NET 8v8.0.xCross-platform server runtime.
Language
C#v12Primary server-side language.
Endpoints
524 documented endpoints25 functional groupings — auth, accounts, support, observability, translations, notifications, messaging, tasks, AI ops, fonts, legal, taxonomy, assessments, marketplace.
OpenAPI
Swagger / OpenAPI 3.0Try the spec at /postman.
Identity
Auth0 + JWTOIDC, social login, MFA out of the box.

Azure SQL Database / SQL Server

Database

Database engine
Azure SQL DatabaseManaged Microsoft SQL Server in Azure. Compatible with SQL Server 2022 for on-prem deployments.
Data access
Dapper + ADO.NETStored-procedure-first. No EF Core. T-SQL migrations checked into the repo.
Object mapping
DapperPOCO mapping over ADO.NET DataReader for all reads and writes.
Tables
300+ tablesFull schema breakdown at /database.
Stored procedures
700+ stored proceduresCovers complex queries, batch operations, and computed projections.
Entity patterns
40+ generic entity typesDynamic translations, soft-delete, versioning, audit history, row-level access control.

Azure WebJobs + Azure Functions

Background services

Framework
Azure WebJobs + Azure FunctionsHybrid model — WebJobs for always-on workers, Functions for event-driven and HTTP-triggered tasks.
Runtime
.NET 8v8.0.xSame runtime as the Web API.
Project count
12-project Visual Studio solutionOne project per workload — translation queue, media safety, video encoding, thumbnails, LLM abstraction, and shared libraries.
Queue mechanism
Azure Storage Queues + Service BusService Bus for high-priority + ordered delivery; Storage Queues for bulk best-effort.

Two-layer (in-memory + Redis)

Caching

Layer 1 (in-memory)
Microsoft.Extensions.Caching.MemoryPer-process cache. Sub-millisecond reads.
Layer 2 (distributed)
RedisCross-process cache shared across API instances and WebJobs.
Tenant isolation
Per-tenant cache keysCache key prefix includes accountId so cross-tenant leaks are impossible.
Invalidation
Automatic on stored-procedure writesCache invalidation is wired into the data-access layer wrappers around every write proc.

LLM abstraction + MCP agent integration

AI integration

LLM abstraction
M09 — AI ops moduleSingle interface over OpenAI, Anthropic, and Azure OpenAI. Swappable provider per environment.
Agent protocol
MCP (Model Context Protocol)CleenUI ships an MCP server with three skills — Setup, Builder, Theme.
Supported agents
Claude Code, Cursor, Windsurf, GitHub CopilotPer-agent install instructions at /for-agents.

Microsoft Azure (default) + portable

Infrastructure

Default hosting
Microsoft AzureApp Service / Container Apps for the API; Azure SQL Database for the DB; Azure Functions/WebJobs for background services.
CI/CD
Deploy-by-branch conventionsmain → production, staging → staging, feature/* → ephemeral preview.
Monitoring
Application Insights (configurable)OpenTelemetry-compatible; you can swap in Datadog, New Relic, or any OTLP-compatible collector.
Portability
Cross-cloudThe codebase has been deployed to AWS (EKS + RDS) and on-prem SQL Server in past engagements — Azure is the default, not a lock-in.