Selected work · 2020 → 2026

Built to ship,
tested to last.

Web apps are my home turf, but I take on any part of the product lifecycle — from architecture to testing to the AI plumbing underneath. Eight projects below; more on request.

careerscv.io landing — AI-powered CV, cover letter and website builder
●01 · Live500+ users

careerscv.io

AI CV & website builder with an agentic core.

An AI platform that turns a conversation into a CV and a personal website. Eight LangChain agents over Claude and OpenAI coordinate through MCP servers; a voice assistant lets you edit hands-free. Built end-to-end — React + Next.js front, Node + GraphQL back.

  • ●500+ active users
  • ●8+ agentic systems coordinated through MCP servers
  • ●+45% response accuracy via MCP integration
  • ●Voice assistant for natural-speech CV editing
ReactNext.jsTypeScriptGraphQLNode.jsLangChainAnthropic Claude APIOpenAI APIMCP ServersAgentic Systems
Built end to end · Fullstack · 2024 → now
Visit live
docs.lettrove.com Quickstart — minting an editor token with @lettrove/node
docs.lettrove.com Next.js guide — the editor in an App Router app
●02 · Live

docs.lettrove.com

Developer documentation for embedding the Lettrove editor — written for people and their AI assistants.

The documentation site for Lettrove's embeddable editor: a quickstart that goes from an empty folder to a running editor, guides for Next.js, Vue, Angular, SvelteKit and plain HTML, branding, events, a REST and webhook reference, and a changelog. It is versioned — a dropdown switches the whole site between releases — and the API reference is generated from the server's OpenAPI spec, so it cannot drift from the code.

  • ●Versioned docs: every release keeps its own frozen snapshot
  • ●REST + webhook reference generated from the OpenAPI spec the API parses with
  • ●Framework guides for Next.js, Vue, Angular, SvelteKit and plain HTML with working samples
  • ●Written to be read by developers and by their AI coding assistants
DocusaurusReactTypeScriptMDXOpenAPICloudflare Workers
Built end to end · Docs & engineering · 2026
Visit live
@lettrove/embed 1.1.0 on npm
@lettrove/node 1.1.0 on npm
@lettrove/react 1.1.0 on npm
@lettrove/vue 1.1.0 on npm
●03 · Live1.1.0

Lettrove SDKs on npm

Four published packages: @lettrove/embed, @lettrove/react, @lettrove/vue and @lettrove/node.

The SDKs that put the Lettrove editor inside another product. @lettrove/embed opens the editor in any page with one call; @lettrove/react and @lettrove/vue wrap it as components; @lettrove/node runs on the host's server, holds the secret key, mints short-lived editor tokens, exports and renders designs, verifies webhooks and erases a person's data on request. The editor itself loads from lettrove-embed.com, so the packages stay small and fixes reach users without a reinstall.

  • ●@lettrove/embed, @lettrove/react, @lettrove/vue and @lettrove/node — all at 1.1.0
  • ●@lettrove/node has zero dependencies: only fetch and Web Crypto, so it runs on Node 20+ and edge runtimes
  • ●Released from a git tag through npm trusted publishing — no long-lived npm token
  • ●Server API changes are checked so a release never breaks a client of the current version
TypeScriptReactVue 3Node.jsWeb CryptoChangesetsnpm trusted publishingGitHub Actions
Built end to end · SDK engineering · 2026
@lettrove/embed@lettrove/react@lettrove/vue@lettrove/node
Lettrove editor — the AI assistant editing a heading next to the brand panel
Lettrove image generation — Fast, Standard and Best versions to pick from
Lettrove Brand — colours, headers, footers and reusable parts
●04 · Live

lettrove.com

AI-native drag-and-drop email builder — and the editor other products embed.

An email platform built around a block-based drag-and-drop editor: every drop is a command, the same API the built-in AI assistant uses, so the assistant can edit any part of an email. It covers AI image generation with three quality tiers, brand kits with reusable headers, footers and sections, audiences imported from CSV or HubSpot, and sending. Emails compile to MJML, so the HTML renders in every inbox. A Next.js app on Cloudflare Workers over a Hono API, with Postgres as the source of truth and a Redis-backed worker running background jobs.

  • ●Every editor action is a command — the same API drives drag-and-drop, the AI assistant and the MCP server
  • ●AI image generation in three tiers (Fast, Standard, Best) inserted straight into the email
  • ●Brand kits: logos, colours and reusable headers, footers and sections
  • ●Background jobs on BullMQ + Redis that carry IDs only, never personal data
Next.js 16React 19TypeScriptTiptapdnd-kitZustandHonoPostgreSQLDrizzle ORMBullMQ + RedisBetter AuthMJMLAnthropic Claude APIOpenAI APIMCP ServersCloudflare WorkersDocker
Built end to end · Fullstack · 2025 → now
Visit live
rccgyouthtampere.com landing — YAYA youth ministry, Tampere
●05 · Live

rccgyouthtampere.com

A youth ministry platform for activities, registrations and media.

A community platform for the RCCG Youth Tampere ministry — manages activities and events, handles member registrations, and gives the team a place to publish photos and videos from gatherings. Built on the new App Router with media uploads and auth.

  • ●Event + activity scheduling for the youth community
  • ●Member registration flow with email confirmations
  • ●Photo and video uploads with admin moderation
  • ●Light, accessible design tuned for mobile
Next.js 16React 19TypeScriptTailwind v4PostgreSQLServer Actions
Fullstack · Maintainer · 2025
Visit live
mattiawmjshop storefront — everyday things, considered
●06 · Live395 tests

mattiawmjshop

Full-stack e-commerce — storefront, admin console and a repairs workflow.

A lifestyle store for sneakers, bags, watches and apparel — catalogue with sizes and colour swatches, guest or account checkout, reviews, a repairs workflow, and an admin console for analytics, products, orders, customers and payouts. Two apps in one repo: a Vite + React storefront over an Express + Prisma API on PostgreSQL, with product images uploaded straight to S3 and served through CloudFront.

  • ●Storefront + admin console: catalogue, bag → checkout → confirmation, orders, customers, payouts
  • ●Checkout runs in one transaction and decrements stock; order email sent only after commit
  • ●395 tests across both apps, plus ESLint rules that enforce the design tokens
  • ●Deployed on Vercel + CapRover (Docker) + Neon Postgres, shipped in a week
React 19ViteTypeScriptTailwind v4shadcn/uiTanStack QueryZustandExpress 5PrismaPostgreSQLAWS S3 + CloudFrontDocker
Fullstack · Solo build · 2026
Visit liveSource
Tech Store featured products page
Tech Store product detail
Tech Store cart and checkout
●07 · Live

Tech Store

Internationalised e-commerce for tech products, tested end-to-end.

A sleek, responsive e-commerce platform for selling tech products — fully internationalised with next-intl, with a complete catalog, cart and checkout. Playwright covers 95%+ of critical user journeys including payments and cross-browser flows, so deploys ship with confidence.

  • ●95%+ Playwright E2E coverage across critical journeys
  • ●Zero critical production bugs in first 6 months
  • ●5+ languages and regional variations via next-intl
  • ●Sub-3-second checkout completion time
ReactNext.jsTypeScriptNode.jsnext-intlTailwind CSSAnt DesignShadCN UIPlaywright
Fullstack · QA Lead · 2024
Visit liveSource
Weatherly map view with weather layers
Weatherly forecast detail
●08 · Live

Weatherly

Geo-aware weather app with intelligent caching and maps.

A responsive weather app with real-time updates, location search and interactive Google Maps integration. Sub-2-second loads, 60% fewer API calls via caching, and 7-day forecasts that stay calm and instant on any device.

  • ●Sub-2-second page load
  • ●−60% API calls via caching strategy
  • ●Real-time weather sync · geolocation search · interactive maps
  • ●Responsive across 10+ device classes
ReactNext.jsTypeScriptNode.jsGoogle Maps APIOpenWeatherMap APITailwind CSSAnt Design
Fullstack · 2023
Visit liveSource
Open for new work

Let's build something that ships.

I'm taking on one new project at a time. If you're shipping product — especially anything agentic, AI-native or genuinely hard — I'd like to hear about it.