Location: Amsterdam, Netherlands – hybrid, 2 days per week onsite
About the role
We are looking for a senior freelance Back End Developer to take responsibility for a consumer-facing backend service built on C#, .NET 8 and AWS. This is a hands-on ownership role: you will be accountable for the architecture, releases and production quality of the service, not only for delivering features inside a larger team. You will work with an existing codebase, improve it, and maintain the API contracts that mobile apps and partners rely on.
What you will do
- Own the architecture, release process and production quality of a core backend service.
- Take over and improve an existing codebase, raising its quality, testability and reliability.
- Design and maintain API contracts consumed by clients we do not control (mobile apps, partners), including versioning and backward compatibility.
- Build and maintain partner integrations while keeping third-party types behind clear boundaries.
- Develop and run the service on AWS, with infrastructure as code and automated delivery pipelines.
- Monitor service health and performance, and act on production metrics and alerts.
Experience required
- 7+ years of backend development, of which 5+ years in C# and .NET.
- At least one consumer-facing backend at scale (100k+ active users), where you worked on the core service for 1+ year. Short modules or proofs of concept do not count.
- Proven end-to-end ownership: you were the (lead) developer responsible for architecture, releases and production quality of a service.
- Experience taking over an existing codebase from another team, and the ability to show concretely what you improved.
- Experience designing or maintaining an API contract used by clients you do not control, including versioning and backward compatibility.
Technical skills
.NET and application layer
- C# on .NET 8 and ASP.NET Core MVC: dependency injection and lifetimes, options and configuration, middleware and filters.
- Authentication with several JWT bearer schemes and OpenID Connect.
- MediatR handlers and pipeline behaviours, with FluentValidation.
Integrations and contracts
- Typed HttpClients using IHttpClientFactory and Polly; NSwag-generated REST clients; a GraphQL client.
- Keeping generated partner types behind a boundary rather than letting them spread through the application.
- JSON as a contract: Newtonsoft.Json, polymorphic types with discriminators, enum handling and JSON Schema validation.
Testing
- xUnit, NSubstitute and FluentAssertions.
- Gherkin integration tests (SpecFlow) and WireMock.Net stubs.
- MiniStack for running AWS services locally and in CI.
AWS and delivery
- ECS Fargate and a .NET Lambda triggered by SQS.
- DynamoDB, Redis, SNS and SQS.
- Parameter Store and Secrets Manager.
- Terraform and GitLab CI.
- Health checks and Datadog metrics.