The tools we stake our taste on
A living compass of the languages, platforms and techniques we use every day. Updated quarterly. If you spot something we should reconsider — tell us.
Default choice. We have shipped production with this and keep doing so.
Actively used on new projects. We're comfortable but still learning.
Watching closely, running small experiments before committing.
Not our default. Use only when a client already has it or a specific reason exists.
Languages & Frameworks
Next.js 15 App Router
AdoptDefault for every new web app. Server components + server actions are where we live.
TypeScript (strict)
AdoptStrict mode only. No `any` in production code.
React 19
TrialShipping on new projects; watching edge cases around Actions and `use` hook.
Tailwind CSS + shadcn/ui
AdoptFast, opinionated, exportable. Replaces ad-hoc CSS-in-JS.
React Native (Expo)
AdoptDefault for cross-platform mobile. OTA updates are a killer feature.
Remix
HoldWe prefer Next.js App Router for new work after Remix merged with React Router.
Platforms & Infra
Hetzner + Coolify
AdoptOur production target. One CX32 hosts wedece.com plus client sites. Image-from-GHCR + webhook deploy. Boring-reliable.
Vercel
TrialFirst-class Next.js DX, but we moved our own site off it for cost. Still a fine default for clients without infra needs.
Cloudflare Workers + Pages
TrialUnlimited bandwidth; using for edge functions, DNS and image CDN.
Supabase
AdoptPostgres + Auth + realtime + storage. Default when a client needs a managed DB.
Firebase App Hosting
HoldRemoved entirely from our stack — lead delivery is on Telegram, no database, no Firestore.
AI & Data
Anthropic Claude (API + Agents)
AdoptDefault reasoning model for RAG and agentic flows.
OpenAI GPT-5 family
AdoptUsed where tool-use latency matters.
Genkit
TrialFramework-agnostic AI flows; useful for orchestrating LLM calls with eval and tracing.
LangChain (JS)
HoldOver-abstracted; we prefer thin SDK wrappers.
pgvector
AdoptPostgres-native vector search, good enough for 99% of use cases.
Tools & Techniques
Consent Mode v2 + GA4
AdoptEU-compliant baseline for every client site.
Google Ads conversion tracking
AdoptWired into every form we build.
Sentry
AdoptWired into wedece.com (errors + source maps + CSP report tunnel). Default for client projects.
Playwright
AdoptSmoke + happy path on every prod app. E2E in CI by default.
Jest for new code
HoldVitest is faster and ESM-native.
Stack conversations welcome
We love arguing about technology choices. Book a call and we'll unpack yours together.