A minimal blog engine using Razor Web Pages
C# JavaScript CSS ASP
Latest commit 66eca8f Jun 29, 2016 @madskristensen committed on GitHub Merge pull request #231 from Taritsyn/master
Update WebMarkupMin to version 2.0.0

README.md

MiniBlog

A blogging engine based on HTML5 and ASP.NET.

Build status

Deploy to Azure

Live demo: http://miniblog.azurewebsites.net/
Username: demo
Password: demo

Simple, flexible and powerful

A minimal, yet full featured blog engine using ASP.NET Razor Web Pages. Perfect for the blogger who wants to selfhost a blog.

Features

  • Best-in-class performance
    • Gets a perfect score of 100/100 on Google Page Speed
    • Uses CDN for Bootstrap and jQuery in release mode (debug="false")
    • Easy setting for serving static files from another domain.
  • Windows Live Writer (WLW) support
    • Optimized for WLW
    • Assumes WLW is the main way to write posts
    • You don't have to use WLW (but you should)
  • RSS and ATOM feeds
  • Schedule posts to be published on a future date
  • Get feedback on an unpublished post by sending a preview link
  • SEO optimized
    • Uses HTML 5 microdata to add semantic meaning
    • Support for robots.txt and sitemap.xml
  • Theming support
    • Based on Bootstrap themes. Makes it easy to customize your blog
    • Comes with a one-column, two-column, and off-canvas theme
  • No database required
    • Uses the same XML format as BlogEngine.NET
    • Move your existing blog to MiniBlog using MiniBlog Formatter
  • Inline editing of blog posts
  • Comments support
    • Gravatar support
    • Can easily be replaced by 3rd-party commenting system
  • Drag 'n drop images to upload
    • Automatically optimizes uploaded images
  • Uses latest technologies
    • OpenGraph enabled
    • Based on jQuery and Bootstrap
  • Best-in-class accessibility
  • Mobile friendly
  • Works on any host including Windows Azure Websites

Why another blog engine?

7 years have passed since I started the BlogEngine.NET project. It was using cutting edge technology for its time and quickly became the most popular blogging platform using ASP.NET.

The MiniBlog was born as a test to see what a modern blog engine could look like today with the latest ASP.NET and HTML 5 technologies. Just like with BlogEngine.NET, the goal was to see how small and simple such a blog engine could be.

This is the result.

Connecting with Windows Live Writer (WLW)

To connect to MiniBlog with Windows Live Writer (as of WLW build 16.4.3528.331):

  • Launch Windows Live Writer

  • If you have not used Windows Live Writer to connect to a blog you will get a dialog window asking you to specify what blog service you use. If you have already connected Windows Live Writer to a blog, you can go to Blogs -> Add blog account... and get to the same dialog window.

  • In the What blog service do you use? dialog window you will tick the Other services radio option and click next.

  • The Add a blog account dialog window will ask you for the web address of your blog, the username and password. The web address is the root address of your site. For example, use http://miniblog.azurewebsites.net/ for the live demo site.

  • The Download Blog Theme dialog window will let you know Windows Live Writer can download your blog theme if you allow it to publish a temporary post. Selecting yes will allow you to view how your posts will look directly from the Windows Live Writer editor.

  • The Select blog type dialog window will let you know Windows Live Writer was not able to detect your blog type. It will ask you for the type of blog and the remote posting URL.
    Type of blog that you are using: Metaweblog API
    Remote posting URL for your blog: http://<root-address>/metaweblog
    Click next.

  • The Your blog has been set up dialog window will let you give your blog a nickname for the Windows Live Writer instance. Change that if you want and click finish to get to posting!

Windows Live Writer can be downloaded at:
http://windows.microsoft.com/en-us/windows-live/essentials

Configuring MiniBlog as Virtual Application

MiniBlog is very compact and can be configured as a Virtual Application so you'd be able to use it alongside your existing websites. For example if you've got a running ASP.NET website at http://yourexamplesite.com/ and you want to setup a blog under /blog/ path, you could setup http://yourexamplesite.com/blog/ with a few simple tweaks in web.config settings:

  • Set blog:path element of appSettings to the virtual path that you've configured for MiniBlog. Example with path blog
<add key="blog:path" value="blog"/>
  • Update the path attribute of all the <handlers> in web.config. Example with path blog
<handlers>
    <remove name="CommentHandler"/>
    <add name="CommentHandler" verb="*" type="CommentHandler" path="/blog/comment.ashx"/>
    <remove name="PostHandler"/>
    <add name="PostHandler" verb="POST" type="PostHandler" path="/blog/post.ashx"/>
    <remove name="MetaWebLogHandler"/>
    <add name="MetaWebLogHandler" verb="POST,GET" type="MetaWeblogHandler" path="/blog/metaweblog"/>
    <remove name="FeedHandler"/>
    <add name="FeedHandler" verb="GET" type="FeedHandler" path="/blog/feed/*"/>
    <remove name="CssHandler"/>
    <add name="CssHandler" verb="GET" type="MinifyHandler" path="/blog*.css"/>
    <remove name="JsHandler"/>
    <add name="JsHandler" verb="GET" type="MinifyHandler" path="/blog*.js"/>
</handlers>

<httpErrors>
    <remove statusCode="404"/>
    <error statusCode="404" responseMode="ExecuteURL" path="/blog/404.cshtml"/>
</httpErrors>

After changing the config all that is left is configuring a Virtual Application with the same path(ex. blog) inside your IIS website.