Deployment
NetForge publishes as a standard ASP.NET Core app that serves the built React SPA from wwwroot, so it runs anywhere .NET 10 does — IIS, a Linux host behind nginx, Azure App Service, or a container.
Build & publish
dotnet publish NetForge.Server -c Release -o ./publishThe server project builds the React client as part of its build, so the published output is self-contained: the API plus the SPA's static assets. Run it with dotnet NetForge.Server.dll (or your host's process model).
Configure the environment
Production reads appsettings.Production.json, environment variables, and user-secrets — in that order of specificity. Keep secrets out of files; use environment variables. Work through the production checklist:
Seed:Admin:Email+Seed:Admin:Password— required; no admin is seeded otherwise.Database:Provider+ConnectionStrings:Default— see Databases.Email:*— so confirmation and reset emails actually send.App:ClientUrl— only if the SPA and API are served from different origins.- OAuth credentials for any providers you want visible.
HTTPS & cookies
The default cookie auth scheme issues a Secure cookie, so the app must be served over HTTPS in production (terminate TLS at your reverse proxy or host). Behind a proxy, forward the scheme/host headers so redirect URLs and cookies are correct.
Database
SQLite is fine for small or single-instance deployments (the database is a file on disk — make sure it's on persistent storage). For multi-instance or write-heavy production, use PostgreSQL or SQL Server and move to migrations.
Background jobs
Background jobs (Hangfire) use a persistent store and a job server that runs in-process. For a single instance this just works. If you scale out, point the Hangfire store at your production database so all instances share one queue.
Containers
Postgres/SQL Server scaffolds include a docker-compose.yml for the database. To containerize the app itself, add a standard ASP.NET Core Dockerfile (publish, then copy into a mcr.microsoft.com/dotnet/aspnet:10.0 runtime image) — nothing about NetForge is container-specific.