We choose technology based on the product, not the trend.
Every stack decision starts from the requirements: who uses the software, how it needs to scale, what it integrates with and who will maintain it. The areas below describe where we work; the specific choices depend on the project.
Engineered in layers, built to change.
Systems are designed as clear, separate layers with explicit contracts between them. Each layer can be tested, scaled and replaced on its own.
Where we work, layer by layer.
Typical technologies are listed as examples of what we use, not as a requirement. If an existing system already uses a different stack, we work with it.
Web and mobile applications
Responsive web interfaces, native iOS apps, admin tools and design systems built for clarity and accessibility.
- TypeScript
- React
- Swift / SwiftUI
- Design systems
- Accessibility
Services and contracts
Business logic, APIs and background processing with clear boundaries and documentation.
- Node.js
- Python
- REST
- GraphQL
- Queues
Models and storage
Data models designed around the business, with migrations, reporting and retention planned in.
- PostgreSQL
- Caching
- Data pipelines
- Reporting
Infrastructure
Reproducible environments, automated releases and visibility into how software behaves in production.
- Infrastructure as code
- Containers
- CI/CD
- Monitoring
Connected systems
Reliable connections between applications, with retries, logging and alerts built in.
- Webhooks
- Third-party APIs
- Scheduled jobs
- Event handling
Decentralised components
Depending on project requirements, relevant technologies and concepts include:
- Smart contracts
- Smart contract audits
- Solidity
- EVM-compatible networks
- Web3 application integration
- Wallet integration
- Blockchain RPC infrastructure
- On-chain data
- Indexing
- Transaction signing
- Decentralised application architecture
Blockchain is an engineering tool, not a requirement. We use it where decentralisation, verifiable ownership or on-chain logic provides a real advantage.
The same standards in every layer.
These practices apply to every project and every technology, from an internal tool to a smart contract integration.
Requirements before tools
The problem, the users and the constraints decide the stack. Familiarity alone does not.
Reviewed and tested
Version control, code review and automated tests on every change that reaches production.
Secure by default
Least-privilege access, managed secrets, dependency updates and encrypted connections as a baseline.
Built to be maintained
Readable code, documentation and proven technology for core systems, so software stays easy to change.
