Sergi Jajanidze

Sergi Jajanidze

Senior Frontend Engineer

Skills

Languages
  • JavaScript,
  • TypeScript,
  • HTML5,
  • CSS3
Frontend
  • React,
  • Next.js,
  • Angular,
  • Lit,
  • Web Components,
  • Tailwind CSS
State & Data
  • Zustand,
  • Redux,
  • GraphQL,
  • TanStack Query
Backend & Data
  • Node.js,
  • Express,
  • REST APIs,
  • MongoDB,
  • PostgreSQL,
  • Redis,
  • Prisma
Architecture
  • Micro-frontends,
  • Module Federation,
  • Monorepos,
  • SSR,
  • Design Systems
AI & LLM
  • LLM API Integration,
  • RAG,
  • Prompt Engineering
Testing & Quality
  • Vitest,
  • Jest,
  • React Testing Library,
  • Playwright,
  • Core Web Vitals,
  • WCAG
Tooling & DevOps
  • Vite,
  • Webpack,
  • Rsbuild,
  • ESLint,
  • CI/CD,
  • Docker,
  • AWS,
  • Sentry,
  • Grafana

Certifications

Selected Work

Production systems I designed and led — the decisions, the trade-offs, and what I’d do differently.

  1. Bank of Georgia public site

    LLM-assisted search API

    Added an LLM layer in front of the existing keyword index so questions and typos resolve to indexed terms, plus a summary card built from the most relevant result pages. Model calls fall back to the raw query, so search keeps working through a provider outage.

    • Node.js/Express
    • Redis
    • Gemini 2.5 Flash-Lite
    • Lit 3 web components
    • Module Federation

    ~50%more clicks on search results

    Role
    Sole engineer — backend and frontend
    Scope
    Query rewriting, a summary card and one shared search component, in two locales
    Outcome
    About 50% more clicks on search results
  2. Bank of Georgia internal multi-locale content management system

    Polymer to React/TS CMS migration

    Migrated a daily-use editorial CMS off Polymer 3, running old and new apps side by side so editors could keep working. Most of the work was rewriting the form engine that generates the whole editing UI at runtime from user-defined content types, including multi-locale editing.

    • React 18
    • TypeScript
    • Ant Design
    • React Router v6
    • Webpack

    5product teams migrated

    Role
    Led the migration and owned the form engine
    Scope
    TypeScript rewrite of a Polymer 3 app · schema-driven form engine · 200+ content pages across 10+ products
    Outcome
    5 product teams migrated to the new CMS
  3. High-traffic Bank of Georgia public site

    Module Federation micro-frontends

    Split a web-component SPA serving two product lines into a shell and two independently deployed remotes that share one copy of the framework runtime. Routes moved to their owning remote one content type at a time.

    • Lit 3 web components
    • Webpack 5 Module Federation
    • Native ESM output
    • Import maps

    ~10releases per month, up from ~6

    Role
    Led the migration and owned the architecture
    Scope
    A shell host plus two product remotes, each deployed on its own cadence · one import map shared by all three builds
    Outcome
    Releases up from about 6 to about 10 per month, with retail and business shipping independently and release conflicts between the 2 teams ended
  4. High-traffic Bank of Georgia public site

    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. A design-system upgrade became a version bump in one JSON file.

    • Webpack 5 externals
    • Native import maps
    • Native ESM
    • Lit 3
    • Module Federation

    ~60%smaller per-application bundles

    Role
    Designed and built the dependency-resolution layer
    Scope
    One import map for design-system packages and the framework runtime, shared by three independently deployed applications
    Outcome
    About 60% smaller per-application bundles across 3 micro-frontends
  5. Bank of Georgia public sites · site search

    Trie-based search engine

    Built bilingual full-text search and autocomplete for three public sites as one Node service with a hand-built character trie. Prefix lookup matches inflected Georgian nouns, and query-time transliteration lets Georgian typed in Latin letters find the same pages.

    • Node.js
    • Express
    • worker_threads
    • Hand-built character trie
    • Sitemap ingestion

    3public sites with bilingual search

    Role
    Designed the service and owned it in production
    Scope
    Three content channels × two languages, with no search cluster to operate
    Outcome
    One service powering bilingual search across 3 public sites
  6. High-traffic Bank of Georgia public site

    Prerendering middleware

    Built an Express middleware that gives search crawlers finished, script-free HTML from the same origin that serves people. The key decision was forcing the shadow-DOM polyfill so content built from custom elements serializes.

    • Node.js/Express middleware
    • Puppeteer
    • Headless Chromium

    5public sites with improved search indexing

    Role
    Design, implementation and rollout across sites
    Scope
    One versioned internal npm package used by five public sites
    Outcome
    Improved search indexing across 5 public sites

Side Projects

Things I built on my own time to dig into a specific problem.

  • Job Tracker App screenshot

    Job Tracker App

    Focus: Data Integrity & AI Integration

    Job application tracker built with Next.js 16, React 19, PostgreSQL, Drizzle ORM, and shadcn/ui. Users sign in with GitHub, track applications from wishlist to offer, and fill in new ones from a pasted job posting with Claude. Includes keyset pagination, optimistic updates, and race-safe daily limits on AI usage.

    • TypeScript
    • Next.js
  • Flowgen App screenshot

    Flowgen App

    Focus: LLM Integration & Prompt Engineering

    Front-end diagram generator built using React, TypeScript, and Vite, powered by Anthropic's Claude Haiku model and rendered client-side with Mermaid.js. The app turns a plain-English description of a flow (OAuth login with refresh tokens) into valid Mermaid syntax and renders it instantly as an SVG diagram in the browser — with copy-to-source and SVG export, and no backend required.

    • TypeScript
    • React
  • Arb Watch screenshot

    Arb Watch

    Focus: High-Concurrency & Real-Time Systems

    A fee-aware, real-time arbitrage engine architected for low-latency financial data. I implemented a multi-threaded architecture using Web Workers to decouple high-frequency WebSocket streams from the UI thread, maintaining a locked 60 FPS. The project utilizes a strict TDD workflow with over 50 tests to ensure mathematical accuracy in fee-adjusted profit calculations across multiple exchanges.

    • TypeScript
    • Next.js