This repository contains the APSIM registration platform, split across a shared library, a Web API, a Blazor web application, and tests.
- RegistrationShared: Shared enums and models used by both API and web app.
- RegistrationWebAPI: ASP.NET Core minimal API for registration data and related workflows.
- RegistrationWebApp: Blazor Server UI for registration and admin workflows.
- Tests: Automated tests for API behavior and integration points.
APSIM.RegistrationSystem/
├── RegistrationShared/ (Shared Models & Enums)
│ ├── Enums/
│ │ ├── AnnualTurnover.cs
│ │ ├── LicencePathway.cs
│ │ ├── OrganisationLicenceStatus.cs
│ │ └── UserLicenceStatus.cs
│ └── Models/
│ ├── Organisation.cs
│ └── User.cs
│
├── RegistrationWebAPI/ (Backend API)
│ ├── Data/ (EF Core Entities & DbContext)
│ ├── Models/ (Request/Response DTOs)
│ ├── Utilities/ (Helper Classes)
│ ├── Migrations/ (EF Core Migrations)
│ └── Program.cs (API Configuration)
│
├── RegistrationWebApp/ (Blazor UI)
│ ├── Components/
│ │ ├── Pages/ (Routable Pages)
│ │ ├── Layout/ (Layout Components)
│ │ ├── LayoutObjects/ (Reusable UI Blocks)
│ │ ├── Utilities/ (Service Classes)
│ │ └── Classes/ (Domain Models)
│ ├── Properties/ (Launch Settings)
│ ├── wwwroot/ (Static Assets)
│ ├── App.razor (Root Component)
│ └── Program.cs (App Configuration)
│
└── Tests/ (Unit & Integration Tests)
- .NET SDK 10.0 (matching project target framework
net10.0)
From the repository root:
dotnet restore RegistrationSystem.slndotnet build RegistrationSystem.slndotnet run --project RegistrationWebAPI/RegistrationWebAPI.csprojUse this when you want a normal app run without file watching:
dotnet run --project RegistrationWebApp/RegistrationWebApp.csprojUse watch mode during UI development so changes are picked up automatically and hot reload is applied when possible:
dotnet watch run --project RegistrationWebApp/RegistrationWebApp.csprojYou can start the same watch workflow from the VS Code terminal menu:
- Open VS Code in this repository.
- Select Terminal from the top menu.
- Choose Run Task....
- Select Just Watch RegistrationWebApp.
This starts the configured task that runs the web app in watch mode from the RegistrationWebApp project directory.
dotnet test Tests/Tests.csprojYou can run the API and web app locally with Docker or Docker Compose.
From the repository root:
docker build -f RegistrationWebAPI/Dockerfile -t apsim-registration-webapi .
docker build -f RegistrationWebApp/Dockerfile -t apsim-registration-webapp .Start both services together:
docker compose up -d --buildThis starts:
- Web API at http://localhost:8088
- Web App at http://localhost:8089
docker compose downThe RegistrationWebApp consists of the following routable pages:
| Page | Route | Purpose |
|---|---|---|
| Home | / |
Product selection and overview |
| Register | /register/{productId?} |
Registration form with licence pathway selection |
| Download | /download |
Download APSIM with registration validation |
| Validate | /validate |
Validate download access for APSIM Classic |
| SpecialRegistration | /special |
Special use registration form |
| Admin | /admin |
Admin dashboard for viewing registrations |
| Error | /error |
Error display page |
| NotFound | (implicit 404) | Page not found handler |
The RegistrationWebAPI provides RESTful endpoints:
- Authentication:
POST /api/auth/token- Get JWT token - Health:
GET /health- API health check - Registrations:
GET/POST /api/registrations- List and create registrations - Users: User management endpoints
- Organisations: Organisation management endpoints
- Downloads: Download audit and access tracking
See RegistrationWebAPI README for detailed endpoint documentation.
For project-specific configuration, troubleshooting, and development details, see each project README linked above.
- Create a feature branch from
master. - Make and validate your changes locally.
- Open a pull request with a summary of what changed and why.