Current Version v3.1.0

Build .NET apps faster,
with less code.

Backlot is an opinionated framework on top of .NET Core for building API-centric web and back-end systems, powered by our own Movie Pattern Practice.

▍ bash
dotnet CLI
$ dotnet add package Backlot.Defaults
ASP.NETAzure FunctionsRavenDBLiteDB AutofacRedis
◇ The Movie Pattern Practice

Code that reads like a screenplay.

Four concepts. Clear separation. A uniform language across every project, every team and every team member.

01 · Roles

What your code can do

Concise and reusable interfaces acting as an abstraction for underlying objects.

var anyobject {
  Op = "sum"
}.Presents<IFormula>()
02 · Scenarios

What your code actually does

Concrete SOLID code pieces that implement business logic and encapsulate behavior.

await Calculate
    .With(formula)
    .Play();
03 · Watchers

React to what happened

Observer scenarios and their events, react or trigger new scenarios as follow-ups

WatchAll<DebugWatcher>();
Watch<Login,
  MailWatcher>();
04 · Director

Orchestrate execution

Central orchestration component to manage executions across different hosts.

.ConfigureBacklotWeb((c, b)
  => new WebDirector());

▤ Building blocks

Batteries included.
Swap any one.

Each block features a sensible default and adheres to SOLID principles to enable straightforward replacements.

Core

The foundational building block that powers every Backlot project.

Authentication

Built-in secure authentication providers out of the box, plus a clean pattern to plug in your own.

Persistence

RavenDB, LiteDB, or SQL. Pick the right store that fits your project best, without rewriting code.

Storage

Built-in storage providers that match your host. Replacable by any cloud storage of your own.

Hosts

Swap hosts by changing configuration only. We support ASP.NET web apps, Azure Functions, plain consoles and more to come.

Multitype data support

Owe to our flexible rolecreate and mediaformatter practices. We support multiple dataformats for both in- and output.

⚡ Less ceremony

A single point of implementation
one file.

Skip the boilerplate. Declare a scenario, define the Roles you need, and find the entities (Actors) who can play these roles. The framework wires it into endpoints, a fluent C# API and serve you with a authentication and database storage out of the box.

  • Uniform structure across every project
  • Configurable and scalable at its core
  • Multiple hosts supported, switch without code changes
  • Opinionated defaults, escape hatches everywhere
HelloWorld.cs C#
[Scenario(typeof(HelloWorld), access: [Access.Everyone])]
public class HelloWorld(IDirector role) :
  Scenario<HelloWorld, IDirector, string>(role)
{
  protected override string Exec()
  {
    return "Hello World!";
  }
}

“Close the gap between describing software and building it, Backlot support teams to collaborate in a clear, uniform, agile way.”

Our mission!

Ready to roll the cameras?

Spin up your first scenario now. Backlot does the wiring, so you can focus on doing the interesting bits.