Selected Work
Production systems I designed and led — the decisions, the trade-offs, and what I’d do differently.
Module Federation micro-frontends
Split a web-component SPA serving two product lines into a shell and two independently deployed remotes, sharing exactly one copy of the framework runtime. Federation emits native ES modules, so remotes load through the browser's own `import()`, and routes moved to their owning remote one content type at a time.
- Role
- Lead engineer — architecture owner
- Scope
- A shell host plus two product remotes, each deployed on its own cadence · one import map shared by all three builds
- Outcome
- 3 independently deployed apps across 2 teams, with release conflicts between them eliminated
Design system runtime integration
Moved the design system and framework runtime out of three application bundles and onto a CDN, resolved by the browser from one import map. Webpack externals are derived from that map, so an unresolvable import can't ship, and a design-system upgrade is a version bump in one JSON file rather than a rebuild of three apps.
- Role
- Lead engineer — designed and built the dependency-resolution layer
- Scope
- One import map — design-system packages, framework runtime and federation entry points — shared by three independently deployed applications
- Outcome
- About 60% smaller application bundles
Prerendering middleware
Decoupled search visibility from the client-side module graph: an Express middleware detects bots, renders the page in pooled headless Chromium, strips the scripts and returns finished HTML from the same origin and deploy that serves humans. The key decision is forcing the shadow-DOM polyfill before the app loads — otherwise a site built from custom elements serializes to empty tags.
- Role
- Lead engineer — design, implementation, rollout across sites
- Scope
- One versioned middleware package used by five public sites · configurable crawler list, two cache backends, per-site render settings
- Outcome
- Improved search indexing across 5 public sites
Trie-based search engine
Built bilingual full-text search for three public sites as one Node service with a hand-built character trie in memory — no search cluster and no network hop per query. A prefix trie is the crude stemmer an agglutinative language like Georgian needs, and query-time transliteration lets Georgian typed phonetically in Latin find the same pages.
- Role
- Lead engineer — designed the service, wrote the first commit, owned it in production
- Scope
- Three content channels × two languages — one in-memory index per pair, rebuilt daily, with no search cluster to operate
LLM-assisted search API
Added an LLM query-understanding layer in front of an existing keyword index instead of replacing it, so questions and typos resolve to indexed terms — plus a streamed answer card grounded only in pages the index already returned. Every model call falls back to the raw query, so a provider outage degrades to the original search, never to an error.
- Role
- Lead engineer — sole implementer, backend and frontend
- Scope
- Two endpoints, one shared search component with two consumers, two locales
- Outcome
- 50% more clicks on search results
Polymer to React/TS CMS migration
Migrated a daily-use editorial CMS off a dead framework, running old and new apps side by side behind one reverse proxy so editors never saw a freeze. The real work was rewriting a form engine that generates the whole editing UI at runtime from user-defined content types — including multi-locale editing that Polymer had solved with DOM traversal.
- Role
- Lead engineer — engine owner
- Scope
- TypeScript rewrite of a Polymer 3 app · schema-driven form engine · one deployment serving several sites with their own locale sets
- Outcome
- Adopted across 5 product teams
Skills
Languages
Frontend
State & Data
Backend & APIs
Data & Storage
Architecture
AI & LLM
Testing & Quality
Tooling & DevOps
Certifications
Side Projects
Things I built on my own time to dig into a specific problem.

Threads App
Focus: Full-Stack Architecture
Social discussion platform inspired by Reddit, built with Next.js 15, React 19, Prisma, and HeroUI. Users can create threads, post content, and engage through nested comments.

Real-time Editor App
Focus: Real-time Systems
Real-time collaborative text editor built using Node.js, Socket.IO, and Quill.js, with storage in Redis and containerized using Docker for deployment/local development. The app allows multiple users to simultaneously edit the same document with instant synchronization across clients.

Excel App
Focus: Framework Internals & Performance
Excel application created with vanilla JavaScript. Implemented custom web framework from the scratch (with state, routing, eventing, storage, DOM manipulations). Used Tailwind CSS for styling.

Search App
Focus: Algorithmic Efficiency
JavaScript search engine built on a Trie (prefix tree) data structure for fast text lookup and autocomplete. Supports instant prefix-based searching, smart suggestions, and relevance-ranked results.
