Full Stack Developer
Role details
Job location
Tech stack
Job description
Reporting to the CTO, as a Full Stack Developer you will work across the full platform - a modular monolith built in .NET 10 on the backend and React on the frontend. You will own features from requirement to production, working in a small, high-trust team where your decisions have direct product impact., * Build and extend modules within a clean modular monolith architecture - Domain, Application, Infrastructure, and API layers per module
-
Implement message-based integrations over RabbitMQ and HTTP, with proper retry, dead-letter, and observability patterns
-
Design and own PostgreSQL schemas, migrations (Liquibase), and query optimisation for compliance-grade data integrity
-
Write code test-first - unit tests, integration tests with in-memory and real DB where appropriate, and end-to-end API tests
-
Contribute to and enforce coding standards, PR reviews, and architectural decisions.
Frontend (React / TypeScript)
-
Build complex, accessible UI components and multi-path forms for compliance workflows
-
Maintain consistency with our design system and work closely with our UX designer on new feature implementation
-
Integrate with the backend via typed API contracts, handling loading states, error boundaries, and optimistic updates correctly
AI-Augmented Development
-
Use Claude Code as an active development tool - you will work with CLAUDE.md, SKILLS.md, and RULES.md context files to give the AI accurate codebase context
-
Translate Jira requirements and Notion design documents into structured Claude Code prompts that produce high-quality, testable code
-
Maintain and improve the Claude Code context layer as the codebase evolves, treating it as first-class documentation
-
Evaluate AI-generated code with the same rigour as human-written code - you own the output
Platform & Deployment
-
Build and maintain Docker images for all services, following security and size best practices
-
Deploy and manage workloads on Kubernetes clusters - writing and reviewing manifests, Helm charts, and managing config/secrets
-
Collaborate with DevOps on CI/CD pipelines, environment configuration, and production readiness
-
Participate in on-call rotation for production incidents (light, given our scale).
Requirements
Must-have
-
4+ years of professional .NET development (C#), with strong understanding of clean architecture and SOLID principles
-
Solid React and TypeScript experience - you write components that are readable, testable, and maintainable
-
Genuine TDD discipline - you write tests before or alongside code, not as an afterthought; you understand the difference between unit, integration, and end-to-end tests
-
Hands-on experience with RabbitMQ or similar message brokers in production systems
-
PostgreSQL proficiency - schema design, migrations, query analysis, and indexing
-
Practical Kubernetes experience - you can read and write manifests, understand pod scheduling, and debug deployment issues
-
Docker fluency - you build lean, layered images and understand multi-stage builds
-
Experience working in or contributing to a modular monolith or DDD-influenced codebase
-
Strong English communication skills - written and verbal
Strong advantage
-
Experience using Claude Code, GitHub Copilot, or similar AI coding assistants as a genuine productivity tool in a professional codebase
-
Familiarity with structuring AI context files (CLAUDE.md-style) to guide code generation effectively
-
Experience with GCP (Cloud Run, Cloud Storage, Pub/Sub, Vertex AI)
-
Playwright or similar e2e test framework experience
-
Exposure to knowledge graphs, Neo4j, or graph-based data modelling
Benefits & conditions
We are direct about what we expect. These are not aspirational values - they are how we work:
-
Test coverage is a delivery requirement, not a nice-to-have. Core business logic ships with tests.
-
PR reviews are substantive. We comment on architecture, not just typos.
-
We use AI tooling to move faster, not to lower the quality bar. AI-generated code gets reviewed like any other code.
-
We document decisions. ADRs, Notion pages, and Claude Code context files are part of the job.
-
We raise issues early. A blocker surfaced on day one beats a missed deadline on day ten.