Appnovation
Backend Developer (.NET)
Senior backend engineer building .NET Core REST APIs, Temporal workflows, and async worker/event services for a multi-tenant K-12 education SaaS platform, embedded in the client's engineering org. Core stack: C#/.NET, PostgreSQL, ClickHouse, Keycloak/OpenFGA, GitLab CI/CD.
- Compensation
- Not disclosed
- Location
- Vancouver, Canada
- Work setup
- Not specified
- Seniority
- Not specified
- Employment
- Not specified
- Experience
- 5+ years
- Category
- Backend
- Posted
Skills
Must have
- Strong command of .NET Core, ASP.NET Core Web API, and Entity Framework Core
- 5-7+ years professional backend development experience with C# and .NET in production
- Demonstrated experience building RESTful APIs consumed by real frontend or third-party clients
- Must be located in British Columbia, Canada
- Experience integrating with an identity provider using OAuth 2.0 and OpenID Connect
- Comfortable working in a Git-based workflow with CI/CD and peer code review
- Understanding of event-driven and pub/sub patterns, including at-least-once delivery and idempotent consumers
- Practical experience with asynchronous processing (background workers, message queues, scheduled jobs)
- Comfortable working inside an existing codebase and established engineering standards
- Understanding of what makes automated tests durable (no hard-coded waits, brittle selectors, shared test state)
- Solid relational data modelling and SQL skills in PostgreSQL or equivalent RDBMS, including query performance tuning
- Working understanding of async/await in .NET and its failure modes
- Disciplined approach to automated testing across unit, integration, and API layers
- Communicates clearly, raises issues early, and takes testing seriously
- Treats a feature as incomplete until tested, documented, and supportable
- Careful engineer who considers failure modes before the happy path
Nice to have
- Hands-on Temporal experience, including workflow versioning and testing strategies
- Exposure to ClickHouse or another columnar/OLAP store for reporting workloads
- Working knowledge of TypeScript and React, enough to trace an issue across the stack
- Familiarity with fine-grained authorization models (OpenFGA, Zanzibar-style ReBAC)
- Familiarity with Domain-Driven Design and CQRS patterns
- Experience with distributed tracing and structured observability (OpenTelemetry)
- SaaS product delivery experience, particularly through a pilot-to-GA transition
- Experience with Canadian public-sector or education data privacy requirements (PIPEDA, provincial FIPPA), including data residency
- Experience in a consulting or client-facing delivery environment
Full description
- As a Senior Software Engineer - Backend, you will build the .NET services that carry the core business logic of a modern operational SaaS platform for K-12 education
- The platform automates administrative processes for school divisions, so the backend work is workflow-heavy and integration-heavy: you will develop REST APIs consumed by a Next
- Js frontend, implement durable multi-step business processes as Temporal workflows, build worker services for asynchronous and scheduled processing, and write the integration services that publish and consume events across system boundaries
- You will work as part of a dedicated, cross-functional scrum team that operates as an embedded extension of the client’s engineering organization
- The team includes business analysis and QA capability and owns assigned product services end-to-end - from refinement through development, testing, documentation, and release readiness
- You will work directly in the client’s repositories, follow their established architecture and engineering standards, and deliver in small, reviewable increments
- The data layer spans a PostgreSQL transactional model and a ClickHouse analytics store, with authorization enforced through Keycloak and OpenFGA - a real requirement in a multi-tenant product where an administrator in one school division must never see another’s data
- The platform is moving from pilot deployments toward general availability, so this is a role for a senior engineer who cares about correctness in distributed systems - idempotency, retries, and what happens when the third call fails - and who is ready to own significant slices of the platform with minimal supervision
- Developing and maintaining .NET Core REST APIs, including versioning, validation, error semantics, and Swagger/OpenAPI documentation
- Implementing Temporal workflows and activities for long-running, multi-step business processes with correct retry and compensation behaviour
- Building worker services for background, scheduled, and queue-driven asynchronous processing
- Writing integration services that publish and consume events over pub/sub, against clearly defined message contracts
- Modelling and querying relational data in PostgreSQL using Entity Framework Core, including migrations and query performance tuning
- Building and maintaining reporting and analytics data paths into ClickHouse
- Enforcing authorization in application code against OpenFGA policies, and integrating with Keycloak for OAuth 2.0 / OpenID Connect authentication and SSO
- Producing technical analysis and implementation plans for significant changes, and delivering work in small, reviewable merge requests
- Writing unit, integration, and API tests, and contributing to the Playwright end-to-end suite where backend behaviour is under test
- Participating in code review, responding to CodeRabbit findings, and keeping GitLab CI/CD pipelines green