Competitive simulation where AI trading agents (LLMs) race against each other, each controlling a simulated crypto portfolio. Market prices are ingested from CoinGecko, an Azure Durable Functions orchestrator coordinates market cycles and agent decisions with fan-out/fan-in parallelism ; React frontend displays real-time equity curves and leaderboa
C#
1
168 commits
updated Sep 6, 2026
A competitive simulation where AI trading agents (LLMs) race against each other, each controlling a simulated crypto portfolio. Market prices are ingested from CoinGecko, an Azure Durable Functions orchestrator coordinates market cycles and agent decisions with fan-out/fan-in parallelism, and a React dashboard displays real-time equity curves and leaderboard.
Live demo is currently unavailable, since my Azure free trial unfortunately already ended
| Service | URL |
|---|---|
| Frontend | https://gentle-water-079ee5803.1.azurestaticapps.net |
| API | https://ai-trading-race-api.azurewebsites.net/api/auth/health |
MarketCycleOrchestrator coordinates the full market cycle with deterministic replays and idempotency| Phase | Description | Status |
|---|---|---|
| Phase 1-4 | Core architecture, data model, market data, simulation engine | โ Complete |
| Phase 5 | AI agents integration (OpenAI, Anthropic, Groq, Llama) | โ Complete |
| Phase 5b | Custom ML model (Python + FastAPI) | โ Complete |
| Phase 6-7 | Durable Functions orchestrator & React dashboard | โ Complete |
| Phase 8 | CI/CD & local deployment (Docker Compose) | โ Complete |
| Phase 9 | Cloud deployment (Azure) | โ Complete |
| Phase 10 | Knowledge graph (GraphRAG-lite) | โ Complete |
| Phase 10b | LangChain + Neo4j refactor | ๐ Planned |
| Phase 11 | Improve Monitoring & observability | ๐ Planned |
The system uses an Azure Durable Functions orchestrator (MarketCycleOrchestrator) as the central coordination engine. A timer trigger fires every 5 minutes, and the orchestrator sequences activities with built-in retry, idempotency, and replay safety.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Timer Trigger (*/5 min) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ MarketCycleOrchestrator โ
โ (Durable Functions) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโผโโโโโโโโโ โโโโโโโโโโโผโโโโโโโโโโโ โโโโโโโโโผโโโโโโโโโ
โ IngestMarket โ โ CaptureSnapshots โ โ GetActive โ
โ DataActivity โ โ Activity โ โ AgentsActivityโ
โ โ โ (pre & post trade) โ โ โ
โโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโฌโโโโโโโโโ
โ โ
โ prices agent IDs โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโ
โ โ Fan-out: RunAgentDecisionActivity โ
โ โ (one per agent, in parallel) โ
โ โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ โ decisions
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ โ ExecuteTradesActivity โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโบ Decision cycles run every 15 minutes (:00, :15, :30, :45)
Market data ingestion runs every 5 minutes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Docker Compose Services โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข SQL Server 2022 (port 1433) โ
โ โข Redis 7 (port 6379) โ Caching & idempotency โ
โ โข ML Service FastAPI (port 8000) โ
โ โข Azurite (ports 10000-10002) โ Durable Functions storage โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ASP.NET Core API (port 5001) โ
โ Azure Functions + Durable Orchestrator (port 7071) โ
โ React Dashboard (port 5173) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Azure (francecentral) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ App Service (F1) โ ASP.NET Core API โ
โ Azure SQL (Free tier) โ Database โ
โ Container App โ Python ML service (ghcr.io image) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Azure (westeurope) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Functions (Consumption) โ Durable orchestrator โ
โ Static Web App (Free) โ React frontend โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ai-trading-race/
โโโ AiTradingRace.Web/ # ASP.NET Core Web API
โโโ AiTradingRace.Domain/ # Domain entities
โโโ AiTradingRace.Application/ # Business logic & interfaces
โโโ AiTradingRace.Infrastructure/ # EF Core, external API clients
โโโ AiTradingRace.Functions/ # Azure Functions
โ โโโ Orchestrators/ # โโ MarketCycleOrchestrator
โ โโโ Activities/ # โโ Ingest, Snapshot, Decision, Trade
โ โโโ Functions/ # โโ Health check, manual triggers
โ โโโ Models/ # โโ Orchestration request/result DTOs
โโโ AiTradingRace.Tests/ # Unit & integration tests
โโโ ai-trading-race-web/ # React frontend (Vite + TypeScript)
โโโ ai-trading-race-ml/ # Python ML service (FastAPI + scikit-learn)
โโโ infra/ # Azure Bicep IaC
โโโ scripts/ # Database setup, deploy & credential scripts
โโโ .github/workflows/ # CI/CD pipelines (7 workflows)
| Layer | Technologies |
|---|---|
| Backend | .NET 8, ASP.NET Core, Entity Framework Core |
| Orchestration | Azure Functions v4 (isolated worker), Durable Functions |
| Database | SQL Server 2022, Redis 7 |
| ML Service | Python 3.11, FastAPI, scikit-learn |
| Frontend | React 18, TypeScript, Vite, TailwindCSS |
| Infrastructure | Docker Compose (local), Azure Bicep (cloud) |
| Cloud | Azure App Service, Functions, Container Apps, Static Web App, Azure SQL |
| CI/CD | GitHub Actions (7 workflows) |
# .NET 8 SDK
brew install dotnet@8
brew link dotnet@8 --force
export PATH="/opt/homebrew/opt/dotnet@8/bin:$PATH"
# EF Core tools
dotnet tool install --global dotnet-ef
export PATH="$HOME/.dotnet/tools:$PATH"
# Azure Functions Core Tools
brew tap azure/functions
brew install azure-functions-core-tools@4
# Process manager (optional, recommended)
brew install overmind
cp .env.example .env
# Edit .env with your API keys and passwords
โ ๏ธ SQL Server password requirements: Min 8 chars, uppercase, lowercase, digit, special char (
@#$โ avoid!on macOS/zsh)
docker compose up -d
This starts SQL Server, Redis, Azurite (Durable Functions storage), and the ML service.
source .env
./scripts/setup-database.sh
./scripts/seed-database.sh
Option A: One command (recommended)
overmind start -f Procfile.dev
Option B: Manual (3 terminals)
# Terminal 1: Backend API
source .env && cd AiTradingRace.Web && dotnet run
# Terminal 2: Azure Functions (orchestrator + activities)
cd AiTradingRace.Functions && func start
# Terminal 3: Frontend
cd ai-trading-race-web && npm install && npm run dev
| Service | URL |
|---|---|
| Dashboard | http://localhost:5173 |
| API Swagger | http://localhost:5001/swagger |
| Functions | http://localhost:7071/api/health |
| ML Service | http://localhost:8000/docs |
curl -X POST http://localhost:7071/api/market-cycle/trigger
# Run all tests
dotnet test
# With verbosity
dotnet test --verbosity normal
Test coverage: 166 tests covering market data ingestion, portfolio operations, equity calculations, risk validation, agent decisions, and Azure Functions orchestration.
# 1. Copy and fill in all values (API keys, passwords, domain)
cp .env.example .env
# 2. Log in to Azure
az login
# 3. Provision all Azure resources (Bicep IaC)
source .env
./scripts/deploy-infra.sh
# 4. Deploy all application code
./scripts/deploy-app.sh
deploy-infra.sh creates: resource group, App Service, Azure SQL, Azure Functions, Container App, Static Web App.
deploy-app.sh builds & pushes the ML Docker image, runs DB migrations, deploys the API + Functions + Container App, and injects Function keys.
On every push to main, the deploy.yml workflow runs automatically. Some deploy steps use publish profiles (automated), others require AZURE_CREDENTIALS service principal which isn't available when Entra ID is org-controlled (manual).
Automated deploys (on push to main):
| Workflow Job | Target | Secret |
|---|---|---|
deploy-api | App Service | AZURE_WEBAPP_PUBLISH_PROFILE |
deploy-functions | Function App | AZURE_FUNCTIONAPP_PUBLISH_PROFILE |
deploy-frontend | Static Web App | AZURE_STATIC_WEB_APPS_API_TOKEN |
Manual operations (require az login):
| Task | Command |
|---|---|
| DB Migration | ./scripts/migrate-azure-db.sh |
| ML Service Deploy | ./scripts/deploy-app.sh (or see below) |
| Post-deploy checks | curl https://ai-trading-race-api.azurewebsites.net/api/health |
# Build and push Docker image
docker build -t ghcr.io/diegoaquinoh/ai-trading-race-ml:latest ./ai-trading-race-ml
docker push ghcr.io/diegoaquinoh/ai-trading-race-ml:latest
# Update Container App
az containerapp update \
--name ai-trading-ml \
--resource-group ai-trading-rg \
--image ghcr.io/diegoaquinoh/ai-trading-race-ml:latest
# Option A: Use the existing script
./scripts/migrate-azure-db.sh
# Option B: Direct EF Core update (requires connection string)
dotnet ef database update \
--project AiTradingRace.Infrastructure \
--startup-project AiTradingRace.Web
| Secret | How to get it |
|---|---|
AZURE_WEBAPP_PUBLISH_PROFILE | Azure Portal โ App Service โ Download publish profile |
AZURE_FUNCTIONAPP_PUBLISH_PROFILE | Azure Portal โ Function App โ Download publish profile |
AZURE_STATIC_WEB_APPS_API_TOKEN | Auto-created when SWA linked to GitHub |
brew install azure-cli jq sqlcmd
dotnet tool install --global dotnet-ef
| Document | Description |
|---|---|
| docs/DEPLOYMENT_PLAN.md | Full Azure deployment plan |
| scripts/README.md | Database & deployment scripts guide |
| .github/SUMMARY.md | CI/CD pipeline summary |
| .github/WORKFLOWS.md | Workflow documentation |
.env (excluded from git)local.settings.json (not versioned)X-API-Key headersThis project is licensed under the MIT License โ see LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
C#
66.8%
TypeScript
11.1%
Shell
7.2%
CSS
6.7%
Python
5.8%
Bicep
1.4%
Competitive simulation where AI trading agents (LLMs) race against each other, each controlling a simulated crypto portfolio. Market prices are ingested from CoinGecko, an Azure Durable Functions orchestrator coordinates market cycles and agent decisions with fan-out/fan-in parallelism ; React frontend displays real-time equity curves and leaderboa
C#
1
168 commits
updated Sep 6, 2026
A competitive simulation where AI trading agents (LLMs) race against each other, each controlling a simulated crypto portfolio. Market prices are ingested from CoinGecko, an Azure Durable Functions orchestrator coordinates market cycles and agent decisions with fan-out/fan-in parallelism, and a React dashboard displays real-time equity curves and leaderboard.
Live demo is currently unavailable, since my Azure free trial unfortunately already ended
| Service | URL |
|---|---|
| Frontend | https://gentle-water-079ee5803.1.azurestaticapps.net |
| API | https://ai-trading-race-api.azurewebsites.net/api/auth/health |
MarketCycleOrchestrator coordinates the full market cycle with deterministic replays and idempotency| Phase | Description | Status |
|---|---|---|
| Phase 1-4 | Core architecture, data model, market data, simulation engine | โ Complete |
| Phase 5 | AI agents integration (OpenAI, Anthropic, Groq, Llama) | โ Complete |
| Phase 5b | Custom ML model (Python + FastAPI) | โ Complete |
| Phase 6-7 | Durable Functions orchestrator & React dashboard | โ Complete |
| Phase 8 | CI/CD & local deployment (Docker Compose) | โ Complete |
| Phase 9 | Cloud deployment (Azure) | โ Complete |
| Phase 10 | Knowledge graph (GraphRAG-lite) | โ Complete |
| Phase 10b | LangChain + Neo4j refactor | ๐ Planned |
| Phase 11 | Improve Monitoring & observability | ๐ Planned |
The system uses an Azure Durable Functions orchestrator (MarketCycleOrchestrator) as the central coordination engine. A timer trigger fires every 5 minutes, and the orchestrator sequences activities with built-in retry, idempotency, and replay safety.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Timer Trigger (*/5 min) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ MarketCycleOrchestrator โ
โ (Durable Functions) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโผโโโโโโโโโ โโโโโโโโโโโผโโโโโโโโโโโ โโโโโโโโโผโโโโโโโโโ
โ IngestMarket โ โ CaptureSnapshots โ โ GetActive โ
โ DataActivity โ โ Activity โ โ AgentsActivityโ
โ โ โ (pre & post trade) โ โ โ
โโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโฌโโโโโโโโโ
โ โ
โ prices agent IDs โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโ
โ โ Fan-out: RunAgentDecisionActivity โ
โ โ (one per agent, in parallel) โ
โ โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ โ decisions
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ โ ExecuteTradesActivity โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโบ Decision cycles run every 15 minutes (:00, :15, :30, :45)
Market data ingestion runs every 5 minutes
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Docker Compose Services โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข SQL Server 2022 (port 1433) โ
โ โข Redis 7 (port 6379) โ Caching & idempotency โ
โ โข ML Service FastAPI (port 8000) โ
โ โข Azurite (ports 10000-10002) โ Durable Functions storage โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ASP.NET Core API (port 5001) โ
โ Azure Functions + Durable Orchestrator (port 7071) โ
โ React Dashboard (port 5173) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Azure (francecentral) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ App Service (F1) โ ASP.NET Core API โ
โ Azure SQL (Free tier) โ Database โ
โ Container App โ Python ML service (ghcr.io image) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Azure (westeurope) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Functions (Consumption) โ Durable orchestrator โ
โ Static Web App (Free) โ React frontend โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ai-trading-race/
โโโ AiTradingRace.Web/ # ASP.NET Core Web API
โโโ AiTradingRace.Domain/ # Domain entities
โโโ AiTradingRace.Application/ # Business logic & interfaces
โโโ AiTradingRace.Infrastructure/ # EF Core, external API clients
โโโ AiTradingRace.Functions/ # Azure Functions
โ โโโ Orchestrators/ # โโ MarketCycleOrchestrator
โ โโโ Activities/ # โโ Ingest, Snapshot, Decision, Trade
โ โโโ Functions/ # โโ Health check, manual triggers
โ โโโ Models/ # โโ Orchestration request/result DTOs
โโโ AiTradingRace.Tests/ # Unit & integration tests
โโโ ai-trading-race-web/ # React frontend (Vite + TypeScript)
โโโ ai-trading-race-ml/ # Python ML service (FastAPI + scikit-learn)
โโโ infra/ # Azure Bicep IaC
โโโ scripts/ # Database setup, deploy & credential scripts
โโโ .github/workflows/ # CI/CD pipelines (7 workflows)
| Layer | Technologies |
|---|---|
| Backend | .NET 8, ASP.NET Core, Entity Framework Core |
| Orchestration | Azure Functions v4 (isolated worker), Durable Functions |
| Database | SQL Server 2022, Redis 7 |
| ML Service | Python 3.11, FastAPI, scikit-learn |
| Frontend | React 18, TypeScript, Vite, TailwindCSS |
| Infrastructure | Docker Compose (local), Azure Bicep (cloud) |
| Cloud | Azure App Service, Functions, Container Apps, Static Web App, Azure SQL |
| CI/CD | GitHub Actions (7 workflows) |
# .NET 8 SDK
brew install dotnet@8
brew link dotnet@8 --force
export PATH="/opt/homebrew/opt/dotnet@8/bin:$PATH"
# EF Core tools
dotnet tool install --global dotnet-ef
export PATH="$HOME/.dotnet/tools:$PATH"
# Azure Functions Core Tools
brew tap azure/functions
brew install azure-functions-core-tools@4
# Process manager (optional, recommended)
brew install overmind
cp .env.example .env
# Edit .env with your API keys and passwords
โ ๏ธ SQL Server password requirements: Min 8 chars, uppercase, lowercase, digit, special char (
@#$โ avoid!on macOS/zsh)
docker compose up -d
This starts SQL Server, Redis, Azurite (Durable Functions storage), and the ML service.
source .env
./scripts/setup-database.sh
./scripts/seed-database.sh
Option A: One command (recommended)
overmind start -f Procfile.dev
Option B: Manual (3 terminals)
# Terminal 1: Backend API
source .env && cd AiTradingRace.Web && dotnet run
# Terminal 2: Azure Functions (orchestrator + activities)
cd AiTradingRace.Functions && func start
# Terminal 3: Frontend
cd ai-trading-race-web && npm install && npm run dev
| Service | URL |
|---|---|
| Dashboard | http://localhost:5173 |
| API Swagger | http://localhost:5001/swagger |
| Functions | http://localhost:7071/api/health |
| ML Service | http://localhost:8000/docs |
curl -X POST http://localhost:7071/api/market-cycle/trigger
# Run all tests
dotnet test
# With verbosity
dotnet test --verbosity normal
Test coverage: 166 tests covering market data ingestion, portfolio operations, equity calculations, risk validation, agent decisions, and Azure Functions orchestration.
# 1. Copy and fill in all values (API keys, passwords, domain)
cp .env.example .env
# 2. Log in to Azure
az login
# 3. Provision all Azure resources (Bicep IaC)
source .env
./scripts/deploy-infra.sh
# 4. Deploy all application code
./scripts/deploy-app.sh
deploy-infra.sh creates: resource group, App Service, Azure SQL, Azure Functions, Container App, Static Web App.
deploy-app.sh builds & pushes the ML Docker image, runs DB migrations, deploys the API + Functions + Container App, and injects Function keys.
On every push to main, the deploy.yml workflow runs automatically. Some deploy steps use publish profiles (automated), others require AZURE_CREDENTIALS service principal which isn't available when Entra ID is org-controlled (manual).
Automated deploys (on push to main):
| Workflow Job | Target | Secret |
|---|---|---|
deploy-api | App Service | AZURE_WEBAPP_PUBLISH_PROFILE |
deploy-functions | Function App | AZURE_FUNCTIONAPP_PUBLISH_PROFILE |
deploy-frontend | Static Web App | AZURE_STATIC_WEB_APPS_API_TOKEN |
Manual operations (require az login):
| Task | Command |
|---|---|
| DB Migration | ./scripts/migrate-azure-db.sh |
| ML Service Deploy | ./scripts/deploy-app.sh (or see below) |
| Post-deploy checks | curl https://ai-trading-race-api.azurewebsites.net/api/health |
# Build and push Docker image
docker build -t ghcr.io/diegoaquinoh/ai-trading-race-ml:latest ./ai-trading-race-ml
docker push ghcr.io/diegoaquinoh/ai-trading-race-ml:latest
# Update Container App
az containerapp update \
--name ai-trading-ml \
--resource-group ai-trading-rg \
--image ghcr.io/diegoaquinoh/ai-trading-race-ml:latest
# Option A: Use the existing script
./scripts/migrate-azure-db.sh
# Option B: Direct EF Core update (requires connection string)
dotnet ef database update \
--project AiTradingRace.Infrastructure \
--startup-project AiTradingRace.Web
| Secret | How to get it |
|---|---|
AZURE_WEBAPP_PUBLISH_PROFILE | Azure Portal โ App Service โ Download publish profile |
AZURE_FUNCTIONAPP_PUBLISH_PROFILE | Azure Portal โ Function App โ Download publish profile |
AZURE_STATIC_WEB_APPS_API_TOKEN | Auto-created when SWA linked to GitHub |
brew install azure-cli jq sqlcmd
dotnet tool install --global dotnet-ef
| Document | Description |
|---|---|
| docs/DEPLOYMENT_PLAN.md | Full Azure deployment plan |
| scripts/README.md | Database & deployment scripts guide |
| .github/SUMMARY.md | CI/CD pipeline summary |
| .github/WORKFLOWS.md | Workflow documentation |
.env (excluded from git)local.settings.json (not versioned)X-API-Key headersThis project is licensed under the MIT License โ see LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.
C#
66.8%
TypeScript
11.1%
Shell
7.2%
CSS
6.7%
Python
5.8%
Bicep
1.4%