Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"model": "claude-sonnet-4-6"
}
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# GitHub Copilot Instructions
# Custom Instructions

## Overview

Expand Down
3 changes: 3 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# CLAUDE.md

@.github/copilot-instructions.md
48 changes: 24 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=nanotaboada_Dotnet.Samples.AspNetCore.WebApi&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=nanotaboada_Dotnet.Samples.AspNetCore.WebApi)
[![codecov](https://codecov.io/gh/nanotaboada/Dotnet.Samples.AspNetCore.WebApi/graph/badge.svg?token=hgJc1rStJ9)](https://codecov.io/gh/nanotaboada/Dotnet.Samples.AspNetCore.WebApi)
[![CodeFactor](https://www.codefactor.io/repository/github/nanotaboada/Dotnet.Samples.AspNetCore.WebApi/badge)](https://www.codefactor.io/repository/github/nanotaboada/Dotnet.Samples.AspNetCore.WebApi)
[![License: MIT](https://img.shields.io/badge/License-MIT-white.svg)](https://opensource.org/licenses/MIT)
[![License: MIT](https://img.shields.io/badge/License-MIT-3DA639.svg)](https://opensource.org/licenses/MIT)
![GitHub Copilot](https://img.shields.io/badge/GitHub_Copilot-contributing-8662C5?logo=githubcopilot&logoColor=white&labelColor=181818)
![Claude](https://img.shields.io/badge/Claude-Sonnet_4.6-D97757?logo=claude&logoColor=white&labelColor=181818)
![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/nanotaboada/Dotnet.Samples.AspNetCore.WebApi?utm_source=oss&utm_medium=github&utm_campaign=nanotaboada%2FDotnet.Samples.AspNetCore.WebApi&link=https%3A%2F%2Fcoderabbit.ai&label=CodeRabbit+Reviews&labelColor=181818)

Proof of Concept for a RESTful API built with .NET 10 (LTS) and ASP.NET Core. Manage football player data with SQLite, Entity Framework Core, Swagger documentation, and in-memory caching.

Expand All @@ -20,7 +23,7 @@ Proof of Concept for a RESTful API built with .NET 10 (LTS) and ASP.NET Core. Ma
- [Prerequisites](#prerequisites)
- [Quick Start](#quick-start)
- [Testing](#testing)
- [Docker](#docker)
- [Containers](#containers)
- [Releases](#releases)
- [Environment Variables](#environment-variables)
- [Command Summary](#command-summary)
Expand All @@ -33,7 +36,7 @@ Proof of Concept for a RESTful API built with .NET 10 (LTS) and ASP.NET Core. Ma
- 📚 **Interactive API exploration** - Swagger UI documentation with health monitoring endpoints
- ⚡ **Performance optimizations** - In-memory caching, rate limiting, and efficient database queries
- 🧪 **High test coverage** - xUnit tests with automated reporting to Codecov and SonarCloud
- 📖 **Token-efficient documentation** - AGENTS.md + auto-loaded Copilot instructions for AI-assisted development
- 📖 **Token-efficient documentation** - Custom instructions with coding guidelines, architecture rules, and agent workflows for AI-assisted development
- 🐳 **Full containerization** - Multi-stage Docker builds with Docker Compose orchestration
- 🔄 **Complete CI/CD pipeline** - Automated testing, code quality checks, Docker publishing, and GitHub releases
- 🏟️ **Stadium-themed semantic versioning** - Memorable, alphabetical release names from World Cup venues
Expand Down Expand Up @@ -95,6 +98,7 @@ test/Dotnet.Samples.AspNetCore.WebApi.Tests/
Dependencies flow from data layer through repositories and services to controllers. External dependencies (AutoMapper, FluentValidation, Serilog, Swashbuckle) integrate at their respective layers.

```mermaid

%%{init: {
"theme": "default",
"themeVariables": {
Expand All @@ -105,43 +109,39 @@ Dependencies flow from data layer through repositories and services to controlle
"clusterBorder": "#ddd"
}
}}%%
graph TB
%% Layer 1: Data
Data[Data]

%% Layer 2: Models
Models[Models]
graph RL

%% Layer 3: Repositories
Repositories[Repositories]
Models[Models]

%% Layer 4: Services
subgraph Layer4[" "]
Data[Data]
Repositories[Repositories]
end

subgraph Layer3[" "]
Services[Services]
Mappings[Mappings]
AutoMapper[AutoMapper]
MemoryCache[MemoryCache]
end

%% Layer 5: Controllers
subgraph Layer5[" "]
subgraph Layer2[" "]
Controllers[Controllers]
Validators[Validators]
FluentValidation[FluentValidation]
Swashbuckle[Swashbuckle]
end

%% Layer 6: Program
subgraph Layer6[" "]
subgraph Layer1[" "]
Program[Program]
Configurations[Configurations]
Serilog[Serilog]
end

%% Tests (separate)
Tests[Tests]

%% Main Application Flow
%% Application flow
Data --> Models
Models --> Repositories
Repositories --> Services
Expand All @@ -164,8 +164,8 @@ graph TB
MemoryCache --> Services

%% Tests connections
Controllers -.-> Tests
Services -.-> Tests
Controllers -.-> Tests

%% Node styling with stroke-width
classDef core fill:#b3d9ff,stroke:#6db1ff,stroke-width:2px,color:#555,font-family:monospace;
Expand All @@ -190,8 +190,8 @@ Interactive API documentation is available via Swagger UI at `https://localhost:
**Quick Reference:**

- `GET /players` - List all players
- `GET /players/{id}` - Get player by ID (requires authentication)
- `GET /players/squad/{squadNumber}` - Get player by squad number
- `GET /players/{id:Guid}` - Get player by ID (requires authentication)
- `GET /players/{squadNumber:int}` - Get player by squad number
- `POST /players` - Create new player
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- `PUT /players/{squadNumber}` - Update player
- `DELETE /players/{squadNumber}` - Remove player
Expand Down Expand Up @@ -252,7 +252,7 @@ reportgenerator -reports:coverage/**/coverage.cobertura.xml -targetdir:coverage

Tests are located in the `test/` directory and use xUnit for unit testing. Coverage reports are generated for controllers and services only.

## Docker
## Containers

This project includes full Docker support with multi-stage builds and Docker Compose for easy deployment.

Expand Down Expand Up @@ -356,7 +356,7 @@ The application can be configured using environment variables for different scen

### Local Development (`.vscode/launch.json`)

For local debugging and development:
For local development and debugging:

```bash
# ASP.NET Core environment mode
Expand All @@ -372,9 +372,9 @@ ASPNETCORE_DETAILEDERRORS=1
ASPNETCORE_SHUTDOWNTIMEOUTSECONDS=3
```

### Docker Deployment (`compose.yaml`)
### Container Deployment (`compose.yaml`)

For containerized production deployment:
For production deployment:

```bash
# Database storage path
Expand Down
165 changes: 0 additions & 165 deletions scripts/count-tokens.sh

This file was deleted.