Your extension will be available shortly on the Visual Studio Marketplace at this link.



Serenity is an ASP.NET MVC / TypeScript application platform designed to simplify and shorten development of data-centric business applications with a service based architecture. Serene is a starter template to build Serenity applications.

5 Star
Visual Studio
2017, 2015, 2013, 2012
Download (392,729)
E-mail Twitter Digg Facebook
Add to favorites
Sign in to write a review
Sort by:

5 Star
by Vinay B Kulkarni | November 04 2016

Just awesome,
Documentation is well written with examples...

5 Star
by wirble | November 03 2016

I have been using and testing this for about three weeks. So far I have been very impressed with this template and what Volkan had done. I am able to create a fairly complex form or atypical required form in a large departmental settings with relative ease. Out of the box, it creates very functional form data entries. I am able to configure it with decorators,hide and un-hide fields easily. I can probably meet 90 percent of all form data entry requirements with this tool. It can also generate excel and pdfs from html. The template is very structured and intuitive to learn. It's quite impressive.

The other 10 percent is where you need to modify it if you want to add things like workflows, ajax and web services lookup with autocomplete, generating pdf from server side with emails.

If your company needs lots of online forms, this is the tool to use.

5 Star
by 小拖 | October 05 2016

What‘s the password of admin?

Volkan Ceylan October 05 2016
| Edit |

it's "serenity" by default, please use Q&A for questions.

5 Star
by jlin423 | September 26 2016

Great framework, made development of our app faster

Volkan Ceylan September 28 2016
| Edit |

Thanks, but why changed previous review? I even used that one in :)

5 Star
by P1xelF1end | September 08 2016

Great work! Such a time saver!

5 Star
by IzzetYildirim | September 06 2016

5 Star
by mijaved | August 28 2016

Its a complete solution for rapid development of CRUD application.
and gets itself updated with new technologies.

5 Star
by WalTor | August 26 2016

Good job dude! I´m using your template for several projects, this template is a lifesaver.


5 Star
by blojayble | August 24 2016

Amazing template, amazing author!
Thank you, I hope to contribute to the project in the future.

5 Star
by fazardx | August 23 2016

fuck you, you have awesome template.. great job, salute for you..

5 Star
by RazorPx | August 01 2016


5 Star
by BravoSierra | July 25 2016

Excellent, it might be a replacement for Lightswitch projects. The tutorial is very well done, thanks.

5 Star
by MxChandler | July 23 2016

This is by far the best template for developing simple to complex web applications that look just as good on mobile as the desktop. I am totally impressed with the documentation, ease-of-use, and selection of underlying tech. This guy is "bad-ass" and I owe him for saving me from a lot of work under tight deadlines.

Some things are so good you don't want everyone to know about them ;)

I enjoy his commentary on Q And A as well. I would enjoy meeting the author someday!

5 Star
by M Lutzow | July 16 2016

+ Top notch application template.
+ Excellent documentation and tutorials that are frequently updated.
+ Frequent updates and enhancements to the product which work well with user written application.
+ Excellent support provided.

This template is superb, I've been using proprietary languages to code for the last number of years and am moving into newer technologies for development purposes. After reviewing multiple options to start with (both commercial and open source) I decided to use the SERENE Template. I consider this the best decision I could have made.

Having zero experience with C#, ASP.NET MVC 5, TypeScript and a number of the other tools used with this platform the well maintained documentation, provided tutorials, samples, and assistance from Mr. Volkan Ceylan and the user base of this product has lowered my learning curve and has broken some of those walls we all run into when using a new toolset.

Excellent product, outstanding support and documentation. Thank you for a superb product to use.

5 Star
by frankolo85 | July 15 2016

5 Star
by Clyde Kent | July 13 2016

Absolutely top notch!

5 Star
by Nobatgeldi | July 08 2016

5 Star
by zakaj | June 21 2016

This project sample is great, but i'm pretty sure a virus got attached to this project file somehow. They need to look into it because I've restored my computer 3 times and every time I download this file my sql server authorization services stop working, and also Norton antivirus keeps catching stuff after I download this file.

Volkan Ceylan June 22 2016
| Edit |

And I'm pretty sure its a false alarm.

5 Star
by mh5775 | June 19 2016

best asp application template
saving lot of time and effort to start a new web application
thank you

5 Star
by HoangITK | June 17 2016

1 - 20 of 71 Items   
Sign in to start a discussion

  • RTL
    2 Posts | Last post September 22, 2016
    • hi volkan,
       i tried to copy the rtl css files to my project and wanna know the css or less file that is responsible for the right to left styling for the grid as you see in the picture all the app transformed from the ltr to rtl but the grid still ltr or if i can do it with another approach thanx 
      photo Link: 
    • you need to update Serenity or it won't work. also see change in layouthead.cshtml.
  • Reload Lookups at login?
    2 Posts | Last post September 22, 2016
    • How can I reload all lookups with a method when the user is logging in Serenity?
    • Set Expiration to negative value if you don't want caching
  • Hardcode for list
    3 Posts | Last post September 20, 2016
    • Hai,  i want to setup a hardcode for list. I have refer the movie sample "Adding a Movie Kind Field" but this sample using Enum. I just want a simple hardcode for dropdown list.. So, where should i setup the list? TQVM
    • tqvm :)
  • Problem with new ServiceEndpoint
    3 Posts | Last post September 16, 2016
    • Hi, trying to create my own service endpoint and am having a problem with the Retrieve call.  For some reason my endpoint does fine with the "List" command to fill my grid but whenever I press on a link to launch my dialog the "Retrieve" function never gets called.  I read the section in the documentation and all seems ok with my names.  Any tips on how to ensure my Retrieve gets routed properly?
      Here is my class:
      [RoutePrefix("Services/Malibu/Profile"), Route("{action}")]
      [ConnectionKey("Northwind"), ServiceAuthorize(Web.Northwind.PermissionKeys.General)]
      public class ProfileController : MalibuServiceEndpoint
      //never gets called
      public RetrieveResponse<MyRow> Retrieve(RetrieveRequest request) {...}
      //works fine
      public ListResponse<MyRow> List(ListRequest request) {...}
    • Are you sure you set the service properly in your Dialog.ts
    • Not sure what was wrong but i started over and got it working.  A couple of things i did different:
      1.  Made sure my namespace entities started with Web.  So for example my row was Malibu.Entities.ProfileRow became Web.Malibu.Entities.ProfileRow
      2.  Big thing i noticed was when hovering over the link in the grid my link was before: 
      and after became:
      I'm sure the second one was the fix but not sure exactly how I did it.
  • Creating multiple Rowfields using an array
    2 Posts | Last post September 16, 2016
    • I am creating an internal time tracking tool, and will have a table that will be displayed differently then the underlying SQL data.  The table displayed on the site will have tasks in the first column, and then calendar dates for the columns.  However, the underlying SQL data is stored as records with the fields: Person,Task,Date,Time. As such, I intend to do manipulation of the data using the Repository class, and overriding the MyXXXHandler functions.  Test code of this is working.
      However, the table I will display will have many columns.  Is there any way to configure the XXXRow class (derived from Row) so that the Rowfields can be structured using an array?  For example, I would like to be able to have 30 Rowfields (which end up being 30 columns when displayed), but would like to be able to specify them using an array rather than individual fields.  For example, in the public class Rowfields : RowfieldsBase, I would like to define a fields as "public Int32Field[] TimeData = new Int32Field[31]".  However, if I do this, I am unsure how to configure the Accessors or Attributes like [DisplayName("XXX")] for each Rowfield.  Is there someway to configure Rowfields using an array, or do I have to declare each rowfield individually? Thanks.
    • You may define a single field with List<int> value using ListField. Or if it has to be fields, create them in constructor.
  • Overriding List function in ServiceEndpoint
    2 Posts | Last post September 16, 2016
    • I am attempting to override some of the values returned in the List function of the ServiceEndpoint by adding some code in the Repository class (ie. changing values that are retrieved from the database).  I view the "ListResponse<MyRow>" object returned by the call "new MyRepository().List(connection, request);" in the function "public ListResponse<MyRow> List(IDbConnection connection, ListRequest request)" in the debugger, and the values that I want to change are shown correctly in the Watch window under List.Entities[0].XX (where XX is the names of my variables).  However, when I continue execution of the program, the data that shows up in the table on the web page is the original data retrieved from the database, not the changed values.  Unfortunately, I am not able to figure out where/how it is getting the original database entries, as that is not what is being returned from "public ListResponse<MyRow> List(IDbConnection connection, ListRequest request)" in the Endpoints Class.  Can you explain where the values in the table on the web page are coming from?  I initially got the idea from StoredProcedureGrid example, but I cannot figure out what is going wrong with my code.  Your assistance is greatly appreciated.  Thanks. (Amazing template!)
    • Please ignore this question.  The template is working as expected.  I was incorrectly assigning the values in the Repository.  I'd delete the question if I could.
  • New Masking Feature
    2 Posts | Last post September 15, 2016
    • How do you use this new field masking feature?
    • It's not a new feature, it is a script required by MaskEditor but wasn't included in Serene.
  • Master Detail
    2 Posts | Last post September 14, 2016
    • Hi I'm new to the framework but do anyone have a basic example of master detail.  I tried looking at the examples but on my detail tab I'm having trouble getting the FQ to fill in I have a couple of ideas on how to do this but not sure if its the RIGHT way.  Basicall I have two tables
      1.  Customers(master)
      2.  Addresses(Details)
      joined on  CustomerId
      in the editor I have two tabs one for customer details and one for address history.  I can get the address grid to show up but when I click on new address and save the customerid field is blank.  What am I missing.  
    • Please read tutorials first.
  • datetimeEditor, display day of week
    2 Posts | Last post September 14, 2016
    • hi Volkan,
      The datetimeEditor's displayformat("ddd dd") is showing number "222 01" instead of "Wed 01".
      Is "ddd dd" format supported?
    • DateTimeEditor doesnt support such formats. Also it doesnt use DisplayFormat.
  • Open dialog from string key value
    3 Posts | Last post September 13, 2016
    • Hi Volkan,
      Let's say I open a dialog.  On the dialog I have another button, let's say "next".  If I click on the button I need to open a different dialog.
      I know how to open a dialog when I know what the dialog's namespace is, but how do I open a dialog dynamically, from for example it's form key string value?
      I've looked at the GridEditorBase.ts where you create the dialog from TEntity, but how would I do that from the dialog as the createEntityDialog method does not exist as part of dialog?
    • I managed to do this using the Serenity.Widget.create method.
      How would I be able to send data to the widget which I've now dynamically created, without knowing what public members it contains?
      Will I be able to set properties for it?
    • Options parameter to that function does that. But i'm not sure what you are trying to do with such.
71 - 80 of 643 Items