Description
About Us
Appnovation is a global, full-service digital partner that combines Strategy, Experience & Design, Engineering and Managed Services.
We build digital solutions that deliver real impact today and serve as foundations for future growth.
Bold ambition.
Practical action.
Endless possibilities.
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.
Key Responsibilities
Developing and maintaining .NET Core REST APIs, including versioning, validation, error semantics, and Swagger/OpenAPI documentationImplementing Temporal workflows and activities for long-running, multi-step business processes with correct retry and compensation behaviourBuilding worker services for background, scheduled, and queue-driven asynchronous processingWriting integration services that publish and consume events over pub/sub, against clearly defined message contractsModelling and querying relational data in PostgreSQL using Entity Framework Core, including migrations and query performance tuningBuilding and maintaining reporting and analytics data paths into ClickHouseEnforcing authorization in application code against OpenFGA policies, and integrating with Keycloak for OAuth 2.0 / OpenID Connect authentication and SSOProducing technical analysis and implementation plans for significant changes, and delivering work in small, reviewable merge requestsWriting unit, integration, and API tests, and contributing to the Playwright end-to-end suite where backend behaviour is under testParticipating in code review, responding to CodeRabbit findings, and keeping GitLab CI/CD pipelines greenInstrumenting services with logging, metrics, and tracing to support production diagnosisParticipating in refinement, planning, review, and retrospective as a member of a self-directed scrum team, and raising missing business decisions earlyTaking ownership of feature areas end to end, from technical design through release and supportMaintaining technical implementation and API documentation as part of the definition of done, not after itResolving defects and supporting post-release stabilization of recently delivered functionalityMentoring less experienced engineers through code review and pairing
What we are looking for
Must-Have
At least 5-7 years of professional backend development experience with C# and .NET in production environmentsStrong command of .NET Core, ASP.NET Core Web API, and Entity Framework CoreDemonstrated experience building RESTful APIs consumed by real frontend or third-party clientsSolid relational data modelling and SQL skills in PostgreSQL or an equivalent RDBMS, including query performance tuningPractical experience with asynchronous processing - background workers, message queues, or scheduled jobsWorking understanding of async/await in .NET and the failure modes that come with itUnderstanding of event-driven and pub/sub patterns, including at-least-once delivery and idempotent consumersExperience integrating with an identity provider using OAuth 2.0 and OpenID ConnectComfortable working inside an existing codebase and an established set of engineering standards, rather than setting your ownDisciplined approach to automated testing across unit, integration, and API layersUnderstanding of what makes automated tests durable - avoiding hard-coded waits, brittle selectors, shared test state, and environment-specific assumptionsComfortable working in a Git-based workflow with CI/CD and peer code reviewMust be located in British Columbia, Canada
Technologies
Languages/Frameworks: C#, .NET Core, ASP.NET Core, Entity Framework CoreAPIs: REST, OpenAPI/Swagger, API versioningWorkflow and Async: Temporal workflows, worker services, asynchronous processing, event-driven pub/sub, integration servicesDatabases: PostgreSQL, ClickHouse, EF Core migrations, query optimizationIdentity and Authorization: Keycloak, OpenFGA, OAuth 2.0, OpenID Connect, role- and policy-based authorizationTesting: xUnit/NUnit, Moq, Testcontainers, unit, integration and API testing, Playwright end-to-end testingBuild/Deploy/Tooling: GitLab, GitLab CI/CD, CodeRabbit automated code review, Docker, Jira, Confluence
Nice-to-Have
Hands-on Temporal experience, including workflow versioning and testing strategiesExposure to ClickHouse or another columnar/OLAP store for reporting workloadsFamiliarity with fine-grained authorization models (OpenFGA, Zanzibar-style ReBAC)Working knowledge of TypeScript and React, enough to trace an issue across the stackExperience with distributed tracing and structured observability (OpenTelemetry)Familiarity with Domain-Driven Design and CQRS patternsSaaS product delivery experience, particularly through a pilot-to-GA transitionExperience with Canadian public-sector or education data privacy requirements (PIPEDA, provincial FIPPA), including data residency considerationsExperience in a consulting or client-facing delivery environment
Who You Are
You are a careful engineer who thinks about failure modes before writing the happy path, and who leaves code easier to change than you found it.You ask questions early, communicate clearly when something is off track, and take testing seriously rather than treating it as a step after the work.You treat a feature as incomplete until it is tested, documented, and supportable - finishing the code is the middle of the job, not the end.
What Appnovation Offers
Challenging and rewarding work with real impactDirect Access to Cutting-Edge AI PlatformsDiverse and Inclusive CultureGrowth opportunities for personal and professional developmentA collaborative and innovative work environment where your ideas are valuedExposure to exciting projects and high-profile clientsSupportive work environment with access to company leadersHybrid working model
Thank you for your interest in a career with Appnovation Technologies! Please note that only those selected for an interview will be contacted.
At Appnovation, we recognize that diverse teams are the strongest teams.
Diversity, Equity & Inclusion is not only something that we embrace - we celebrate it! We are proud to be an Equal Opportunity Employer and we encourage applicants from all backgrounds, lived experiences and industries to apply.
Come join us at Appnovation, and learn more about how we stay true to our company values as we build better lives through better digital.
Accommodations are available upon request throughout the recruitment process.