Free template.NET 10

Build with Modular Monolith Architecture

Create an event, publish it, then reserve seats across two modules. Follow the full flow, with each module owning its data and code.

Loading signup form...

You'll also get The .NET Weekly newsletter. Unsubscribe anytime.

Secure Delivery
Email Delivery
No Credit Card

Created by Milan Jovanović
.NET and software architecture

Evently / module boundaries.NET 10
ONE APP · ONE DEPLOYMENTASP.NET Core APIEventsTicketingCreate / publish an eventReserve seatsEventsDbContextTicketingDbContextevents schema + outboxticketing schema + inboxEventPublishedV1 · local workerModule internals stay behind a small public contract.
2 modules1 PostgreSQL databaseNo message broker
A complete flow you can run, read, and change.
  • .NET 10
  • EF Core
  • PostgreSQL
  • Docker Compose

2

Business modules

1

PostgreSQL database

.NET 10

Framework

Free

Source code

See where one module ends and the next begins.

Events owns the event. Ticketing owns the seats. A small contract joins them. Inside each module, the code is grouped by feature.

Module boundaries

Keep the internals private.

Each module has its own EF Core context and schema. Tests catch the wrong project reference. Only the event contract crosses the boundary.

Features you can follow

Read one use case in one place.

A feature keeps its request, handler, and endpoint together. Start with PublishEvent, then follow the message into Ticketing.

Outbox + inbox

Handle a message more than once.

A local worker moves events between modules. The inbox stops a repeat delivery from creating a second copy of the event.

Real database tests

Try to reserve the last seat twice.

Tests use PostgreSQL to check parallel requests, retries, and failed delivery. The demo also checks that a retry does not take more seats.

From download to your first reservation.

Unzip the project and open it in your editor. You need Docker with Compose. The containers include the .NET SDK.

The demo needs PowerShell 7. You can also use requests.http to create an event, publish it, and reserve seats.

modular-monolith/
src/Modules/Events

Event data and outbox

src/Modules/Events.Contracts

The public message

src/Modules/Ticketing

Seats, reservations, inbox

tests/Starter.Tests

Boundary and flow tests

Copy .env.example to .env and set POSTGRES_PASSWORD. Then run:

docker compose up --build -d

Wait for http://localhost:5088/health/ready to report ready, then run the demo.

pwsh -NoProfile -File scripts/demo.ps1

Create → publish → reserve

Before you download

What is in the download?

The full .NET 10 source, Docker Compose setup, database migrations, tests, sample requests, a demo script, and guides to the code and failure paths.

Is this the Evently course project?

This is a smaller starter based on the module patterns in my Evently course. It focuses on Events and Ticketing. It does not include the full course project or lessons.

Where should I start reading the code?

Start with PublishEvent in the Events module. Follow its outbox message into Ticketing, then read the reservation feature and its tests. The run guide names each file in the flow.

Get the Modular Monolith template

Get the source, tests, and run guide in one free download.

Get the free template

No credit card. Runs locally with Docker Compose.