MiCard.io
Licensed CleenUI, configured Azure cloud infrastructure to MiCard's naming conventions, built the product-distinct work on top. Weeks from license to a working platform their developers could extend without architect supervision.
A comprehensive evaluation document for business owners and the technical advisors they trust.
CleenUI is a licensed full-stack code footprint for B2B enterprise SaaS applications. It is delivered as a single coherent codebase — React 18 frontend with 60+ accessible components, ASP.NET Core 8 Web API with 524 endpoints, Azure SQL database with 300+ tables and 700+ stored procedures, and a 12-project Azure WebJobs + Functions background-services solution — organized into 14 production-ready vertical-slice modules.
The codebase is licensed (not subscribed) to your team, deployed onto your own cloud, and modified freely. Every engagement begins with a no-cost 30-minute architecture review with the architect personally. Pricing is custom-scoped to the shape of your project rather than tiered by seats or usage.
A business owner — founder, CEO, or operator — evaluating CleenUI as part of a technological solution, typically on the recommendation of a technical advisor (CTO, fractional CTO, architect, or senior engineer). Both audiences are served: the surface reading is for the business owner; the sidebars, diagrams, and code samples speak to the technical advisor reading along.
Four parts across fifteen chapters. Part I covers the category and the problem CleenUI solves. Part II covers what ships in the codebase. Part III covers the engagement model, the customers shipping on it, the licensing terms, and the risk story. Part IV translates everything into a decision framework — when CleenUI fits, when it doesn't, what to ask in the architecture review, and what next steps look like.
Every B2B SaaS team rebuilds the same thirty things before they ship one distinctive thing. CleenUI eliminates that bottleneck.
Behind every B2B SaaS product is a long list of substrate-level concerns that have nothing to do with what makes the product distinctive: authentication, authorization, multi-tenant data isolation, audit history, translation infrastructure, the admin console, the user dashboard, the notification system, the API schema, the background-job runner, the observability layer. Each one is a multi-week project. Each one has to be built right or it becomes the source of a security incident or an outage later. Each one consumes senior engineering time that the team could otherwise spend on the product.
The common path is to build them — slowly, imperfectly, while shipping the product. Six to nine months in, the team has a half-finished substrate, a feature-thin product, and a roadmap full of "we need to fix the auth layer" tickets.
The premise of AI-assisted coding (Claude Code, Cursor, Copilot, Windsurf) is that an engineer with a capable model ships work that previously required three engineers. The premise holds — when the substrate already exists. When it doesn't, the model has to invent the substrate at the same time it's writing the feature. Auth schemes. Multi-tenant guards. Audit logs. Translation hooks. Permission checks. And the inventions don't reconcile across prompts — by month three the codebase is twelve flavors of half-finished foundation glued together.
A foundation that is: fully implemented (not a template), internally consistent (one architectural lineage), modifiable (source code you own), AI-readable (the model can pattern-match the existing code and write more in the same idiom), and battle-tested (other teams have shipped real products on it). Almost nothing on the market fits all five constraints at once. CleenUI was built to.
Twenty years of SaaS scaffolding rolled through four eras. The fourth — licensed source-code footprints — is the one AI-augmented teams need now.
| Era | Delivery shape | Tradeoff |
|---|---|---|
| 2005–2012 | Boilerplate snippets + copy-paste helpers | Free, infinitely customizable, infinitely re-invented |
| 2013–2019 | Starter templates (create-react-app, dotnet new) | Got you to "hello world"; every real concern was DIY |
| 2020–2024 | SaaS platforms (Retool, Bubble, Supabase) | Fast to first screen, vendor-owned data model, customization cap |
| 2025+ | Licensed code footprints (CleenUI) | Production substrate you own, deploy onto your cloud, modify freely |
| Alternative | What works | Where it breaks |
|---|---|---|
| Starter templates create-react-app, dotnet new | Free, familiar tooling, no vendor lock-in | No auth, no multi-tenant, no audit, no translation registry, no real components |
| SaaS platforms Retool, Bubble, Supabase | Fast to first screen, managed infra, built-in auth | Vendor owns your data model, customization cap, migration off is expensive |
| Consulting builds Custom agency engagements | Tailored to your domain, architect-led if you pay enough | 6-month minimum, $200k+ minimum, code only one team understands |
| Licensed code footprints CleenUI | Full source you own + modify, production primitives, architect-led setup, your cloud | Requires a real engineering team to operate; up-front investment |
AI-assisted coding tools made the substrate problem urgent. The market noticed. The category will be a lot more crowded by 2027. CleenUI is one of the first shipping in production at scale.
The numbers, the architectural shape, and the 14 modules — at a glance.
| React frontend components | 60+ | 12 categories — forms, DataGrid, charts, overlays, navigation, AI |
| Web API endpoints | 524 | ASP.NET Core 8 Minimal API · OpenAPI 3 documented |
| Database tables | 300+ | Modeled for real B2B scenarios — soft-delete, audit, translation |
| Stored procedures | 700+ | All data access — no Entity Framework, no ORM mystery |
| Production modules | 14 | M01–M14, each a complete vertical slice |
| Background-services projects | 12 | Azure Functions + Azure WebJobs solution |
| AI agent skills shipped | 3 | Setup, Builder, Theme — for Claude Code, Cursor, Windsurf |
CleenUI is a modular monolith, not a microservices fleet. One deployable artifact, in-process service composition, four-environment CI/CD pipeline. Every request flows top-to-bottom through five layers:
Each module is a complete vertical slice — UI screens, API endpoints, services, repositories, schema tables, background jobs. Every module ships in the codebase you license.
| Code | Module | What it covers |
|---|---|---|
| M01 | Security | Auth (Auth0), RBAC, granular permissions, role admin |
| M02 | Accounts | Tenant + member management, settings, transfer of ownership |
| M03 | Support | Ticketing, help center articles, support console |
| M04 | Infrastructure & Logging | Health, metrics, cache control, structured logs, audit |
| M05 | Translation & Languages | Multi-language registry, runtime translation, QA workflows |
| M06 | Notify Templates | Email/SMS/push template authoring, test-send, dispatch |
| M07 | Messaging | In-app chat, conversations, reactions, unread counts |
| M08 | Tasks | Task boards, projects, phases, status, assignment |
| M09 | AI Models, Prompts, Agents, Avatars | AI provider abstraction, prompt runner, agent orchestration |
| M10 | Fonts | Design-system font/asset management |
| M11 | Legal Policy Management | Agreement lifecycle, acceptance tracking |
| M12 | Categories & Topics | Taxonomy, classification, assignment, search |
| M13 | Assessments & Surveys | Builder + scoring · personality (Big-Five, DISC) · org fit · inclination instruments |
| M14 | Vendor Marketplace | Integrations, billing, payment subscriptions |
Exact versions per tier, and the deliberate decisions that shape the codebase.
| Tier | Technology | Version |
|---|---|---|
| Frontend framework | React | 18.3 |
| Build tool | Vite | 4.x |
| Backend framework | ASP.NET Core | 8 |
| Backend runtime | .NET | 8.0 |
| Data access | Dapper + ADO.NET (no EF) | — |
| Database | Azure SQL | 2022 |
| Cache | Redis (Azure Cache) | — |
| Blob storage | Azure Blob Storage | — |
| Background services | Azure WebJobs + Functions | 4.x |
| Auth | Auth0 (OAuth2 / OIDC / JWT) | — |
| Observability | Serilog + OpenTelemetry → App Insights | — |
The codebase predates EF being a serious option for high-performance .NET, and the team has deliberately stayed on Dapper + stored procedures. Query plans are predictable, DBAs can read the data layer, performance is observable. This is a feature that .NET shops modernizing off WCF / WebForms / .NET Framework will recognize as the right choice for them.
Microservices buy operational complexity in exchange for scaling problems most teams don't have. The modular monolith pattern gives the architectural clarity (clear module boundaries, in-process composition, single CI/CD pipeline) without the distributed-systems tax. Teams that genuinely need microservices later can carve modules out individually — the boundaries are already there.
CleenUI ships you source code, not a hosted service. You commit it to your git repo, deploy it onto your Azure subscription, and operate it yourself. Product Perfect doesn't host anything, doesn't run services on your behalf, doesn't have access to your data. This eliminates vendor lock-in by construction.
Performance-sensitive read paths hit a two-layer cache before reaching the database: an in-memory .NET runtime cache for hot per-process data, and a shared Redis cache for cross-process / cross-instance state. Both layers are wired and invalidation-aware out of the box.
The codebase is designed natively for Microsoft Azure (Azure SQL, Azure Functions, Azure WebJobs, Azure Cache for Redis, Azure Blob Storage). It can be fitted to AWS or other clouds with engineering effort — the abstractions are clean — but the out-of-the-box deployment story is Azure. Plan accordingly if your stack is committed elsewhere.
Every B2B SaaS application has to solve these. CleenUI ships them already wired — every endpoint inherits them, no copy-paste per route.
The codebase is built so that Claude Code, Cursor, Windsurf, and Copilot produce idiomatic code in it — not invented-from-scratch code.
AI coding tools amplify whatever foundation you give them. They are pattern-matchers — they look at the existing code in the repo and produce more code that looks like it. When the existing code is internally consistent and idiomatic, the AI's output is consistent and idiomatic too. When the existing code is twelve flavors of half-finished invention, the AI's output is the thirteenth flavor.
CleenUI was deliberately built for consistency. Every endpoint follows the same shape. Every service composes the same way. Every repository is structured the same. The AI can read one handler and write the next forty.
The site ships a small constellation of well-known endpoints so AI agents can discover and ingest CleenUI without scraping the marketing HTML:
What happens when a React UI calls POST /assessment/{id}/save — every layer the request touches before the response comes back.
For the technical reader: the same SaveAssessment route at L2 (endpoint), L3 (service), L4 (repository). Every endpoint in the codebase has this same shape.
group.MapPost("/assessment/{id:guid}/save", async (
Guid id,
[FromBody] SaveAssessmentRequest req,
IAssessmentService svc,
UserContext ctx) =>
{
var result = await svc.SaveAsync(id, req, ctx);
return result.IsSuccess
? Results.Ok(result.Value)
: Results.UnprocessableEntity(result.Errors);
})
.RequireAuthorization("Assessment.Write")
.WithName("SaveAssessment");public async Task<Result<AssessmentDto>> SaveAsync(
Guid id, SaveAssessmentRequest req, UserContext ctx)
{
await _tenantGuard.Check(id, ctx.TenantId);
await _audit.Log("Assessment.Save", id, ctx);
var entity = await _repo.SaveAsync(id, req.MapToEntity(ctx));
return Result.Ok(entity.MapToDto());
}public async Task<Assessment> SaveAsync(Guid id, Assessment entity)
{
using var conn = _db.Open();
return await conn.QuerySingleAsync<Assessment>(
"sp_Assessment_Save",
new { Id = id, entity.TenantId, entity.Title,
entity.Questions, entity.Version },
commandType: CommandType.StoredProcedure);
}One architect, one codebase, one no-cost 30-minute review to decide if it fits.
Shawn Livermore. 27 years in technology. Senior Enterprise / Solutions Architect. Amazon top-10 bestselling author in three business non-fiction categories. Raised six rounds of seed funding across his own startups. Real person, real LinkedIn, real published books. Operates Product Perfect LLC, the company behind CleenUI.
The architectural lineage of CleenUI is informed by decades of in-the-trenches modernization work at enterprise scale. A representative sample:
Every CleenUI engagement begins with a 30-minute architecture review with Shawn personally — not a sales engineer, not an AE. You bring your stack diagram and your top three modernization headaches. You leave with either a scoped engagement plan or a clear answer that CleenUI isn't the right fit for you.
The legitimate concern: "what happens to us if Shawn gets hit by a bus?" The answer has four parts:
Three live customer engagements as of mid-2026. Different domains, similar shape of outcome.
Licensed CleenUI, configured Azure cloud infrastructure to MiCard's naming conventions, built the product-distinct work on top. Weeks from license to a working platform their developers could extend without architect supervision.
Licensed CleenUI to skip the multi-tenant plumbing, i18n registry, moderation tooling, and a dozen other primitives. Engineering time went entirely into the syntax engine and discovery surface — the parts that make is.fun is.fun.
Started building October 2025, in production within a few months. Modular monolith on CleenUI gave them the substrate to build FNDRS-specific workflows on top of without inventing the foundation. One of the most workflow-heavy platforms on this list — shipped fast because the substrate was already there.
License-based, not subscription-based. Custom-scoped per engagement. No per-seat, no usage caps.
You receive the full source code. Your team commits it to your own git repo, runs it on your own infrastructure, modifies whatever you want, and ships products built on top of it. No vendor kill switch. No "we're sunsetting this." If Product Perfect stops operating tomorrow, your codebase keeps working — you just lose access to ongoing architectural advice.
The initial code drop is six concrete deliverables, set up and verified before the architect hands off:
Updates follow a formalized product roadmap. React components ship via Storybook and a versioned npm package; C# and database updates ship as scripts or zipped solution files. Your team chooses when to adopt each update — there's no forced upgrade. The license covers updates indefinitely.
So there are no surprises:
Vendor, technical, and business risks — and the mitigation for each.
| Category | Risk | Mitigation |
|---|---|---|
| Vendor risk | Vendor goes out of business | You own the source. Codebase keeps working. |
| Vendor risk | License revoked | License terms are perpetual usage. No revocation clause. |
| Vendor risk | Pricing changes mid-engagement | Engagement is scoped + priced once. No re-negotiation triggers. |
| Vendor risk | Vendor-locked deployment | Deploys onto your Azure subscription. Vendor has no access. |
| Vendor risk | Bus factor | Code escrow available; codebase is idiomatic + documented for handoff. |
| Technical | Code quality unknown | Three production deployments verify it works at scale. Customer references available. |
| Technical | Upgrade path unknown | Architect provides upgrade guidance as part of ongoing engagement. |
| Technical | Team adoption | Architect-led ramp; AI agent skills accelerate onboarding. |
| Business | Won't fit your domain | 30-min review up-front. Architect declines engagements that won't fit. |
| Business | ROI uncertain | 6–9 months of foundation work is the conservative estimate, comparable to 2–4 senior FTE-equivalents. |
| Business | Exit diligence concerns | Codebase architected by a published author with documented ADRs reads well in acquirer diligence. |
The build-vs-license math, the quantified outcomes, and the exit/diligence story.
The codebase represents roughly 24 developer-years of focused work: an average of 7.5 developers across 39 months of active development, producing 300,000+ lines of source code, 524 endpoints, 14 modules, 700+ stored procedures, and 60+ accessible React components. That number is the floor — not the ceiling — of what your team avoids when you license rather than rebuild.
| Developer-years of work captured | ~24 | 7.5 developers × 39 months of active development |
| Total months of focused build | 39 | 3+ years of sustained engineering investment |
| Lines of source code | 300k+ | Across React, C#, T-SQL, infrastructure |
| Average team size during build | 7.5 | Senior + mid blend |
A back-of-envelope calculation a CFO can run, two ways:
| Months saved on foundation work | 6–9 | Auth, multi-tenant, audit, i18n, observability — already wired |
| Modules avoided rebuilding | 14 | Each one a complete vertical slice |
| Endpoints already designed | 524 | OpenAPI-documented, multi-tenant scoped, audit-logged |
| Cost as % of build-equivalent | <1% | vs the ~5,200 engineering hours the surface represents |
When an acquirer's technical diligence team looks under the hood, they want to see an identifiable architectural lineage (not "we figured it out as we went"), documented decision records, a real audit trail, a stable data layer, and code an outside team can read. A CleenUI-based codebase clears these bars by construction. The delta between "codebase architected by published expert" and "codebase invented during 14-hour days by the founding team" shows up in diligence valuations.
Honest fit criteria, written to disqualify as much as qualify.
Ten for the architecture review with Shawn. Seven for your technical advisor to answer for themselves.
Three concrete actions that take less than 10 minutes each.
A 30-minute architecture review with the architect, no cost, no obligation. You'll know whether CleenUI fits your project by the end of the call.