-
-
Notifications
You must be signed in to change notification settings - Fork 0
Getting Started
-
.NET SDK — the version pinned in
global.json(currently .NET 10 preview). Install via dot.net orwinget install Microsoft.DotNet.SDK.Preview. -
GitHub CLI (
gh) — required becauseSatisfactorySaveNetis consumed from the fork's GitHub Packages feed which always needs auth (even for public packages). - (Optional) Docker if you want to use the Postgres provider or run the CI guards locally.
gh auth refresh -h github.com -s read:packagesgit clone https://github.com/ChrisonSimtian/ERP.Satisfactory.git
cd ERP.Satisfactory
export GITHUB_TOKEN=$(gh auth token) # nuget.config reads it for GitHub Packages
dotnet build ERP.Satisfactory.slnx
dotnet run --project src/AppHostThe Aspire dashboard URL prints in the console — open it and click
webfrontend.
Everything CI runs is available locally through NUKE:
./build.sh Compile # restore + build
./build.sh Test # build + run xUnit + Playwright UI tests
./build.sh Format # dotnet format --verify-no-changes
./build.sh ComputeVersion # print the NB.GV-computed version for HEAD
./build.sh CheckMigrations # EF migrations drift guard (both providers)Windows users have build.ps1 and build.cmd equivalents.
./build.sh Test installs the Chromium build automatically.
If you want to pre-install manually:
pwsh test/Web/Web.UiTests/bin/Debug/net10.0/playwright.ps1 install chromiumThe repo has two submodules under vendor/
(SatisfactorySaveNet and CUE4Parse), both marked
update = none + ignore = all. They're not required for the build —
they're kept as optional drop-ins for iterating on the fork locally.
To populate one explicitly:
git submodule update --init --checkout vendor/SatisfactorySaveNetThe planner reads items / buildings / recipes from the catalogue JSON shipped
with your Satisfactory install. Modern installs use per-locale files
(en-US.json, …); legacy installs had a single Docs.json. Resolution
order on first run:
-
ERP_SATISFACTORY_DOCS_PATHenvironment variable - A user-saved path (set via the in-app Settings page)
-
Catalogue:Satisfactory:DocsPathinappsettings.json - Steam library auto-detect on Windows
Typical Steam path on Windows:
C:\Program Files (x86)\Steam\steamapps\common\Satisfactory\CommunityResources\Docs
The .sav path resolves the same way the catalogue does
(ERP_SATISFACTORY_SAVE_PATH env var → user-saved setting → appsettings →
auto-detect under %LocalAppData%\FactoryGame\Saved\SaveGames\<steamId>\).
When auto-ingest is enabled (see Background Scheduler), the app picks up newer saves automatically.
Per ADR-0016,
per-item icons and map backdrops live in a gitignored .assets/ folder at the
repo root, served at /assets/* by the Web project. A fresh clone has no
icons — the picker degrades to text-only until they're downloaded.
# 1. Start the app first (the script reads /catalog/items from the running ApiService)
dotnet run --project src/AppHost
# 2. In another shell:
pwsh tools/Update-Assets.ps1The script pulls icons from
satisfactory.wiki.gg at a polite 1 req/s.
Pass -Force to re-download after a game patch.
Start here
How it works
Reference
Off-wiki