Introduction

What is Breakneck?

This project implements a vertical slice architecture or Request-Endpoint-Response architecture.
It contains implementations for the most common functionality in SaaS projects.

This is an opinionated project in the sense that I did choose the features, libraries and tools.
Such as

  • Fastendpoints
  • Entityframework core
  • Postgres
  • Serilog
  • Hangfire
  • Sendgrid
  • Testcontainers

However, the code is written very unopinionated and with very little abstraction.

Project philosophy

There are a lot of SaaS boilerplates in the javascript world or the untyped backend world.
I personally think a real typed backend language should be the default choice. Like AspNetCore or Go.

In general there are no revolutionary secrets hidden within this code base.
It's some of the most common libraries wired together nicely that nudge you towards the pit of success.

If you're still on the fence whether this project is for you, read the next paragraph or check out the project philosophy. If my reasoning does not vibe with you, you should check out some other boilerplate products.

To get an idea of how the repo looks like you can check out this RSS Feed Aggregator API (opens in a new tab) I built with FastEndpoints and Hangfire.

Who is this project for?

  • .NET devs looking for a different style of project. With a good set of libraries, tools and functionalities.
  • Javascript / NextJS devs looking to try a real backend language, with a good ecosystem. This endpoint focused style is very similiar to js http frameworks.
    Remember how you thought typescript would slow you down and then it didnt? Yea, its like that just 10x.
  • Makers and indie hackers who need a backend that is the main product or serves a web frontend or serves a flutter frontend or serves an electron frontend or serves a swift frontend.
  • MVC haters. Onion haters. Complexity haters. Django haters. Node haters.

If you strongly disagree with these points, this project probably isn't for you.

  • Simplicity is good.
  • Getting nudged is good. Don't make me think.
  • Move fast. Iterate fast.
  • Locality is good. Keep code that gets executed together close together.
  • Coupling is bad.
  • Abstraction is bad.
  • DRY is bad. DRY will probably get its own "billion dollar mistake" quote within the next decade.
  • Philosophizing about where code belongs is bad. In the end certain code gets executed on an http request and returns a http response, no matter how deep you hide it.