PineBlog core package.

core, blog, aspnetcore, blogging-engine, entity-framework, mvc-razor-pages
Install-Package Opw.PineBlog.Core -Version 1.3.1


PineBlog PineBlog

Build Status NuGet Badge License: MIT

PineBlog is a light-weight blogging engine written in ASP.NET Core MVC Razor Pages, using Entity Framework Core. It is highly extendable, customizable and easy to integrate in an existing web application.

PineBlog screenshot


  • Markdown post editor
  • File management
  • Light-weight using Razor Pages
  • SEO optimized
  • Open Graph protocol
  • Clean Architecture (youtube: Clean Architecture with ASP.NET Core)
  • Entity Framework Core, SQL database
  • Azure Blob Storage, for file storage
  • ..only a blogging engine, nothing else..

What is not included

Because PineBlog is very light-weight it is not a complete web application, it needs to be integrated in an existing web application or you need to create a basic web application for it. There are a few things PineBlog depends on, but that it does not provide.

  • Authentication and authorization

Note: The admin pages require that authentication/authorization has been setup in your website, the admin area has a AuthorizeFilter with the default policy set to all pages in that area folder.

Where can I get it?

You can install the Opw.PineBlog metapackage from the console.

> dotnet add package Opw.PineBlog

The Opw.PineBlog metapackage includes the following packages.

  • Opw.PineBlog.EntityFrameworkCore package
    The PineBlog data provider that uses Entity Framework Core.
    NuGet Badge

  • Opw.PineBlog.RazorPages package
    The PineBlog UI using ASP.NET Core MVC Razor Pages.
    NuGet Badge

  • Opw.PineBlog.Core package
    The PineBlog core package. This package is a dependency for Opw.PineBlog.RazorPages and Opw.PineBlog.EntityFrameworkCore.
    NuGet Badge

Getting started

You add the PineBlog services and the Razor Pages UI in the Startup.cs of your application.

public void ConfigureServices(IServiceCollection services)
    // or services.AddMvcCore().AddPineBlogRazorPages();
    // or services.AddMvc().AddPineBlogRazorPages();

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    app.UseEndpoints(endpoints =>
        // make sure to add the endpoint mapping for both RazorPages and Controllers


And a few properties need to be configured before you can run your web application with PineBlog.

    "ConnectionStrings": {
        "DefaultConnection": "Server=inMemory; Database=pineblog-db;"
    "PineBlogOptions": {
        "Title": "PineBlog",
        "Description": "A blogging engine based on ASP.NET Core MVC Razor Pages and Entity Framework Core",
        "ItemsPerPage": 5,
        "CreateAndSeedDatabases": true,
        "ConnectionStringName": "DefaultConnection",
        "AzureStorageConnectionString": "UseDevelopmentStorage=true",
        "AzureStorageBlobContainerName": "pineblog",
        "FileBaseUrl": ""

Blog Settings ConfigurationProvider

To be able to update the blog settings from the admin pages, you need to add the PineBlog IConfigurationProviders to the IConfigurationBuilder in the Program.cs. Add config.AddPineBlogConfiguration(reloadOnChange: true); to ConfigureAppConfiguration(..) on the IWebHostBuilder.

    .ConfigureAppConfiguration((hostingContext, config) => {
        config.AddPineBlogConfiguration(reloadOnChange: true);


For more information, please check the documentation.

For technical background information, check the blog:


The sample project contains an example web application with PineBlog.

Please see the code :nerd_face

Demo website

The demo site is a playground to check out PineBlog. You can write and publish posts, upload files and test application before install. And no worries, it is just a sandbox and will clean itself.

Password: demo


PineBlog is used on the following website:


We accept fixes and features! Here are some resources to help you get started on how to contribute code or new content.

Copyright © 2019, Of Pine Wood. Created by Peter van den Hout. Released under the terms of the MIT license.