A simple Todo application demonstrating k8s-ephemeral-environments with .NET 10 and Angular 21.
| Layer | Technology |
|---|---|
| Backend | ASP.NET Core 10 |
| Frontend | Angular 21 |
| Database | PostgreSQL 16 |
| ORM | Entity Framework Core |
| Styling | Tailwind CSS 4 |
todo-app/
├── TodoApp.Api/ # ASP.NET Core Web API
│ ├── Controllers/ # API endpoints
│ ├── Models/ # Entity and DTOs
│ ├── Services/ # Business logic
│ ├── Data/ # DbContext
│ └── Migrations/ # EF Core migrations
├── todo-app-web/ # Angular frontend
│ └── src/app/ # Components and services
├── Dockerfile # Multi-stage build
├── docker-compose.yml # Local development
└── k8s-ee.yaml # PR environment config
- .NET 10 SDK
- Node.js 22+
- Docker and Docker Compose
cd todo-app
# Start PostgreSQL
docker compose up -d
# Run API (terminal 1)
cd TodoApp.Api
dotnet run
# Run Angular (terminal 2)
cd todo-app-web
npm install
npm start| Method | Endpoint | Description |
|---|---|---|
| GET | /api/todos |
List all todos |
| POST | /api/todos |
Create todo |
| PATCH | /api/todos/{id} |
Update todo |
| DELETE | /api/todos/{id} |
Delete todo |
| GET | /api/health |
Health check |
Each pull request automatically gets an isolated environment:
- PR opened → Namespace created
- App + PostgreSQL deployed
- Preview URL:
todo-app-dotnet-pr-{number}.k8s-ee.genesluna.dev - PR closed → Environment destroyed
MIT