Development setup
Prerequisites
Section titled “Prerequisites”- Node.js 24+ for the web properties and this docs site.
- .NET 10 SDK for the API.
- PostgreSQL with PostGIS for structured platform data.
- Azurite when you need local blob-backed image and avatar storage.
- Xcode 16+ for iOS work.
- Android Studio with JDK 17 for Android work.
Local commands
Section titled “Local commands”Set-Location api/CaddieSight.Apidotnet restoredotnet run --launch-profile httpThe API normally serves on http://localhost:5097 with Swagger at /swagger.
Clubhouse web app
Section titled “Clubhouse web app”Set-Location clubhousenpm installnpm startnpm run buildUse .env.local with:
REACT_APP_CLUBHOUSE_API_URL=http://localhost:5097Corp marketing site
Section titled “Corp marketing site”Set-Location corpnpm installnpm run devnpm run buildProShop
Section titled “ProShop”Set-Location proshopnpm installnpm run buildDocs site
Section titled “Docs site”Set-Location docsnpm installnpm run devnpm run buildLocal infrastructure expectations
Section titled “Local infrastructure expectations”PostgreSQL
Section titled “PostgreSQL”The API requires ConnectionStrings:Postgres and applies EF Core migrations on startup.
Blob storage
Section titled “Blob storage”Blob storage is used only for image and avatar bytes. For local development, configure either:
Storage:ConnectionString, orStorage:BlobEndpoint
If you use Azurite, run it with:
azurite --silent --skipApiVersionCheck --location $env:TEMP\azurite --blobHost 127.0.0.1 --queueHost 127.0.0.1 --tableHost 127.0.0.1Working rules that matter in this repo
Section titled “Working rules that matter in this repo”- Keep API controllers thin and push business logic into
Application/Services. - Persist structured data in PostgreSQL through EF Core repositories.
- Keep blob storage limited to binary assets such as uploaded images and avatars.
- If an API contract changes, update every affected client surface.
- Preserve the phase-one request/response flow unless a task explicitly asks to change it.