BUSINESS 02 — DEVELOPMENT
Security is not a feature you add later
Authentication, authorisation, audit logging and secret management are settled in the architecture draft. Added the week before launch, something is always missing.
Services
-
Platform delivery
Next.js front ends with domain-separated back ends. Anything that can ship statically ships statically, to cut operational load.
-
Legacy modernisation
Strangler-pattern migration, feature by feature, running old and new side by side while traffic shifts.
-
API design
Permission model and audit requirements are fixed before endpoints are drawn. Schemas are managed as contracts.
-
Identity and access
OIDC single sign-on, role-based permissions and MFA. Where duties must be separated, the system enforces it.
-
Performance budgets
LCP, INP and CLS targets are numbers agreed at kickoff and gated in CI. Optimising after launch mostly fails.
-
Infrastructure as code
Everything in Terraform. Resources created in a console cannot be understood by the next person.
Stack
On the front end we pick Next.js or a static generator based on the workload. Attaching server rendering to a content site is usually pure operational cost.
Back ends are split along domain boundaries. We do not recommend microservices at a scale a monolith handles. Splitting brings distributed transactions and observability cost with it, and below a certain team size that makes delivery slower, not faster.
Defaults
- TypeScript in strict mode, no exceptions
- AWS infrastructure (Lambda, DynamoDB, CloudFront, S3)
- Full Terraform coverage
- GitHub Actions CI with deployment kept separate
- Distributed tracing via OpenTelemetry
Handover
We do not hand over code alone. Architecture decision records, an operations runbook and incident scenarios go with it, plus two weeks of shadow operation.
Not sure where to start?
Describe your current structure and the problem, and we will map a migration path. Initial consultation is free.