Backend Engineer — Java/Spring Boot & Node.js · Bangkok, Thailand
I build backend services for production traffic. Most recently a real-time analytics platform sustaining 10M+ requests/day at sub-100ms response times, built on Kafka and Redis. Two platforms I'm building at One Inspector and Consultant, my own consultancy: Sentinel IoT Platform, an industrial monitoring system in Java 21 / Spring Boot with MQTT ingestion, circuit-breaker resilience and GitOps deployment to EKS; and Construction OS, an AI-native construction management platform currently in development.
Languages
Backend
Data & Messaging
Infrastructure & CI
Observability
Frontend & Testing
The systems below were built under commercial engagements, so the source is proprietary and not published here. Happy to walk through the architecture and trade-offs in conversation.
Real-time analytics platform — Kafka, Redis, Docker Sustains 10M+ requests/day. Redis caching layer brought API responses under 100ms; Kafka-based ingestion decoupled the write path from reporting reads so traffic spikes stopped degrading dashboard performance. Collapsed client reporting from a multi-hour batch job into on-demand results.
Distributed chat service — WebSocket, Pub/Sub Pub/sub fan-out keeps message delivery consistent across nodes instead of pinning users to a single server.
High-throughput notification pipeline — Kafka Event-driven delivery with retry/backoff, dead-letter handling, and idempotent sends.
Construction OS · NestJS, Next.js, React Native, Python, Go 🚧 In development
AI-native construction management platform built for enterprise scale. Currently at Stage 1 (BUILD) — architecture and specs are settled, implementation is underway.
- Modular monolith over microservices — one NestJS deployable holding all domain modules (identity, tenant, project, BoQ, procurement, site-ops, finance, equipment, workforce), with separate services only where a language or throughput boundary justifies it: Python/FastAPI for LLM gateway, embedding, OCR and transcription; Go for analytics, knowledge-graph and MQTT IoT ingestion
- Multi-tenancy — shared database with
tenant_idand PostgreSQL row-level security, chosen over schema-per-tenant and documented as an ADR - Offline-first clients — Serwist PWA with IndexedDB on web, Drizzle over expo-sqlite with a sync queue on React Native, reconciling through Kafka; built for sites with no signal
- Monetary correctness —
DECIMAL(19,4)in PostgreSQL,decimal.jsand Pythondecimalin application code, floats banned by lint rule - Event bus — Kafka with Avro and Schema Registry under
BACKWARD_TRANSITIVEcompatibility; Temporal for long-running workflows - Auth split by user reality — phone + SMS OTP via AWS SNS for site workers, Keycloak OIDC with RS256 JWT for office staff
- Polyglot persistence — PostgreSQL + TimescaleDB, ClickHouse (analytics), Neo4j (knowledge graph), pgvector + OpenSearch (retrieval), MinIO (objects), Redis
- Operational discipline — PgBouncer in transaction mode with direct PostgreSQL connections prohibited, OpenTelemetry → Grafana/Loki/Prometheus, secrets via Vault and AWS Secrets Manager, ~60 ADRs and a 100% line/branch coverage mandate
Sentinel IoT Platform · Java 21, Spring Boot 3.2, Kafka, Kubernetes
Industrial IoT monitoring platform — MQTT sensor ingestion, threshold alerting, multi-channel notifications, live WebSocket dashboard, and a full observability stack.
Measured: cache read path sustains 1,000 req/s (60k+ ops/min) at p95 112 ms / p99 187 ms under k6 load test, against SLO targets of p95 < 200 ms and p99 < 500 ms.
- Ingestion — Mosquitto MQTT via Spring Integration, with DLQ routing for invalid payloads and unknown devices; Kafka event streaming with Avro schemas and Confluent Schema Registry
- Resilience — Resilience4j circuit breaker and retry; when Postgres is unavailable the dashboard stays live off Redis while writes queue to a Redis replay list, drained every 30s once the breaker recovers
- Data — PostgreSQL 16 with monthly range partitioning, hourly aggregates, row-level security for multi-tenancy, Flyway migrations; CloudNativePG + Barman for HA replication and WAL archiving
- Realtime — Spring WebSocket with Redis pub/sub fan-out across nodes
- Observability — Prometheus, Grafana, OpenTelemetry/Micrometer, Jaeger tracing, structured JSON logging with MDC request correlation, multi-window burn-rate SLO alerting
- Testing — JUnit, Mockito, Testcontainers, Pact contract tests, JMH benchmarks, Pitest mutation testing, ArchUnit, schemathesis fuzzing, k6 load tests
- Deploy — Docker Compose locally; EKS via Terraform and Helm, GitOps with ArgoCD, blue/green and canary rollouts with Argo Rollouts, event-driven autoscaling with KEDA, Velero backup/DR
- Frontend — Next.js 14 App Router, Tailwind, Recharts, react-query, Zustand, list virtualization
LINE Bot API · Java, Spring Boot
RESTful service integrated with the LINE Messaging API, handling webhook events and message delivery.
Codebox Platform · Node.js, Express, MongoDB ✅ Completed
Full-stack platform for user and content management. Currently migrating the frontend from server-rendered EJS to React + Tailwind CSS.
Cypress Cinema Automation · Cypress 13 📚 Portfolio project
E2E suite for a cinema booking platform, covering language switching → cinema selection → movie selection → showtime verification → seat selection.
- Page Object Model — selectors and interactions encapsulated per page class
- Fixture-driven test data, decoupled from test logic via JSON
- Mochawesome HTML reports, generated in CI on every push and pull request
- Retry strategy for flaky network-dependent tests
Remote Vote · Firebase, embedded C ✅ Completed
Secure remote voting system with live result updates, backed by a microcontroller client. Firebase Authentication, Cloud Functions, and Realtime Database.
Smart Window · Embedded C++ ✅ Completed
IoT automation that reads environmental sensor data and drives microcontroller-based window control logic.
Google Cybersecurity · Prompt Engineering & Agentic AI (AIS Academy) · Secure Coding: OWASP Top 10 · Secure Coding on Frontend

