# License System Backend ASP.NET Core 8 API service for the software authorization system. ## Requirements - .NET 8 SDK - PostgreSQL 16+ - Redis 7+ (optional, for rate limiting) ## Quick Start 1. Create database and apply schema: ```bash psql -U postgres -d license -f scripts/init.sql ``` 2. Update `src/License.Api/appsettings.json` with your connection string and JWT secret. 3. Run the API: ```bash dotnet restore ASPNETCORE_URLS=http://localhost:39256 dotnet run --project src/License.Api ``` 4. Swagger: ``` http://localhost:39256/swagger ``` ## Docker Compose 1. Copy env file: ```bash cp .env.example .env ``` 2. Start services: ```bash docker compose up -d ``` 3. Check health: ```bash curl http://localhost:39256/health/ready ``` ## Notes - On first run, a `super_admin` user is seeded from `Seed` config in `appsettings.json`. - Files are stored under the `Storage:UploadRoot` path (defaults to `uploads/`). - If `Storage:ClientRsaPublicKeyPem` is empty, files are stored unencrypted and no key headers are returned. - CORS can be restricted via `Cors:AllowedOrigins` or env `Cors__AllowedOrigins__0` (set `Cors:AllowAny` to `true` for dev). - When `Storage:RequireHttpsForDownloadKey` is `true`, encrypted downloads require HTTPS to return the decryption key. - Auth signature accepts `ProjectSecret` or `ProjectKey` (use ProjectKey for client integrations).