- ASP.NET Core 8 with C# 12
- Clean Architecture (API, Core, Infrastructure, Shared layers)
- Swagger API documentation
- Structured logging with Serilog
- Azure Application Insights integration
- CORS configuration
- Global error handling middleware
- Dependency Injection
- Entity Framework Core with SQL Server
- Mapster for efficient object mapping
- xUnit for unit testing
- API Rate limiting
src/JobCandidate.Api
: API Controllers, Middleware, and Configurationsrc/JobCandidate.Core
: Business logic, Interfaces, and Domain Modelssrc/JobCandidate.Infrastructure
: Data access, External service integrationssrc/JobCandidate.Shared
: Common utilities, helpers, and constantstest
: Unit tests
- .NET 8 SDK
- Visual Studio 2022 or later / Visual Studio Code
- SQL Server
- Clone the repository
- Install .NET 8 SDK
- Configure
appsettings.json
andappsettings.Production.json
- Run
dotnet restore
to restore dependencies - Run
dotnet run --project src/JobCandidate.Api
to start the application
- Set the
DatabaseProvider
inappsettings.json
to your preferred database
To create and apply database migrations:
dotnet ef migrations add InitialCreate --project src/JobCandidate.Infrastructure --startup-project src/JobCandidate.Api
dotnet ef database update --project src/JobCandidate.Infrastructure --startup-project src/JobCandidate.Api
dotnet test
This project uses GitHub Actions for automated building, testing, and deployment. The pipeline is configured to:
- Build the project
- Run all tests
- Deploy to a staging environment on pushes to the
develop
branch - Deploy to production on pushes to the
main
branch (requires manual approval)
docker build -t job-candidate-api .
docker run -p 8080:8080 job-candidate-api