Skip to content
VS
Open to backend & full-stack rolesChennai, India  ·  IST · UTC+05:30

Vijayaragavan Selvanayagam

I build event-driven systems for payments — and make committed data reach the screen in under a second.

Role
Associate Software Engineer
Company
Finzly — banking platform for payments
Discipline
Microservices · Event-driven systems
Since
2024 · 2 yrs
Fig. 01 — The pipeline behind the dashboardStage 01 / 06Commit → pixel < 1s
  1. 01 commitPOSTGRESrow committedA row changes inside the transactional database. Nothing polls it.
  2. 02 captureDEBEZIUMWAL → change eventChange data capture reads the write-ahead log and emits the row-level change.
  3. 03 streamKAFKAordered topicThe change lands on a topic — durable, ordered, replayable.
  4. 04 materialiseREDISmaterialised keyA read model is kept current, so analytical load never touches the OLTP database.
  5. 05 pushWEBSOCKETSTOMP frameSTOMP over WebSocket pushes the delta to every subscribed browser.
  6. 06 renderBROWSERwidget repaintThe widget repaints. No refresh, no user action, under a second end to end.
1,000+
Daily active users on the dashboard
<1s
Commit to pixel, end to end
1795
LeetCode peak rating · top 9%
9.3
B.Tech CGPA out of 10
§ 01About

Most of my work sits between a database commit and a pixel.

I'm an Associate Software Engineer at Finzly, a banking platform for payments. The largest thing I've built there is the real-time customisable dashboard — the team's biggest application, now streaming live widgets to more than a thousand people a day.

It works because nothing polls. Debezium captures row-level changes off Postgres, Kafka carries them, Redis holds the materialised read model, and a WebSocket pushes the delta to the browser. Analytical load never lands on the transactional database, and a committed change shows up on screen in under a second.

Alongside that I built the Finzly design system — a versioned Angular component library published to an internal registry and now the required baseline for every new front end — and an internal configuration-management tool that took environment properties out of spreadsheets and Slack threads. That one earned the company's Top Performer award.

Outside work I build systems where being wrong is expensive: double-entry ledgers, idempotent payment rails, transactional outboxes. And I keep the fundamentals sharp — 600+ problems solved, peak rating 1795.

Operating principles

  1. 01

    Don't poll what can push

    A read model fed by the write-ahead log beats a cron job asking the same question every five seconds. It is cheaper, fresher, and it keeps reporting load off the database that takes the money.

  2. 02

    Make the invariant the schema's job

    Debits equal credits because the database refuses anything else — not because every code path remembered to check. Constraints outlive the code that respects them.

  3. 03

    Assume the retry

    Networks repeat themselves. Idempotency keys and an explicit state machine mean a request sent twice settles once.

  4. 04

    One component library, not five

    Shared inputs, dialogs and toasts, versioned and installed as a package. Consistency is a distribution problem before it is a design one.

§ 02Experience

Two years of it, all of it in production.

Aug 2024 — Present

Chennai, India

Employment

JavaSpring BootAngularPostgreSQLKafkaDebeziumRedisWebSocket

Finzly

Associate Software Engineer  ·  Banking platform for payments.

  • 01

    Built Finzly's real-time customisable dashboard end to end — the team's largest application — streaming live widgets to 1,000+ daily active users.

  • 02

    Designed its event pipeline with Debezium capturing row-level changes from Postgres via CDC, streaming them through Kafka and materialising a read model in Redis — eliminating database polling and keeping analytical load off the transactional database entirely.

  • 03

    Pushed updates from the Redis read model to the browser over WebSocket, so the dashboard reflects a committed database change in under a second with no page refresh or user action.

  • 04

    Built the Finzly design system: a versioned Angular component library of inputs, dropdowns, dialogs and toasts with shared styling, published to an internal npm registry and installed as a package by product teams — now the required baseline for all new front-end development.

  • 05

    Shipped an internal configuration-management tool (Spring Boot + Angular) used by DevOps, QA and developers to manage properties across environments — recognised with the company's Top Performer award.

Nov 2020 — Jun 2024

Tamil Nadu, India

Education

Dr. Mahalingam College of Engineering and Technology

B.Tech, Information Technology  ·  CGPA 9.3 / 10.

  • 01

    Coursework: Data Structures and Algorithms, Object-Oriented Programming, Database Management Systems, Operating Systems, Computer Networks, Software Engineering.

§ 03Work

Systems where being wrong is expensive.

001

2025

Spring BootAngularPostgreSQLKafkaRedisDocker

Payment Orchestration & Double-Entry Ledger

Routing money across rails without ever losing a cent

A payment service that routes instructions across simulated ACH, wire and instant rails, recording every movement in a double-entry ledger with a database-enforced invariant that debits always equal credits.

  • Idempotency keys and a payment-lifecycle state machine — initiated → validated → submitted → settled/returned — guarantee a retried request never double-posts.

  • Domain events publish via the transactional outbox pattern over Kafka, giving at-least-once delivery without dual-write inconsistency between the ledger and the event log.

  • An Angular operations console handles payment search, ledger drill-down and manual retry of failed payments.

  • Covered by Testcontainers integration tests running in a GitHub Actions CI pipeline.

002

2024

AngularSpring BootMySQL

BBC — Electricity Bill Management Portal

Billing rules that expire on a clock

An end-to-end billing portal supporting partial payments, time-sensitive discount rules and automated late-fee calculation.

  • OTP-based authentication, with server-side PDF invoice generation for every bill issued.

  • A responsive Angular UI for bill history and payment status.

§ 04Stack
01Languages
  • Java
  • TypeScript
  • SQL
  • JavaScript
02Backend
  • Spring Boot
  • Spring MVC
  • Spring Security
  • Spring Data JPA
  • Hibernate
  • REST APIs
  • WebSocket (STOMP)
03Data & Streaming
  • PostgreSQL
  • MySQL
  • Redis
  • Apache Kafka
  • Debezium (CDC)
04Frontend
  • Angular
  • RxJS
  • Signals
  • SCSS
05Testing
  • JUnit 5
  • Mockito
  • Jasmine
  • Karma
06DevOps & Tools
  • Docker
  • Jenkins
  • Git
  • Maven
  • AWS
07Architecture
  • Event-Driven Architecture
  • Change Data Capture
  • Microservices
  • CI/CD
§ 05Signals

Evidence, rather than adjectives.

TopPerformer Award · FinzlyFor the internal configuration-management platform that streamlined property management across environments.
1stBlind Coding CompetitionFirst place among 200+ participants, judged on correctness written without seeing the output.
§ 06Contact

Tell me what you're building.

Response time

Usually within 24 hours, from IST · UTC+05:30.