Skip to content

selected work

Featured Projects

Work I've shipped, in the same shape each time: the problem, what I built, and what changed.

filter ▸
  • svc/01employerGeorgian Card

    POS Terminal Management

    An internal platform for operating a POS terminal estate from the browser - devices, merchants, commands, batch operations and transactions, with a live analytics dashboard and reporting. Built from scratch in zoneless Angular.

    // highlights

    • Built from scratch in modern Angular - signals throughout, and no zone.js
    • List and detail views across devices, merchants, commands, batch operations and transactions
    • Commands and batch operations dispatched to terminals directly from the UI
    • Live analytics dashboard and reporting over the estate

    AngularTypeScript

  • svc/02employerBetsson

    Betsson.ge

    An online gaming platform where registration was gated behind identity verification. I separated the two, so an account can be created first and verified inside a window afterwards.

    result
    verification no longer blocks registration

    // highlights

    • Split a single coupled sign-up flow into two independent processes - registration, then verification
    • Registration completes on its own; verification follows within a window rather than standing in front of the account
    • Redesigned and refactored the front end of the flows involved

    AngularTypeScript

  • svc/03employerBank of Georgia

    Customer CRM

    An internal CRM for managing the bank's customers and clients. I redesigned screens, added features, built a reusable component layer, and cut the app's change-detection load.

    result
    change detection per keystroke: 17+ runs → 3

    // highlights

    • Traced a single keystroke in one input to 17+ change-detection runs and brought it down to 3
    • Grid rendering and general responsiveness improved as a consequence, without touching the grid itself
    • Kept the app current through successive Angular upgrades, taking it from v14 to v18
    • Built reusable components that made behaviour consistent across screens instead of re-solved per screen
    • Mentored other developers on the team

    AngularTypeScript

  • svc/04employerBank of Georgia

    Offers Hub

    A management panel for merchants and for the offers the bank runs with them - promotions, cashback, and bonus-point campaigns aimed at merchants and customers.

    result
    cascading merchant tree made reliable; redundant passes over large JSON removed

    // highlights

    • Merchant management, and the offers and promotions attached to them, in one internal panel
    • Campaign types the bank actually runs - cashback, bonus points, and similar merchant promotions
    • Fixed and optimised the large checkable tree of merchants, brands, and POS terminals, where checking a node selects its whole subtree
    • Removed repeated code and unnecessary passes over large JSON payloads, lifting performance across the app

    AngularTypeScript

  • svc/05personal

    BetPro

    An Angular sports-betting front end: browse and filter events, build a betslip with live-updating odds, and track placed bets with running win/loss statistics.

    // highlights

    • Three NgRx feature stores (events, betslip, bet history) with effects for async work
    • Filtering and sorting run client-side over the whole event list, with a virtual-scroll and pagination toggle
    • Betslip and filter state persist to localStorage and survive a reload
    • Docker Compose runs the built app behind nginx alongside its API

    AngularNgRxRxJSAngular MaterialTypeScriptDocker

  • svc/06personal

    Filmpire

    A film discovery app built on the TMDB API: browse by category or genre, search the catalogue, and sign in with a TMDB account.

    // highlights

    • Browse by Popular, Top Rated, and Upcoming, or by any of 19 TMDB genres
    • Full-text search across the TMDB catalogue
    • Sign in with a TMDB account for profile-backed data
    • Light and dark themes

    ReactRedux ToolkitMaterial UITMDB APINetlify

Something here look like the problem you have?

Get in touch