selected work
Featured Projects
Work I've shipped, in the same shape each time: the problem, what I built, and what changed.
- 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

