Contributing
Foundry Gate is open-source and welcomes contributions. The project uses GitHub Issues for tracking work — every issue has a corresponding plan file in /plans/ with implementation detail.
Before you start
- Read
PLANS.mdin the repo root for the planning convention. - Find an open issue in the milestone you want to work on.
- Check the linked plan file (e.g.,
plans/05-users.md) for approach and file expectations. - Comment on the issue to claim it.
Local development setup
-
Prerequisites: .NET 10 SDK, Docker Desktop, Node.js 20+, Azure CLI
-
Install the Foundry Gate CLI (once the CLI project is built):
Terminal window dotnet tool install --global FoundryGate.Cli -
Bootstrap local database:
Terminal window Foundry Gate local setupThis starts a SQL Server Docker container, runs EF migrations, and seeds
SystemConfigurationdefaults. -
Run the API:
Terminal window cd src/FoundryGate.Apidotnet run -
Run the UI (separate terminal):
Terminal window cd src/FoundryGate.Webdotnet run -
Run the docs site (separate terminal):
Terminal window cd docs-sitenpm installnpm run dev
Schema changes
- Modify the EF entity in
FoundryGate.Data/Entities/ dotnet ef migrations add <Name> --project src/FoundryGate.Data --startup-project src/FoundryGate.Apidotnet ef database update ...Foundry Gate db compare— syncs changes back toFoundryGate.Database/.sqlproj- Commit both the migration file and the updated
.sqlfile together.
Commit convention
feat(scope): short description # new featurefix(scope): short description # bug fixdocs(scope): short description # docs onlyrefactor(scope): short descriptionReference the issue number: feat(quota): add five-level resolution (#32)
Pull requests
- One PR per issue.
- The PR description should summarise what changed and link to the issue.
- All PRs must pass
dotnet buildanddotnet test. - Update the relevant plan file if the approach changed during implementation.