Technology
The technology we build with
We build with a small set of proven technologies that we use across our own products and client systems: TypeScript and React in the browser, Python, Node.js and PHP on the server, PostgreSQL for data. The list below includes only what runs in code we have written.
Frontend
Interfaces for websites, portals and apps, fast to load and typed end to end.
- React
- Next.js App Router, static and incremental rendering
- TypeScript
- Tailwind CSS
- Vite
- Astro
- Remix
- TanStack Query
- TipTap rich-text editing
Backend
APIs, business logic and background jobs in Python, Node.js and PHP.
- Python
- FastAPI
- Node.js
- Laravel PHP
- NestJS
- Fastify
- SQLAlchemy & Alembic data access and versioned migrations
- BullMQ, APScheduler job queues and scheduled tasks
Data & storage
PostgreSQL for almost everything, with caching, analytics and file storage around it.
- PostgreSQL incl. row-level security for multi-tenant SaaS
- Redis
- SQLite
- DuckDB analytics over large exports
- Git-versioned datasets YAML and CSV compiled at build time, no runtime database
- Object storage (AWS S3, Vercel Blob)
Cloud & hosting
Containerized deployments on the platform that suits the data, the load and the budget.
- Docker
- Vercel
- Hetzner Cloud
- AWS S3, Bedrock, cost and governance APIs
- Nginx
- Let's Encrypt
- Fly.io
APIs & integration
Documented interfaces between systems, including servers that AI agents can query.
- REST & OpenAPI
- MCP servers read-only tools for AI agents
- Webhooks signed, verified, with retries
- OAuth 2.0
- GraphQL
- JSON Schema
- Server-Sent Events
- JWT & API keys
CMS & content
Content that editors can update and search engines can read, in one language or several.
- MDX
- Git-based content editorial calendar, date-gated publishing
- Astro
- WordPress plugin development, Elementor widgets
- Multilingual sites with hreflang
CRM & e-commerce
Integrations that move orders, subscriptions and contacts into the systems sales teams use.
- Shopify custom apps, Flow extensions, app billing
- WooCommerce orders synced to CRM deals
- Stripe Billing subscription data synced to the CRM
- CRM platform APIs contacts, deals, pipelines
- Affiliate-tracking platforms
Email & messaging
Transactional and outreach email, WhatsApp messaging and the DNS records that decide deliverability.
- SMTP & IMAP sending, reply and bounce tracking
- Transactional email APIs
- WhatsApp Business via provider APIs
- MJML responsive HTML email
- SPF, DKIM, DMARC, BIMI
- Email verification APIs
AI
Language models from several providers, wrapped in validation, fallbacks and cost limits.
- Anthropic Claude API
- Google Gemini API
- OpenAI API
- AWS Bedrock fallback provider
- Model Context Protocol (MCP)
- LLM guardrails output validation, cost ceilings, logged provenance
SEO & analytics
Technical SEO and GEO signals built into the code, plus the analytics to measure what works.
- Schema.org JSON-LD
- XML sitemaps
- hreflang
- llms.txt
- IndexNow
- Generated Open Graph images
- Vercel Web Analytics
- PostHog
Quality & DevOps
Automated tests, CI pipelines and monitoring before and after every release.
- Vitest
- pytest
- Playwright end-to-end tests on desktop and mobile
- GitLab CI
- GitHub Actions
- axe-core accessibility checks
- Sentry
- OpenTelemetry
How do we choose technology?
We pick the tool that a competent team will still be able to maintain in five years, then check it against the project’s data, load and budget. For most business systems that means a mainstream framework, a typed language, PostgreSQL and automated tests. New technology gets a place only where it solves a problem the proven options cannot.
In practice, a few rules decide most choices:
- Boring where it should be. Authentication, payments, data storage and backups use proven libraries and well-documented services. That is not the place for experiments.
- Frameworks with a long track record. React, Next.js, FastAPI, Laravel and PostgreSQL have large communities, regular security releases and plenty of developers who know them. Your system does not depend on us alone.
- Typed code and validated boundaries. We write TypeScript and typed Python, and we validate every input that crosses a boundary (forms, APIs, webhooks, imported files) against a schema with Zod or JSON Schema. That stops a whole class of bugs before they reach production.
- Tests that run on every change. Unit and integration tests with Vitest and pytest, end-to-end tests with Playwright, and CI pipelines that block a release when something fails.
- Hosting chosen by the data. Public websites can run on a global platform. Systems that process personal or sensitive data can run in Switzerland or the EU, in line with the revised Swiss Federal Act on Data Protection (FADP) and the GDPR. Docker keeps that decision reversible.
- Fit with your team. If your developers already know PHP and Laravel, we will not push you to Python. The best stack is often the one your people can support.
What about new technology?
We adopt new tools when they answer a concrete need. The Model Context Protocol (MCP) is a recent example: when AI agents needed to read structured data directly, we built a read-only MCP server next to the public REST API of PingMyUsers instead of expecting agents to scrape web pages. Language models from Anthropic, OpenAI and Google are another: we use them inside processes, with output validation and cost limits, as described on AI & Automation.
Why is this list shorter than a typical logo wall?
Because every entry on this page appears in code we wrote and run: in our own products, in client platforms or in integrations we built. We do not list tools we have only read about. If your project needs something that is not here, we will say so openly and tell you how we would approach it.
Tell us about your project
A Swiss technology company in Lugano.