Describe the module. Ship it this afternoon.
Serenity is the ASP.NET Core and TypeScript framework for line-of-business apps. You describe a table, its columns and its form in a few attributed classes. Serenity builds the grid, the edit dialog, the endpoint and the permission checks around them.
Serenity and the Serene template are free and open source under MIT. StartSharp adds premium modules, themes and support.
Trusted by teams at Bosch, Telstra, Xerox, Yokogawa and more
Three classes describe a whole module.
Serenity handles all the plumbing behind the scenes. This is the Orders module from the demo above. The row describes the table, and the list and the dialog read their fields from it. Each class maps to a screen your users get.
The table
Fields, joins, lookups and who may read or change them. Validation and permission checks come from these attributes.
[ConnectionKey("Northwind"), Module("Northwind"), TableName("Orders")] [DisplayName("Orders"), InstanceName("Order")] [ReadPermission(PermissionKeys.General)] public sealed class OrderRow : Row<OrderRow.RowFields>, IIdRow { [DisplayName("Order ID"), Identity, IdProperty] public int? OrderID { … } [DisplayName("Customer"), NotNull] [ForeignKey(typeof(CustomerRow)), LeftJoin("c")] [LookupEditor(typeof(CustomerRow))] public string CustomerID { … } [DisplayName("Order Date"), NotNull] public DateTime? OrderDate { … } }
The list
Which columns show, their width, links and quick filters. Everything else about each field comes from OrderRow.
Reads its fields from OrderRow
[ColumnsScript("Northwind.Order")] [BasedOnRow(typeof(OrderRow), CheckNames = true)] public class OrderColumns { [EditLink, AlignRight, Width(80)] public string OrderID { get; set; } [EditLink, Width(220)] public string CustomerCompanyName { get; set; } [QuickFilter, Width(100)] public DateTime? OrderDate { get; set; } }
The dialog
Tabs, categories, editors and the master-detail grid for order lines.
Reads its fields from OrderRow
[FormScript("Northwind.Order")] [BasedOnRow(typeof(OrderRow), CheckNames = true)] public class OrderForm { [Tab("General"), Category("Order")] public string CustomerID { get; set; } public DateTime? OrderDate { get; set; } [Category("Order Details")] public List<OrderDetailRow> DetailList { get; set; } }
The screens your users will work in.
Taken from the StartSharp demo with its default Azure theme. Every module you add looks and behaves like these.
A platform that keeps up with .NET.
Serenity ships often. These are from this year's releases.
Proven since 2007.
Serenity is thoroughly tested, and StartSharp customers get professional support from the team that builds it.
What teams say after shipping.
StartSharp editions.
The premium template with extra modules, samples and themes, plus direct support from the Serenity authors. Prices are per 12 months.
Details are in the StartSharp documentation. Questions about licensing: sales@serenity.is