Need help with NETCoreBlockly?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

120 Stars 22 Forks MIT License 569 Commits 28 Opened issues


.NET Core API to Blockly - generate from WebAPI, Swagger, OData, GraphQL =>

Services available


Need anything else?

Contributors list

# 219,382
452 commits
# 83,404
33 commits
# 2,352
16 commits
# 2,818
1 commit


All Contributors <!-- ALL-CONTRIBUTORS-BADGE:END --> Build Status GitHub license NuGet Generate Thanks Outdated Licenses

What it does

NETCore2Blockly generates Blockly blocks for each of your controller actions.

Demo at ( play with the links from the bottom)

Demo Video at

Sample Project is TestBlocklyHtml from this repository

Contributors welcome! - please send email to email or see issues tab.

How to install NETCore2Blockly in a .NET Core 3.1 WebAPI / MVC application in 3 steps + run application

Step 1:

Install by running the following command in the Package Manager Console:

Install-Package NetCore2Blockly

Step 2:

Modify Startup.cs by adding

public void ConfigureServices(IServiceCollection services)
            //last line
public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
        //if you plan to use as html, do not forget app.UseStaticFiles
        //last line

Step 3:

To see the UI , please add ```csharp public void Configure(IApplicationBuilder app, IWebHostEnvironment env){

   app.UseBlocklyUI(); // you can customize (with BlocklyUIOptions argument )header name, start blocks, others... 
   //you can add  storage like local storage or sqlite 
   //app.UseBlocklySqliteStorage() ; // other nuget package

} ```

Run application

Run the application from VS and browse to /blockly.html

That's all !( 3 steps + run )

Advanced usage remote data

For Remote Swagger ( CORS activated )

app.UseBlocklySwagger("petstore", "")

You can see demo at ,colapse category local function, expand category Swagger.

See link 25 from

For ODATA ( local or remote - CORS activated if remote)

app.UseBlocklyOData("OdataV4", "");

You can see demo at ,colapse category local function, expand category OData.

For GraphQL (local or remote - CORS activated if remote)- Work In progress

app.UseBlocklyGraphQL("localGraphql", "/graphql");

You can see demo at ,colapse category local function, expand category GraphQL.

See link 32,33 from

For authentication - JSON Web Tokens

See links 22 for JWT and 31 for Auth0 from

Also, it works with Active Directory enabled - see Authentication category.

For adding headers to Http requests

See links 22 for JWT from

For exporting data as CSV

See link 2 from

For exporting data as image

See link 1 from

Making a simple CRUD ( create ,read, update , delete ) application

See link 6,7,8,9, from

Adding your blocks

Please see how I add CustomBlocksForUI below

app.UseBlocklyUI(new BlocklyUIOptions()
                StartBlocks = StartBlocksForUI,
                HeaderName = "Demo test for .NET Core WebAPI To Blockly ( demo site with Blockly +  swaggers + odata loaded + graphql)",
                CustomBlocks = CustomBlocksForUI

More information

Download the source code, run the TestBlocklyHtml project ( in the test folder ).

See there

region blockly needed


region blockly optional

and follow the code.

All other code is just boilerplate for Swagger, OData,GraphQL that are mandatory for demo'ing the application, not for Blockly2NetCore itself.


There is a integration testing at \IntegrationTesting that tests the UI. Generates images and verifies " program complete " textbox.

There are 42 tests that you can also click the demo at ( see links on the bottom of the page)

Contributors ✨

Thanks goes to these wonderful people (emoji key):

If you want to contribute, that is plenty of work to be done -see issues tab .

Cosmin Popescu


Adrian Nasui


Tudor Iliescu




Noah Andrews


Rene Escalante


This project follows the all-contributors specification. Contributions of any kind welcome!

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.