The stack is only the start.
Frameworks come and go. What makes software last is how it is structured, tested and understood. This is what we work with today, and how we decide.
Six layers of a product, and what we use for each.
Frontend
Everything people see and touch in the browser.
The frontend decides how fast a product feels and how easily search engines can read it. The right choice keeps pages quick as features are added.
- React
- Component-based interfaces that stay maintainable as a product grows.
- Next.js
- Server-rendered React for products that need to be fast and searchable.
- TypeScript
- Typed code that catches mistakes before your users can.
Backend
The logic, APIs and integrations behind the interface.
The backend carries your business rules. A well-structured one makes new features cheap and keeps the product stable when usage climbs.
- Node.js
- Fast, event-driven services and APIs that share a language with the frontend.
- NestJS
- Structured, testable Node.js architecture for larger systems and teams.
- .NET
- Enterprise-grade services, especially where they meet existing Microsoft systems.
Mobile
Apps on the devices people carry all day.
The mobile stack shapes cost, speed of delivery and how the app feels in the hand. It is a product decision as much as a technical one.
- Flutter
- One codebase for iOS and Android with a consistent, custom interface.
- React Native
- Cross-platform apps that share skills and logic with a React web product.
- Native iOS
- When the product depends on Apple platform capabilities or peak performance.
- Native Android
- When the product needs deep device integration across Android hardware.
AI / ML
The parts of a product that read, see, predict and decide.
AI choices affect accuracy, running cost and how much you depend on a single provider. We choose for the task and keep the option to change.
- Python
- The working language of machine learning, data pipelines and model serving.
- AI APIs
- Language and vision models integrated into products and workflows.
- Machine learning models
- Models trained on your own data for prediction, ranking and classification.
- Computer vision
- Detection, inspection and document understanding from images and video.
Databases
Where your product's information lives and stays correct.
Data outlives code. The right model keeps information consistent, queries fast and future reporting possible.
- PostgreSQL
- A dependable relational default for structured data and complex queries.
- MySQL
- Proven relational storage, often the right fit alongside existing systems.
- MongoDB
- Flexible document storage for data whose shape changes often.
Cloud & Infrastructure
Where the product runs, scales and recovers.
Infrastructure decides reliability and running cost. We fit the platform to your scale, your team and any systems you already use.
- AWS
- Broad, mature infrastructure for products that need room to scale.
- Azure
- A natural fit for organisations already built around Microsoft.
- GCP
- Strong data and machine-learning services alongside general infrastructure.
- Firebase
- Managed backend services that get mobile and real-time products live quickly.
- Supabase
- A managed PostgreSQL backend with authentication and storage built in.
How we choose.
Four rules applied to every technology decision, on every project.
Fit the problem
We choose technology for what the product has to do, the team that will own it and the systems it has to live beside.
Prefer the proven
Widely used tools have known limits, good documentation and people who can maintain them. New is not a reason on its own.
Keep options open
Clear boundaries between layers mean one part can be replaced without rewriting the rest.
Write down why
Each significant choice is recorded with its reasoning, so the decision still makes sense to whoever reads it later.