CoalesceThe full-stack meta-framework for ASP.NET Core and Vue.
Build what matters. Generate the rest.
Build what matters. Generate the rest.
You build Entity Framework data models, domain services, and rich user interfaces. Coalesce generates API controllers, DTOs, TypeScript models, API clients, and more. Focus on delivering value - we'll handle the trivia.
Generated ViewModels include auto-save, bulk saves, dirty tracking, loading states, and validation — all flowing from your C# model. Ready-made Vue components give you data-driven dropdowns, date pickers, and more, ready to use in your UIs.
Apply role-based, row-level, and property-level security with simple declarative attributes or completely custom code — whichever fits the scenario. Security trimming is enforced automatically on every API response.
Write models with Entity Framework. Use attributes to configure behavior, security, and validation. Write service classes for anything that doesn't fit into simple CRUD.
[Create(Roles = "HR")]
[Edit(Roles = "HR,Admin")]
[Delete(DenyAll)]
public class Employee
{
public int EmployeeId { get; set; }
[Search]
public required string Name { get; set; }
[Search, EmailAddress]
public string Email { get; set; }
public DateOnly HireDate { get; init; }
}A single dotnet coalesce command generates everything between your domain models and your UI.
dotnet coalesceUse the generated APIs and TypeScript with the provided Vue components to build custom pages with rich features and full type-safety. Or, start using the full-featured admin pages right away to view and edit data.
<template>
<c-loader-status :loaders="[employee.$load, employee.$save]">
<c-input :model="employee" for="name" />
<c-input :model="employee" for="email" />
<c-input :model="employee" for="hireDate" />
<v-btn @click="employee.$save()">Save</v-btn>
</c-loader-status>
</template>
<script setup lang="ts">
import { EmployeeViewModel } from "@/viewmodels.g";
const employee = new EmployeeViewModel();
employee.$load(1);
</script>From a single C# class, Coalesce generates a complete vertical application slice:
[Edit(Roles = "HR,Admin")]
[Delete(DenyAll)]
public class Employee
{
public int EmployeeId { get; set; }
[Search, Required]
public string Name { get; set; }
[Search, EmailAddress]
public string Email { get; set; }
public DateOnly HireDate { get; init; }
[Coalesce]
public async Task SendWelcomeEmail(
[Inject] IEmailService emailService)
{
await emailService.Send(Email, "Welcome!");
}
}Unlike low-code platforms, you're never boxed or locked in. Unlike one-time scaffolding, Coalesce regenerates as your models evolve.
| Coalesce | Low-Code Platforms Power Apps, OutSystems | API Client Generators NSwag, OpenAPI codegen | Build from Scratch Controllers, AutoMapper | |
|---|---|---|---|---|
| Time to working CRUD | ✅ Minutes | ✅ Minutes | ❌ Backend not included | ❌ Days to weeks |
| Adaptability to change | ✅ Re-run codegen | ⚠️ Varies by vendor | ✅ Re-run client gen | ❌ Manual updates everywhere |
| Admin UI included | ✅ Full-featured | ✅ Included | ❌ Not included | ❌ Not included |
| Code Generation | ✅ Server & Client | ❌ No source code | ⚠️ Client only | ❌ Neither |
| Fully customizable | ✅ Override anything | ⚠️ Limited | ✅ Full control | ✅ Full control |
| Security model built-in | ✅ Row & property level | ⚠️ Vendor-specific | ❌ Not included | ❌ Build from scratch |
| Deployment | ✅ Any host | ❌ Vendor lock-in | ✅ Any host | ✅ Any host |
Any application where CRUD is the foundation and you'd rather spend time on business logic and user experience than wiring up APIs and forms is a perfect fit for Coalesce.
Set up a new project in under five minutes. The getting started guide walks you through creating your first model, running codegen, and seeing the admin UI — no configuration required.