Adds project guidelines and conventions for Github Copilot

Introduces detailed instructions for ASP.NET API, C#, Docker, MSBuild,
testing, and library creation. These guidelines aim to standardize
development practices and improve code quality across the project.
This commit is contained in:
2026-04-16 15:56:15 +03:00
parent ec165d1425
commit 8e3b5ebdfc
9 changed files with 346 additions and 0 deletions
@@ -0,0 +1,58 @@
---
name: new-web-api-project
description: 'Scaffold a new ASP.NET web project (API or worker service) with correct structure, launch settings, and Docker integration. Use when: creating a new web API, adding an ASP.NET project, setting up a new web service under src/.'
argument-hint: 'Brief description of the web project (e.g., "REST API for user management", "background worker for email processing")'
---
# New Web Project
## When to Use
- Creating a new ASP.NET web API or worker service under `src/`
- Adding a web project that will be deployed via Docker
## Procedure
1. Ask the user for the project's purpose and type (API or worker).
2. Create the project under `src/{ProjectName}/` using the appropriate SDK (`Microsoft.NET.Sdk.Web` or `Microsoft.NET.Sdk.Worker`).
4. **Single target framework** — web projects target only the current LTS (no multi-targeting).
5. Create `Properties/launchSettings.json` with `http` and `https` profiles:
- Pick ports that **do not conflict** with existing projects — check all `src/*/Properties/launchSettings.json` files first.
- Set `launchBrowser: false`.
- Set `ASPNETCORE_ENVIRONMENT: Development`.
6. For APIs: use **Minimal APIs** with OpenAPI support (`Microsoft.AspNetCore.OpenApi`). The OpenAPI document generation and Spectral linting are handled automatically by the build infrastructure.
7. Create a matching test project under `tests/{ProjectName}.Tests/`.
8. Add both projects to `Solution.slnx`.
9. Add a compose service entry to `compose.yaml` (or create one from `docker/compose.sample.yaml`):
- Set `RUNTIME_BASE: web` for APIs, `RUNTIME_BASE: app` for workers.
- Set `PUBLISHED_PROJECT` to the project name.
- Build context is the repo root with `dockerfile: docker/Dockerfile`.
10. Verify the build compiles cleanly.
## Launch Settings Template
```json
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "http://localhost:{HTTP_PORT}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://localhost:{HTTPS_PORT};http://localhost:{HTTP_PORT}",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
```