Selected Work
Webhook v2
A revamp of Jubelio's webhook platform into a change-data-capture pipeline with Go consumers.
Challenge
The original webhook consumer ran on Node.js and couldn't process deliveries concurrently fast enough as event volume grew — but existing users still depended on v1 working exactly as before.
Solution
Rewrote the consumer in Go on a Debezium → Kafka pipeline from PostgreSQL. Reworked how webhooks are stored so v1 and v2 run side by side: existing webhooks stay on v1 by default, and users choose v1 or v2 in the UI when adding new ones. Added a per-tenant retry threshold, tracked in Redis, to both versions: once a tenant has 500 pending retries, new retries are refused until one is consumed or the 1-hour TTL expires, so the retry queue can't bloat.
Bulk Webhook Resend
A fully customizable way to resend webhooks, one at a time or in bulk.
Challenge
Resending webhooks one by one doesn't scale, and resending many at once can flood the receiving endpoints.
Solution
Built resend on RabbitMQ with configurable batch size and per-batch delay, plus bulk resend of every webhook matching a filter, tracked in Redis. The internal app shows progress with short polling, since real-time push via WebSocket or SSE wasn't needed.
Audit Log Pipeline
Platform-wide audit logging streamed from PostgreSQL into ClickHouse.
Challenge
Audit records in PostgreSQL are truncated after a few days, so long-term audit history and the notifications built on it needed a different home.
Solution
PostgreSQL triggers on every table feed a central audit table, which Debezium streams into Kafka and ClickHouse ingests through its Kafka engine. Audit history is queried from ClickHouse, and a materialized view routes email-flagged events back to Kafka for the email service.
App Health Monitoring
Health metrics for apps, built from gateway error rates, with user notifications.
Challenge
Users had no automatic signal when an app's error rate started climbing, so problems surfaced late.
Solution
Kong Gateway error rates are aggregated in ClickHouse. A scheduled job evaluates them and publishes status changes, such as warnings, as app health metrics into the central pipeline so users get notified.
Experience
Jul 2025 — Present
South Jakarta · Hybrid
Jubelio
Fullstack Developer & Technical Support (API)
- Revamped the webhook platform into Webhook v2, rewriting the Node.js consumer in Go on a Debezium → Kafka pipeline, with a UI option to stay on v1 or opt into v2, and a Redis-tracked per-tenant retry threshold on both versions to keep retries from bloating.
- Built a customizable webhook resend with batching, per-batch delay, and bulk resend of filtered webhooks on RabbitMQ and Redis.
- Designed the audit log pipeline from PostgreSQL triggers through Debezium and Kafka into ClickHouse, including email notifications via a materialized view.
- Built app health monitoring from Kong Gateway error rates in ClickHouse, and the App Store dashboard end-to-end, UI and API.
- Primary technical contact for client integrations — investigating production incidents, shipping hotfixes, and driving long-term reliability fixes.
GoNode.jsKafkaDebeziumClickHousePostgreSQLRabbitMQRedis
Certifications
Dec 2024 — Feb 2025
Full Stack Developer Bootcamp
Harisenin.com
Graduated with a 4.00/4.00 GPA, ranked 3rd fastest to complete Batch 14. Capstone: a movie web app.
Jul 2024 — Nov 2024
Fullstack Web Development Bootcamp
Udemy · Angela Yu
Comprehensive fullstack course covering JavaScript, Express.js, React.js, and PostgreSQL.
Jun 2024 — Jul 2024
Responsive Web Design
freeCodeCamp
HTML and CSS curriculum, including responsive layouts and accessibility best practices.
About
Fullstack developer grown into backend and platform engineering, now building production services in Go at Jubelio — from Debezium and Kafka pipelines to the dashboards on top. I own features end-to-end — from requirement analysis and API design to deployment and the production incidents that come after.
1+
Year shipping production systems
4.00
Bootcamp GPA, Harisenin Batch 14
3rd
Fastest to graduate in batch
Toolkit
Languages & Backend
- Go
- JavaScript
- TypeScript
- Node.js
- Express.js
- REST API design
- Event-driven architecture
Frontend
- React.js
- Next.js
- Redux
- Zustand
- TanStack Query
- Tailwind CSS
- Bootstrap
- jQuery
Data & Messaging
- PostgreSQL
- MySQL
- MongoDB
- ClickHouse
- Kafka
- Debezium
- RabbitMQ
- Redis
- Prisma
- Sequelize
- Mongoose
Infrastructure & Tools
- Git
- GitHub Actions
- Docker
- Kubernetes
- Kong Gateway
- Postman
- Vercel
- Jest
- React Testing Library
Auth & Security
- JWT
- OAuth (Supabase)
- bcrypt
AI-Assisted Development
- Claude Code
- OpenCode
- GitHub Copilot