// Case study · N°04
Bricks & Bids.
LEGO live-auction platform. Stripe migration in 5 zero-downtime phases, Kafka request/reply bid queue.
- Role
- Backend Engineer
- Year
- 2024 → 2025
- Status
- shipped
- Stack
- Spring Boot 3.x · Java 17 · Kafka
Backend engineer on a US online auction marketplace for LEGO sets, minifigures, and original builds. A Spring Boot 3 + Java 17 + PostgreSQL service with live bidding; I authored 180 commits across 14+ months of migrations, integrations, and feature work.
// Context
I joined when the codebase already ran on Braintree, GoShippo, and SendGrid/Twilio. By the time I rotated off, all three had been migrated, Kafka had been introduced for atomic bid processing, and a full CI/CD pipeline shipped JARs to a DigitalOcean droplet.
Role
Backend engineer
Commits
180 authored
Payments
5-phase zero-downtime
Tenure
14+ months
Payments migration: Braintree → Stripe .
A multi-month, surgical migration with no customer-visible downtime, run in five phases: client-token endpoints, payment-method registration and bid-side authorization, charge/capture and refunds on auction win, Stripe Connect for seller onboarding and payouts, then the final cutover retiring Braintree.
Other systems I owned .
- Shipping migrated GoShippo → EasyPost, with USPS Price Discovery (OAuth2) for live rate quoting and rebuilt buyer/seller delivery views and webhooks.
- Transactional email moved SendGrid+Twilio → AWS SES with Thymeleaf templates fed by 20+ Spring ApplicationEvents and @Async listeners.
- A Kafka request/reply bid queue behind a feature flag that absorbs traffic spikes asynchronously while preserving per-auction ordering and atomicity.
- Auth refactor: sign-up/login/OTP, Google OAuth2, brute-force rate limiting, Passay password policy, pending-users held in memory until OTP verification so the DB stays clean.
- The CI/CD pipeline: GitHub Actions → SCP/SSH → DigitalOcean droplet → systemd, with dev/prod profiles so seeders never run in production.