aejkatappaja avatar

aejkatappaja

Pragmatic full-stack engineer & OSS maintainer

Mostly TypeScript and Go. Framework-agnostic by default, I pick the right tool over the familiar one, across frontend and backend. Strong advocate for Web Components and vanilla-first when it fits. // Creator & maintainer of the official Qwik DevTools, ex-Toucan.

$ cat about.md

whoami --verbose

I came to engineering from years of customer-facing retail. Guiding non-technical people day to day gave me the product empathy and debugging instinct I bring to code.

I like getting deep into problems: hunting a memory leak in a WebSocket pool, optimizing a re-render path, shaving kilobytes off a bundle by auditing tree-shaking, debugging a multi-stage Docker build, or chasing a goroutine leak in production.

Active open-source contributor. I learn best by shipping things, getting feedback, and pushing outside my comfort zone.

location
Montpellier, FR
timezone
Europe/Paris · CET/CEST
langs
TypeScript · Go
spoken
French (native) · English (pro)

$ ls experience/

3+ yrs · fullstack · OSS

Qwik Framework official

→ present
Creator & Maintainer, Qwik DevTools
remote
  • Creator and maintainer of the official Qwik DevTools for Chrome and Firefox.
  • Adds a Qwik panel to the browser DevTools to inspect the component tree, signals and resumable state, sharing the in-app overlay UI from the qwikDevtools() Vite plugin.
  • Not a one-off: new features land regularly and I maintain it across releases.
  • TypeScript
  • Qwik
  • Chrome/Firefox ext
  • Vite plugin
qwik.dev

Nopillo

→ present
Software Engineer
Paris · remote
  • Full-stack ownership in a Bun/TypeScript monorepo: SolidJS frontend, Elysia + PostgreSQL backend, end-to-end type safety, for a tax assistant automating French rental accounting.
  • Co-led the stack benchmark and bootstrapped the monorepo with a fellow engineer (Bun, SolidJS, Elysia, Prisma, Turborepo, Capacitor): structure, tooling, CI, shared packages.
  • Built complex multi-step flows end to end (company registration, tax declaration wizard) from DB schema to UI, with server-driven progression and data prefilling.
  • Led refactors making the database the single source of truth, killing client-side state duplication and whole classes of sync bugs.
  • Major contributor to the design system: form primitives, layout components, and a schema-driven form factory generating typed forms from Zod schemas.
  • Integrated Stripe payments end to end: checkout flow, webhooks and subscription state synced back to the database.
  • Bun
  • SolidJS
  • Elysia
  • PostgreSQL
  • Prisma
  • Turborepo
  • Zod
  • Stripe
nopillo.com

Toucan 2 yrs

Software Engineer
Paris · remote
  • Embedded analytics platform. Built an embedding system with Lit Web Components: hybrid React/Lit architecture, Shadow DOM handling, token-based auth, multi-framework support.
  • Implemented an embeddable dashboard builder: create and edit dashboards from scratch with full chart, filter and grid config, plus custom-ID loading of existing ones.
  • Made the AI assistant embeddable via Web Component with GraphQL, real-time subscriptions (SSE), chart-generation tools, and cancellation handling.
  • Built a dashboard filtering system (backend + frontend): dropdown, checkbox and date-range filters with dynamic query-level filtering applied to charts.
  • Built a reusable chart library (Lit + ECharts) with unit tests and Storybook, integrated across backend and frontend.
  • Migrated data format from JSON to Apache Arrow IPC to cut transfer overhead between backend and frontend.
  • Created a granular permissions system for embed tokens, with management UI and docs (JS, Python, Go); refactored a legacy Vue2/React hybrid for performance.
  • TypeScript
  • Lit
  • Web Components
  • React
  • GraphQL
  • ECharts
  • Zod
  • Apache Arrow
toucantoco.com

SONUP

Software Developer
Montpellier · hybrid
  • Led an internal system replacing HubSpot, giving the patient-services team a 40% time saving.
  • Automated notifications with cron jobs, the Ringover API (SMS) and email alerts; built a patient tracking UI in React.
  • Backend API and data management with Node.js, Express, MongoDB.
  • Node.js
  • Express
  • MongoDB
  • React
sonup.fr

$ ls projects/

open source · self-shipped

01phantom-ui

stars

A Web Components library, shipped and maintained end to end: 20+ semver releases, CI, tests, Storybook, published package.

  • TypeScript
  • Web Components

02qwik-devtools

official ✓

The official Qwik DevTools browser extension. Inspect component tree, signals and resumable state. Merged into Qwik core (PR #97).

  • TypeScript
  • Qwik

03go-ts-types

benchmark

End-to-end type safety between Go and TypeScript, six approaches compared side by side: ConnectRPC, OpenAPI (spec-first & code-first), GraphQL, manual, with payload-size analysis.

  • Go
  • TypeScript
  • ConnectRPC

04sora

stars

A cohesive colorscheme for Neovim, Obsidian and Zed, ported to 15+ more terminals and CLI tools (Ghostty, tmux, fzf, lazygit, and more). Automated releases.

  • Lua
  • theme

05go-gym

full-stack

A training log built twice over one Go backend: a documented JSON REST API (bearer tokens) and a server-rendered web UI (templ + HTMX). PostgreSQL, OpenAPI, e2e tests.

  • Go
  • Chi
  • templ
  • HTMX
  • PostgreSQL

$ cat writing/

dev.to

$ whoami --stack

tools I reach for

languages

  • TypeScript
  • Go
  • JavaScript
  • C
  • Lua

frontend

  • Web Components
  • Lit
  • SolidJS
  • React
  • Qwik
  • Tailwind

backend

  • Node / Express
  • Elysia (Bun)
  • Go / Chi
  • PostgreSQL
  • MongoDB
  • GraphQL
  • Prisma

tooling & dx

  • Biome
  • Storybook
  • Turborepo
  • Vite / esbuild
  • Docker
  • mise
  • CI/CD
  • release-please
  • Neovim
  • tmux
  • mprocs
  • Ghostty
  • Obsidian

$ cat ~/.bookshelf

always in a tech book
  • The Mythical Man-Month
  • Designing Data-Intensive Applications
  • System Design Interview
  • A Philosophy of Software Design
  • Clean Code
  • The Pragmatic Programmer
  • Computer Systems: A Programmer's Perspective
  • Code Complete, 2nd Edition

$ ./contact.sh

let's talk