I build web products with the whole system in mind.
I'm Mohammad Afsari, a senior full-stack engineer. I like working across the whole system, from the database schema to the buttons people press.
For most of the last decade I've built web products end to end. That covers data models and APIs, the infrastructure they run on, and the front-end work that decides whether people enjoy using the result. Much of the job is balancing what the product needs against what the system can support.
I do my best work on problems with real constraints: a service that has to stay up, a codebase other people need to understand, a team that has to keep shipping. I choose tools that will still make sense in two years over whatever is newest.
Day to day I write TypeScript across the stack. React and Next.js on the front end, Node services behind them, PostgreSQL for data, and infrastructure defined in code so nothing lives only in someone's head. I've worked alone and in teams, on new builds and on old codebases, and I'm happy to own a feature from the first sketch through to being on call for it.
AI coding agents are part of how I build software. I use them alongside clear specifications, tests and code review, and set up the context and guardrails they need to work effectively. I stay responsible for the technical decisions and the code that ships.
Outside work I read about systems design and build side projects, most of which never ship.
What I use
Frontend
Fast, accessible interfaces.
- TypeScript
- JavaScript
- React
- Next.js
- Astro
- HTML & CSS
- Accessibility
Backend
APIs and data models.
- Node
- Express
- Fastify
- PostgreSQL
- SSMS
- Redis
- MongoDB
Infra & DevOps
Repeatable deployments.
- AWS
- Azure
- Terraform
- Docker
- CI/CD
Tooling & CMS
Day-to-day tooling.
- Supabase
- Contentful
- Git
- Testing
- Amplience
- DatoCMS
- Algolia
- Commercetools
- Storybook
- Prisma
- Drizzle
Where I've worked
2025 to present
Senior Full Stack Engineer · Legal 500
Developing and maintaining Legal 500 while helping migrate its legacy WordPress platform. Building analytics and internal migration tooling, and leading the Mondaq team as mondaq.com integrates with Legal 500 following its acquisition.
2022 to 2025
Full Stack Engineer · Frasers Group
Built features across ecommerce storefronts and services using Amplience, Algolia and commercetools. Improved content delivery with Redis caching, supported brand and international site launches, and worked with stakeholders to deliver tested features across the product roadmap.
2021 to 2022
Full Stack Engineer · Cognizant
Worked with European Tyre Enterprise to cleanse and transform data for Salesforce and business intelligence platforms. Built an internal management tool to help wholesalers access customer address information across the UK.
2019 to 2021
Software Engineer · Mott MacDonald
Helped rebuild a legacy system for Highways England, developing reporting pages, migrating data and creating Power BI dashboards. Also maintained the client's landing page as part of the wider redevelopment.
2017 to 2019
Graduate Engineer · Mott MacDonald
Developed data migration algorithms for Highways England, transferring geotechnical records from its existing HAGDMS database management system to the replacement GDMS platform.
How I work
Predictable over impressive
I'd rather run a system nobody has to think about than one that looks clever.
Write for the next reader
Code gets read far more often than it gets written, so I write for the reader and use comments to explain why.
Ship early, then improve
Put something working in front of users, then improve it based on what they actually do.
Want to work together?
I'm available for freelance and contract work. Send me a short note about what you're building.