Skip to content
SYSTEM STATUS: Open for new work [1 slot left - 2/3]

Batam web & mobile developer for Singapore teams — web apps, mobile apps, backend, and IoT.

> I build fast, maintainable web & mobile products (Native/Ionic/Flutter) using TypeScript/JavaScript, Python, Go, and IoT MQTT — with clear milestones and practical engineering.

// Many engagements are under NDA. I don’t publish client names or internal screenshots, but I’m transparent about process, standards, and anonymised outcomes.

Scroll

What I build

> End-to-end delivery: from scope to production and monitoring.

> Web & Mobile Apps (Fullstack)

Dashboards, admin panels, and native mobile apps (Ionic/Flutter) with a premium feel.

[Next.js/React][Native/Ionic/Flutter][API integrations][SSR/SEO when needed]

> Backend & Data (Python/Go)

Clean, reliable APIs built for scale, operations, and long-term maintenance.

[REST/GraphQL][Postgres/Redis][Workers/queues][Logs & metrics]

> IoT (MQTT) & Monitoring

Device → broker → pipeline → dashboard → alerts, designed for reliable data and easy operations.

[MQTT][Realtime dashboards][Alerting][Device-to-cloud flow]

Proof without breaking NDA

> No public portfolio. Instead, you’ll see anonymised engagement snapshots: context → work → outcomes.

ID: 001[Operations & service]
// Context

Team needed a fast dashboard for daily KPIs and incident investigation.

// Work

Designed data model, built responsive UI, and improved queries + caching.

// Outcome

> More consistent data access; reduced ops overhead via clear drill-down flows.

TypeScriptNext.jsPostgresRedis
ID: 002[Internal workflows]
// Context

Manual approvals created bottlenecks and input mistakes.

// Work

Built a web app with RBAC, audit trails, and status notifications.

// Outcome

> Cleaner approvals; better status visibility; less rework with validated inputs.

TypeScriptNode.jsPostgres
ID: 003[System integration]
// Context

Existing APIs were brittle and hard to trace during incidents.

// Work

Refactored critical endpoints, improved error handling, added useful logs/metrics.

// Outcome

> Faster incident handling thanks to better observability; safer releases.

PythonGoPostgres
ID: 004[IoT & monitoring]
// Context

Needed realtime device monitoring + history, plus threshold-based alerts.

// Work

Designed MQTT topics and payload schema, built data pipeline, and realtime dashboard.

// Outcome

> Easier visibility; more actionable alerts; faster troubleshooting.

MQTTTypeScriptDashboard UIPostgres
ID: 005[Web product]
// Context

Pages felt heavy and interactions were slow on certain devices.

// Work

Performed performance audit, reduced bundle size, improved loading strategy, optimised rendering.

// Outcome

> Smoother UX; faster-feeling interactions on primary user flows.

Next.jsTypeScript

*** Outcomes are shown as ranges and examples for similar problem types. Details vary by context and constraints. ***

Architecture & craft

> Quality is engineered. I bias towards systems that are clean, measurable, and maintainable.

Frontend
Backend
Data/IoT
[1]

Consistent code structure and naming

[2]

Right-sized testing (unit/integration) when it matters

[3]

CI checks, linting, and type-safety

[4]

Observability: logs, metrics, tracing (as needed)

IoT with MQTT: reliable flow, clear insight

> A practical, end-to-end pipeline from devices to dashboards and alerts.

Devices

Secure, stable telemetry and event publishing.

MQTT Broker

Clean topic design and access policies.

Pipeline

Validation, normalisation, and storage.

Dashboard

Realtime monitoring + history + drill-down.

Alerts

Threshold- and anomaly-based notifications.

My stack

> Chosen for speed of delivery, operational clarity, and maintainability.

// frontend

Next.js
React
TypeScript
Tailwind CSS
Framer Motion

// backend

Node.js
Python
Go
PostgreSQL
Redis

// iot

MQTT
EMQX
InfluxDB
Grafana
TimescaleDB

// tools

Docker
GitHub Actions
Vercel
AWS
Cloudflare

Have an idea? I’ll help you ship it.

> Share your goals and constraints. I’ll respond with a clear plan, realistic milestones, and options._