OMNE is a full-stack .NET application with a Blazor WebAssembly frontend, FastEndpoints API backend, and PostgreSQL database. The project uses Aspire for service orchestration and follows a monorepo structure managed with pnpm workspaces.
Before you can run the OMNE project, ensure you have the following installed:
- .NET SDK >=9.0.304 as defined in
global.json - Node.js >=20+ - as defined in
packages.json - pnpm >=10 - for managing the monorepo structure
- Docker - must be running before starting the application
For Windows users, the fastest way to install Node.js and pnpm is using winget (Windows Package Manager):
-
Open PowerShell or Command Prompt
-
Install Node.js:
winget install OpenJS.NodeJS
-
Install pnpm:
winget install pnpm
-
Verify the installations:
node --version pnpm --version
To run the OMNE project, follow these steps:
-
Ensure Docker is running, Aspire requires Docker to be running to orchestrate services but does not start it automatically
-
Restore .NET tools:
dotnet tool restore
-
Build the project , this will automatically install pnpm dependencies:
dotnet build
-
Run the application:
dotnet aspire run
This will start the Aspire host which orchestrates:
- PostgreSQL database container
- API service (FastEndpoints)
- WebAssembly frontend (Blazor)
The OMNE project leverages several modern technologies:
- .NET 9 - core framework
- FastEndpoints - API framework for building REST APIs
- Entity Framework Core - SQL schema management
- Dapper - Micro-ORM for high-performance data access
- PostgreSQL - Primary database
- Aspire - Distributed application hosting and service orchestration
- Npgsql - PostgreSQL database provider for .NET
- Blazor WebAssembly - client-side web UI framework
- MudBlazor - UI component library for Blazor
- RestSharp - HTTP client for API communication
- pnpm - fast, disk space efficient package manager
- Prettier - code formatter for multiple languages
- Analyzers - C# code style enforcement
- ESLint - JS/TS linting\
- Husky - Git hooks for code quality enforcement
- Central Package Management (CPM)
├── apps
│ ├── OMNE.Api # FastEndpoints API backend
│ ├── OMNE.Host # Aspire host for service orchestration
│ └── OMNE.Web # Blazor WebAssembly frontend
├── src
│ ├── OMNE.Data # Data models and database context
│ ├── OMNE.EFCore # Entity Framework Core extensions
│ ├── OMNE.Model # Shared models
│ ├── OMNE.Postgres # PostgreSQL-specific implementations
│ ├── OMNE.ServiceDefaults # Common service configurations
│ └── OMNE.Workspace # Automatic dependency installation and git hooks
└── test
└── OMNE.Api.Tests # API integration tests
The OMNE.Workspace project is a special project that handles automatic dependency installations:
- when any project is built, it ensures that all Node.js dependencies are installed by running
pnpm installif needed - automatically installs and configures Husky git hooks for code quality enforcement
This means you don't need to manually run pnpm install in most cases, as it will be handled during the build process.
The project includes several npm scripts for development tasks:
pnpm format- format all code filespnpm format:dotnet- format C# code files onlypnpm format:prettier- format JS/TS/XML/etc files only