Hi, I’m Miro Ostafinski
Full Stack Developer
I build full-stack TypeScript web apps — Next.js, React and Node, from database to UI.

About
Full-stack TypeScript developer with 4+ years of commercial experience building modern web applications end to end — from type-safe APIs and PostgreSQL data models through to polished, responsive React interfaces. I've worked on everything from high-traffic public sector platforms to secure internal business systems, and I care most about writing code that's clean, maintainable, and reliable in production. My core stack: TypeScript, Next.js, React, Node.js, PostgreSQL and Tailwind CSS.
ExperienceExperienceExperience
Feb 2026 – Present
TaxAssist Group
Aug 2022 – Nov 2025
Studio 24
Jan 2022 – May 2022
intive
- 01. Frontend engineering
- React, Next.js and TypeScript for fast, responsive interfaces. Comfortable with Tailwind CSS, SCSS, component libraries, state management and modern build tooling (Vite, Turborepo). I also keep markup semantic and follow WCAG guidelines where projects call for it.
- 02. Backend & data
- Type-safe APIs with Node.js, Express and Hono, plus PHP/Laravel on legacy stacks. Data modelling and queries in PostgreSQL and MongoDB, authentication with Better Auth, and CMS integration (Payload, Directus, WordPress, Craft).
- 03. Testing & code quality
- Automated testing with Jest and Playwright, Git-based workflows with code review, and comfortable working within CI/CD pipelines. I care about performance, maintainability and shipping code that stays reliable as a codebase grows.
- 04. Collaboration & communication
- Clear written and verbal communication, comfortable working directly with clients and cross-functional teams. Able to own a feature end to end, break work into deliverable slices, and keep stakeholders informed — proven on high-traffic public sector and culture platforms (UK Parliament, HS2, W3C, The Fitzwilliam Museum).
Work & Projects
Selected projects across the public sector, culture, charity and e-commerce — high-traffic sites built to stay accessible and editable by the teams who run them.
UK Parliament
Front-end work across the UK Parliament estate, including UK Parliament Week and the Parliament education service. Theme templates and ACF-driven content blocks with WCAG-compliant markup, serving schools, community groups and the wider public at national scale.
The Fitzwilliam Museum
Templates, layouts and interactive components for a high-traffic museum website — visit planning, exhibition listings and the online collection.
Kinship
Front-end build for the leading UK kinship care charity: advice and information journeys, workshop and event listings, campaign pages for #ValueOurLove and donation entry points, assembled from ACF content blocks the team edits themselves. Built for carers under pressure, so clarity and accessibility came first.
HS2
Front-end for the corporate site of Britain's high-speed rail programme, plus The Core — the Safe at Heart resources hub for HS2 staff and supply chain. Templates and ACF blocks covering construction updates, community and supplier information, and a members-only library of health and safety best practice.
Syrris
Front-end for a scientific instrument manufacturer — flow and batch chemistry reactor systems across product, application and support sections, built as ACF blocks and translated through WPML.
Barcham Trees
Store front-end for a specialist container-grown tree nursery: a faceted catalogue of 450+ trees filtered by type, shape and height, size-based pricing with bulk discount tiers, product galleries with growing data, an accessories range and the basket and checkout flow.
Writing
Notes on web development, JavaScript and building for the web.
Next.js 16 caching, finally explained like a normal person
Cache Components and the 'use cache' directive replace years of confusing caching rules with one simple question: how fresh does this part of the page need to be?
Server Actions feel private. They aren't.
Next.js Server Actions look like ordinary functions, but every one of them is reachable from the internet. Here's the mindset shift, and a checklist to keep them safe.
You probably don't need that useEffect
The most misused tool in React, explained with everyday examples — and the simpler patterns that replace it in most cases.
Contact Me
Have a question? Just drop me a line via email. I'm always open to hearing about interesting projects and ideas.





