Full-stack Todo application template for the Three Horizons Agentic DevOps Platform, built with React 18 + Node.js + TypeScript + Terraform + Azure.
This repository serves as a Golden Path template for Red Hat Developer Hub (RHDH). When selected in the RHDH portal, it scaffolds a complete Todo application with Azure infrastructure, CI/CD pipelines, Codespaces environment, and Copilot custom agents.
┌─────────────────┐
│ React Frontend │
│ (Static Web) │
└────────┬─────────┘
│
▼
┌─────────────────┐ ┌──────────────┐
│ Express API │◄────►│ PostgreSQL │
│ (App Service) │ │ (Flexible) │
└────────┬─────────┘ └──────────────┘
│
▼
┌─────────────────┐ ┌──────────────┐
│ Redis Cache │ │ App Insights │
│ │ │ + Monitoring │
└─────────────────┘ └──────────────┘
| Layer | Technology | Hosting |
|---|---|---|
| Frontend | React 18 + TypeScript + Vite + Tailwind CSS + React Query | Azure Static Web Apps |
| Backend | Node.js 20 + Express + Prisma ORM + Redis + Winston | Azure App Service |
| Database | PostgreSQL 16 | Azure Database for PostgreSQL Flexible Server |
| Cache | Redis 7 | Azure Cache for Redis |
| IaC | Terraform | AzureRM Provider |
| CI/CD | GitHub Actions | 3 pipelines (frontend, backend, infrastructure) |
| Testing | Playwright | E2E with Page Object Model |
| Monitoring | Application Insights + Log Analytics | Azure Monitor |
The Codespace will automatically:
- Install all dependencies (frontend, backend, e2e)
- Start PostgreSQL and Redis containers
- Run database migrations
- Configure MCP servers for Copilot agents
Then open two terminals:
# Terminal 1 — Backend
cd backend && npm run dev
# Terminal 2 — Frontend
cd frontend && npm run dev- Frontend: http://localhost:5173
- Backend: http://localhost:3000
# Clone
git clone https://github.com/3horizons/todo-app.git
cd todo-app
# Install dependencies
cd frontend && npm install && cd ..
cd backend && npm install && cd ..
# Start infrastructure
docker-compose -f docker-compose.dev.yml up -d postgres redis
# Run migrations
cd backend && npx prisma migrate dev && cd ..
# Start backend (terminal 1)
cd backend && npm run dev
# Start frontend (terminal 2)
cd frontend && npm run devThis project includes specialized GitHub Copilot custom agents:
| Agent | Command | Description |
|---|---|---|
| @todo-dev | @todo-dev "Add priority field to todos" |
Full-stack app development (React + Express + Prisma) |
| @todo-deploy | @todo-deploy "Deploy to Azure dev" |
Terraform, GitHub Actions, Azure deployment |
| @playwright-tester | @playwright-tester "Generate tests for Todos" |
Orchestrates full E2E test pipeline |
| @playwright-explorer | @playwright-explorer "Explore Dashboard" |
Navigates app via Playwright MCP |
| @playwright-planner | @playwright-planner "Create test plan" |
Generates phased test plans |
| @playwright-implementer | @playwright-implementer "Implement Phase 1" |
Writes Page Objects + test specs |
| @azure | @azure "Check App Service health" |
Azure IaC, monitoring, troubleshooting |
@todo-dev (write feature) → @playwright-tester (test it) → @todo-deploy (ship it)
cd e2e && npm install && npx playwright install chromium
# Run all tests
npx playwright test
# Run with UI mode
npx playwright test --uiAdd these secrets to Settings → Secrets and variables → Actions:
| Secret | Description |
|---|---|
ARM_CLIENT_ID |
Azure Service Principal App ID |
ARM_CLIENT_SECRET |
Azure Service Principal Secret |
ARM_SUBSCRIPTION_ID |
Azure Subscription ID |
ARM_TENANT_ID |
Azure Tenant ID |
POSTGRES_ADMIN_PASSWORD |
PostgreSQL admin password |
ALERT_EMAIL |
Email for monitoring alerts |
# Via GitHub Actions (recommended)
gh workflow run infrastructure-deploy.yml -f action=apply -f environment=dev
# Or manually
cd terraform
terraform init
terraform plan -var-file=environments/dev.tfvars
terraform apply -var-file=environments/dev.tfvarsPush to main branch — CI/CD pipelines deploy automatically:
backend-deploy.yml→ builds Docker image → deploys to App Servicefrontend-deploy.yml→ builds Vite → deploys to Static Web App
Configured via Terraform:
- High CPU (>80%) and Memory (>85%) alerts
- HTTP 5xx error rate alerts
- Response time degradation (>2s)
- Email notifications to configured alert email
Dashboards available in Azure Portal → Application Insights.
todo-app/
├── frontend/ # React 18 + Vite + Tailwind CSS
│ └── src/
│ ├── components/ # React components
│ ├── pages/ # Route pages
│ └── api/ # HTTP client (Axios)
├── backend/ # Node.js 20 + Express + Prisma
│ ├── src/
│ │ ├── routes/ # API route handlers
│ │ ├── middleware/ # Express middleware
│ │ └── config/ # App config (DB, Redis, AppInsights)
│ └── prisma/ # Schema + migrations
├── terraform/ # Azure IaC
│ └── environments/ # Per-environment tfvars
├── e2e/ # Playwright E2E tests
│ ├── pages/ # Page Object Models
│ └── tests/ # Test specs
├── .github/
│ ├── workflows/ # CI/CD pipelines
│ ├── agents/ # Copilot custom agents
│ └── instructions/ # Copilot instructions
├── .devcontainer/ # Codespaces environment
├── .vscode/ # VS Code config + MCP servers
└── docs/ # Architecture, deployment guides
This repository is registered as a Software Template in Red Hat Developer Hub. To use it:
- Open the RHDH portal
- Go to Create → select Todo App — Three Horizons Golden Path
- Fill in the wizard (app name, environment, Azure region)
- The scaffolder creates a new repo, provisions Azure infrastructure, and registers in the catalog
MIT License
Built with the Three Horizons Golden Path — Agentic DevOps Platform