Idea to production, and everything that keeps it running.
Web, mobile, AI, SaaS, backend, UI/UX implementation, DevOps and legacy modernisation — what each engagement covers and what it delivers.
What I can be hired to do.
Eight engagements, one operating model: understand the outcome, design the system, ship it, then keep it healthy.
Full products in Next.js and React — the interface, the API routes behind it, and the database underneath. Server-rendered where it helps performance and search, client-driven where it helps interaction, decided per route rather than by dogma.
- Next.js
- React
- TypeScript
- PostgreSQL
Typical deliverables
- Typed component system and design tokens
- Authentication and role-based access
- Responsive down to 320px, tested on real devices
AI is part of the toolchain, not the pitch.
It has changed how I write, refactor and review code — and not at all who is accountable for the result. Here is where it genuinely earns its place.
AI-assisted development
Cursor and similar assistants handle the parts of the job that are typing rather than thinking — scaffolding a component, wiring a form, converting a design into markup. Every generated line is read before it lands, because the person who merges it owns it.
How it runs
- Describe
- Generate
- Read
- Adjust
- Commit
Typical components
- Cursor
- TypeScript
- Git
Every item here describes how the work gets done, not a claim to have trained the models. The judgement about what to build, and whether the output is correct, stays with a person.
How the work actually runs.
Eight stages, in order. The early ones are cheap and decide most of the cost; the late ones are where everyone else starts.
Step 01: Discover
Understand the business outcome, the users, the constraints, and which deadline is real versus aspirational.
Outputs
- Problem statement
- Success metrics
- Constraint map
Step 02: Plan
Scope the smallest version that proves the thesis, then sequence everything else behind it. Cut before building, not after.
Outputs
- Scoped milestones
- Risk register
- Estimate range
Step 03: Architect
Decide the data model, the service boundaries and the failure modes. Most of the lifetime cost of a system is committed here.
Outputs
- Data model
- System diagram
- Decision records
Step 04: Design
Turn flows into interfaces — states, empty cases, errors and responsive behaviour, not just the happy-path screen.
Outputs
- Component inventory
- Interaction spec
- Design tokens
Step 05: Develop
Build in reviewable increments against a working trunk. Every branch deploys to a preview URL you can click.
Outputs
- Preview deploys
- Typed APIs
- Weekly demo
Step 06: Test
Automate the paths that would embarrass us in production, and manually probe the ones that are hard to describe to a machine.
Outputs
- Test suite in CI
- Accessibility pass
- Load profile
Step 07: Deploy
Ship behind flags, migrate forward-compatibly, watch the dashboards, and keep the rollback one command away.
Outputs
- Release pipeline
- Runbook
- Monitoring and alerts
Step 08: Scale
Let real usage set the priorities. Profile the slow thing, cache the hot thing, delete the thing nobody used.
Outputs
- Performance report
- Cost review
- Next-quarter roadmap
