BCards/AGENTS.md

2.7 KiB

Repository Guidelines

Project Structure & Module Organization

  • src/BCards.Web is the main MVC app (Controllers, Services, Repositories, Razor Views, wwwroot assets).
  • src/BCards.IntegrationTests spins up the site with fixtures for API-level checks.
  • tests/BCards.Tests hosts xUnit + Moq unit coverage with overrides in appsettings.Testing.json.
  • tests.e2e carries Playwright specs and config; utility scripts live under scripts/, with clean-build.sh mirroring CI cleanup.

Build, Test & Development Commands

  • dotnet restore && dotnet build BCards.sln primes dependencies and compiles.
  • dotnet run --project src/BCards.Web launches the site (HTTPS on 5001 by default).
  • dotnet test executes unit + integration suites; add --collect:"XPlat Code Coverage" to emit coverlet results.
  • In tests.e2e, run npm install once and npx playwright test per change; append --headed when debugging flows.
  • ./clean-build.sh removes stale bin/obj output before CI or release builds.

Coding Style & Naming Conventions

  • Use 4-space indents, file-scoped namespaces, PascalCase for types, camelCase for locals, and _camelCase for DI fields.
  • Keep Razor views presentation-only; push logic into Services, ViewModels, or TagHelpers.
  • Store localization strings in Resources/, shared UI in Views/Shared, and bundle-ready assets in wwwroot.
  • Run dotnet format before pushing; .NET 8 analyzers treat warnings as errors in the pipeline.

Testing Guidelines

  • Mirror namespaces when creating unit files (FooServiceTests for FooService) and favour FluentAssertions for expressiveness.
  • Integration scenarios reside in src/BCards.IntegrationTests/Tests; use shared fixtures to mock MongoDB/Stripe without polluting global state.
  • End-to-end cases focus on signup, checkout, and profile rendering; keep snapshots in tests.e2e/debug_*.
  • Target ≥80% coverage across Services/ and Repositories/; call out gaps explicitly in the PR body.

Commit & Pull Request Guidelines

  • Follow the observed type: resumo format (feat: artigos & tutoriais, fix: checkout); keep scopes short, Portuguese when public-facing.
  • Squash WIP branches before review; one functional change per commit.
  • Every PR needs a summary, verification list (dotnet test, Playwright when touched), related issue link, and UI artifacts when visuals change.
  • Tag a module expert for review and flip the Ready for QA label only after E2E automation passes.

Security & Configuration Notes

  • Keep secrets out of version control; base new configs on appsettings.Production.example.json and document required keys.
  • When callback URLs move, update both the environment files (Dockerfile, docker-compose*.yml) and external provider dashboards together.