ASP.NET Core REST API and Angular application for event discovery and ticket booking.
For product vision, scope, and contribution workflow, see PROJECT_SCOPE.md.
To run with Docker Compose:
To run locally:
- .NET SDK 10.0
- Node.js 24 LTS (see Node version setup)
- SQL Server (local instance or Docker)
- Node.js (v18 or later) and npm
- Angular CLI (
npm install -g @angular/cli)
The quickest way to run the full stack (API + client + database) without any local tooling beyond Docker.
-
Copy the env file and fill in your credentials:
cp .env.example .env
-
Start everything:
docker compose up -d --build
Service URL Client (Angular) http://localhost:4200 API (ASP.NET Core) http://localhost:5270 SQL Server localhost:1433 Migrations run automatically on API startup — no manual
dotnet efstep needed. -
Stop everything:
docker compose down
Add
-vto also wipe the database volume.
Follow the numbered steps below to run the API and client separately.
This app reads database values from environment variables (Database__Server, Database__Name, Database__User, Database__Password, Database__TrustServerCertificate) and falls back to src/api/SmartEventBooking.Web/appsettings.json.
Admin seeding credentials are also read from environment variables:
AdminSettings__EmailAdminSettings__Password
Use one of these options:
- Set environment variables directly in your shell.
- Or copy
.env.exampleto.env. The app auto-loads.envon startup (searches current and parent directories) and only applies values for variables not already set in the shell.
Example:
cp .env.example .envdocker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong!Passw0rd" -p 1433:1433 --name smart-event-sql -d mcr.microsoft.com/mssql/server:2022-latestImportant: keep .env and SQL Server credentials aligned. If the container is started with MSSQL_SA_PASSWORD=YourStrong!Passw0rd, set Database__Password=YourStrong!Passw0rd in .env.
From the repository root:
dotnet restore
dotnet ef database update --project src/api/SmartEventBooking.Infrastructure/SmartEventBooking.Infrastructure.csproj --startup-project src/api/SmartEventBooking.Web/SmartEventBooking.Web.csproj --context ApplicationDbContextdotnet run --project src/api/SmartEventBooking.Web/SmartEventBooking.Web.csproj --launch-profile httpsDefault URLs (development):
https://localhost:7134http://localhost:5270- Swagger UI:
https://localhost:7134/swagger
If you run without the https launch profile, you may see:
Failed to determine the https port for redirect.
Use --launch-profile https (shown above), or set ASPNETCORE_URLS to include an HTTPS URL.
cd src/client
npm ci
ng serveClient runs at http://localhost:4200. The API URL it connects to is configured in src/client/public/assets/config.json.
Health endpoint:
GET /health/db- Example:
https://localhost:7134/health/db
Expected result:
200 OKwith{ "status": "ok", "database": "reachable" }- If you get
503 Service Unavailable, verify DB credentials and whether shell environment variables are overriding.envvalues.
dotnet build
dotnet testThe client requires Node.js 24 LTS, pinned in src/client/.nvmrc.
Download and install Node 24 LTS from nodejs.org. No version manager needed if you only work on this project.
Windows:
winget install Schniz.fnmAdd to your PowerShell profile (run once):
Add-Content $PROFILE "fnm env --use-on-cd --shell power-shell | Out-String | Invoke-Expression"Restart PowerShell, then inside src/client/:
fnm install
fnm usemacOS / Linux:
curl -fsSL https://fnm.vercel.app/install | bashThen inside src/client/:
fnm install
fnm useSwitching versions and seeing native module errors? Delete
node_modulesand runnpm ciagain — native binaries are version-specific.