Ankur Gangwar
Java Backend Engineer · Project Engineer at C-DAC · Noida, India
I build backend systems where being wrong is expensive: wallets and ledgers, payment flows, log pipelines and AI services that fail safely.
4+ years building and owning production backend services, currently a Project Engineer at C-DAC Noida. Java and Spring Boot are my home ground, with PostgreSQL, Redis, MongoDB, Elasticsearch and message queues underneath.
What I work on
- Money paths
- Wallets, append-only ledgers, idempotent credits, payouts and reconciliation.
- Pipelines
- Queues with backpressure and dead letters, log ingestion, search and aggregation.
- Applied AI
- Grounded retrieval, streaming answers, providers behind swappable ports.
- Quality
- Tests against real databases, negative controls, retries that never hide bugs.
Selected work
Case studies
Systems I designed or built at C-DAC, each with a note on how I'd build it in Spring Boot. Client and product names are withheld; the engineering is not.
C-DAC Noida · 2026
Exactly-once rewards across three services
A watch-to-earn flow for a video platform: viewers earn coins for watching ads, coins land in a wallet, and wallets pay out to bank accounts. I own the design and the three backend services behind it.
- One idempotent, bounded call is the only way money moves between services
- Eight invariants, each enforced in exactly one place
- Concurrency bugs reproduced against real Postgres and Redis before they were fixed
- PostgreSQL
- Redis
- MongoDB
- Job queues
- Server-Sent Events
C-DAC Noida · 2026
A grounded AI assistant with swappable providers
A streaming question-answering service for players on a gaming platform. It answers only from retrieved facts and says so when it cannot. I built the service end to end.
- Session store, vector store and inference provider each changed vendor mid-project, without touching business logic
- Refuses with a fixed sentence instead of guessing
- Skips the query-rewrite model call on most turns with a zero-cost heuristic
- Vector search
- Llama 3.1
- bge-m3 embeddings
- Redis
- Server-Sent Events
C-DAC Noida · 2026
A platform backend with queue-backed workers
The backend for a web3 gaming platform: wallet sign-in, player profiles, social content, a marketplace, leaderboards and referrals, in one modular service.
- Sign-In with Ethereum using one-time, server-issued nonces
- Third-party and on-chain work moved off the request path onto queue workers
- Referral abuse checks without storing raw IP addresses
- MongoDB
- Redis-compatible queues
- EVM signatures
- JWT
- OpenAPI
C-DAC Noida · Ongoing
A config-driven end-to-end test framework
A Java framework that runs UI journeys for more than one product and environment from configuration, seeds its data through APIs, and retries only failures that cannot be real bugs.
- Application-agnostic core, one package per product
- Retries limited to transient browser faults; assertions are never retried
- Failures reported as plain sentences with a screenshot
- Java 21
- Selenium
- TestNG
- WebDriverManager
- ExtentReports
Experience
Where I've worked
Oct 2024 – Present
Noida, India
Project Engineer
C-DAC (Centre for Development of Advanced Computing)
- Designed and own a rewards wallet and ledger: an append-only Postgres ledger with a deterministic idempotency key per earning event, so retries, crashes and concurrent requests credit at most once, backed by a reconciliation sweep and a daily balance-drift check. Case study →
- Built the ad campaign backend: campaign lifecycle, publishing gated by device-bound step-up authorization, presigned direct-to-storage uploads with queued transcoding, signed playback URLs and timezone-bucketed analytics.
- Built the payments and payouts service: payment gateways behind one adapter interface, idempotent ledger entries, and a payout state machine that returns coins to the wallet when a payout fails.
- Shipped a retrieval-augmented assistant on a ports-and-adapters design: answers grounded strictly in retrieved facts, swappable vector-store and inference providers, Redis session memory and streamed responses. Case study →
- Delivered a modular platform backend covering wallet-signature sign-in, social content, marketplace orders, leaderboards and referrals, with third-party and on-chain work on queue-backed workers and referral abuse checks on hashed signup IPs. Case study →
- Engineered a config-driven end-to-end test framework reused across products and environments, with thread-isolated browser sessions, API-seeded test data, and retries limited to transient faults so real defects are never masked. Case study →
Jan 2023 – Oct 2024
Mohali, India
Project Engineer
C-DAC (Centre for Development of Advanced Computing)
- Implemented an S3 input source in Logstash for collecting client logs from object storage, with resumption that survives restarts without re-ingesting objects already processed.
- Hardened Logstash grok and dissect parsers for multiple log formats: unparseable events go to a quarantine index instead of being dropped, and index templates declare field types at write time instead of letting the first source to arrive decide them.
- Designed device-type partitions with time-based rollover for Elasticsearch log retention, so a device-scoped investigation searches one partition instead of every daily index in the retention window.
- Designed an SQS-buffered aggregation layer for cross-center reports, so a report depends on one aggregated view instead of every center's cluster, with at-least-once delivery, consumer-driven backpressure and dead-letter isolation for poison batches.
Jan 2022 – Jan 2023
Bengaluru, India
Software Development Engineer I
Surya Fintech Pvt. Ltd.
- Rebuilt a multi-file CSV correlation job to read each file once and look rows up through a hash index, instead of re-scanning a file for every row.
- Wrote SQL joins across wide, many-column bank tables from the provided schemas to produce the required output datasets.
2017 – 2021
B.Tech, Computer Science & Information Technology
MJP Rohilkhand University, Bareilly
Products & open source
Things I build on my own
Released and maintained in my own time.
Leafrune
Public beta · v0.9.5
A fast, private PDF reader with an AI assistant that runs on your own computer.
- macOS
- Microsoft Store
Cloudinary Shell
Public release · v2.0.0
A native MCP server, interactive shell & scriptable CLI that lets you and your AI agents manage Cloudinary media safely.
- npm
- Native MCP Server
- Claude & Cursor Ready
- Node.js 20+
Java on GitHub
E-Commerce microservices
Event-driven e-commerce backend: product, inventory, order and notification services behind an API gateway, talking asynchronously over Kafka. Runs locally with Docker Compose.
- Java 21
- Spring Boot
- Spring Cloud Gateway
- Spring Kafka
- MySQL
- MongoDB
- Docker
System Design Playground
Low-level design problems implemented in Java with runnable demos: an elevator system, a parking lot and tic-tac-toe.
- Java
- Object-oriented design
- Maven
Writing
Notes on building things that have to be right
Exactly-once crediting is a unique index, not a queue setting
Retries, crashes and concurrent requests all try to pay twice. What actually stops them is a constraint in the durable store, and the tests that prove the constraint is reached.
Treat the LLM like a flaky dependency
Notes from building a grounded assistant: isolate the model behind ports, make failure cheap, and never let the model decide whether an answer is true.
Skills
Tools I use in production
- Languages
- JavaSQL
- Spring & APIs
- Spring BootSpring Data JPASpring Data MongoDBSpring Cloud GatewaySpring KafkaRESTOpenAPIServer-Sent Events
- Data & search
- PostgreSQLMySQLMongoDBRedisElasticsearchVector search
- Messaging & pipelines
- Apache KafkaAWS SQSLogstashDead-letter queues
- Cloud & build
- AWS S3S3-compatible object storageDockerDocker ComposeMavenLinux
- Testing & automation
- SeleniumTestNGWebDriverManagerExtentReports
Contact
Hiring for a backend role?
I'm looking for SDE-2 backend roles at product companies. Email is the fastest way to reach me.