SENIOR FULL STACK DEVELOPER, BATAM INDONESIA (UTC+7)

Building reliable, business critical software for 9+ years.

I work across the stack, C# and .NET on the backend, React and Next.js on the frontend, on SaaS and AdTech platforms with large datasets, complex workflows, and teams spread across time zones.

01 / ABOUT

I'm a full stack developer based in Batam, Indonesia. For most of the last decade I've worked remotely for international clients, usually as part of teams spread across the US and India, so working across time zones and coordinating handoffs is just normal to me.

My background is backend first. I'm most at home in C#, ASP.NET Core, and SQL heavy systems, and that's still where I think most naturally. Over the last couple of years my work has moved toward the frontend with React, Next.js, and TypeScript, and more recently into leading a full product rebuild.

I'm a generalist. I like owning a system end to end rather than staying in one lane, and I've grown comfortable being the person who picks up the unfamiliar part and makes it work. I've also mentored other developers and helped set code standards along the way. One thing I care about: I try to describe my work accurately rather than dress it up, so what you read here is what I actually did.

02 / HOW I WORK

I own outcomes, not just tickets. If I built something, I stay responsible for how it holds up in production, not just whether it shipped.

I move fast in unfamiliar territory. Dropping into a codebase or a problem I haven't seen before and getting my bearings quickly is one of my stronger traits.

I try to reduce friction instead of adding to it. When something is fragile, I would rather fix the root cause than stack another workaround on top.

I look for the intent behind a request, what someone is actually trying to solve, so I build the right thing rather than just the literal ask.

I use AI tools heavily but deliberately. I've built a scope driven workflow for AI-assisted coding that keeps the output tight and reviewable instead of letting it sprawl.

03 / SELECTED WORK
JotGo
Lead Engineer · Nov 2025 — Present
React TypeScript NestJS Pixi.js WebGL Firestore Redis Bull GCP GraphQL OAuth SendGrid MCP

JotGo is a SaaS platform and browser extension for bug reporting and product feedback, with screenshot capture, session replay, and team collaboration. I lead the rebuild as the main engineer and own the whole system: the database, the backend, the frontend, the browser extension, and the release process, along with the direction of a small three person team. I inherited a rough codebase, so a large part of the job has been restructuring it into something maintainable while still shipping new features.

  • Rebuilt the feedback canvas from ReactFlow to Pixi.js and WebGL. It handles hundreds of images smoothly in production, and I stress tested it past a thousand to confirm there was headroom.
  • Built the browser extension diagnostics in the background service worker: network request capture, console log capture, and session replay, so developers get real context to reproduce an issue.
  • Built the backend on NestJS and Firestore, with GraphQL APIs, OAuth authentication, and Redis and Bull queues for background jobs and email notifications through SendGrid, all running on GCP.
  • Integrated Linear end to end over GraphQL and extended an inherited Jira integration, connecting user feedback to the teams that act on it.
  • Built an MCP integration that connects the platform's feedback data with AI tooling, supporting both OAuth and PAT authentication.
  • Own the git branching strategy and the release process for the team.
Cadent Ad Manager Platform
Frontend Engineer · Jul 2024 — Nov 2025
React Next.js TypeScript Tailwind Zustand React Hook Form Zod TanStack Query Material React Table Axios DevCycle

Cadent's platform is an enterprise DSP for programmatic advertising, covering campaigns, line items, ad groups, targeting, optimization, and audiences. It's a large, data heavy application, the kind with big server paginated tables and deeply nested, interdependent forms. I worked mostly on the ad group side, and I spent most of my time in the optimization area, which is the most complex part of the product. This is also where my professional React experience started. When a trader sets up an ad group, they pick an optimizer, predictive models, KPIs, and a bidding strategy, and all of those choices constrain each other, so changing one value changes what is valid everywhere else. I was the primary developer on that flow. I wrote most of the optimization form, around 78 percent of a component that had grown past 1,600 lines, and I owned the shared state that ties its steps together. Much of the real work was untangling edit mode and replacing fragile patterns so invalid combinations cannot be saved.

  • Owned the ad group optimization flow (optimizer, predictive models, KPIs, bidding), built with React Hook Form and Zod for the interdependent validation and TanStack Query for the many dependent lookups.
  • Built the predictive KPI card and the HCP and health audience selection and save flow end to end, using Material React Table for the data grids.
  • Built the Next.js API routes, a BFF layer between the React app and the .NET backend, that handle auth, route to the right service, and reshape the data.
  • Managed shared state across the app with Zustand, and shipped changes behind DevCycle feature flags for gradual, controlled rollout.
AdTheorent DSP Application
Full Stack Developer · Feb 2021 — Jul 2024
ASP.NET .NET Core C# Web API SQL Server ADO.NET JavaScript jQuery Bootstrap Stored Procedures

AdTheorent's DSP was an earlier AdTech campaign management platform, with campaign setup, line items, targeting, reporting, optimization, advertisers, and audiences. I worked full stack here for about three and a half years. On the backend I built Web API endpoints and controller actions in C# and .NET, and wrote a lot of SQL and stored procedures with ADO.NET for the data heavy workflows. On the frontend I worked in JavaScript and jQuery. I also spent real time refactoring fragile areas and tracking down production defects across the API, auth, and data. This is the backend heavy foundation of my experience.

04 / EXPERIENCE TIMELINE
Digital Avenues Ltd
Feb 2021 — Present
Singapore (Remote), Senior Full Stack Developer

The company I work under as a remote contractor. Everything in Selected Work above was delivered through Digital Avenues, working in Scrum teams alongside product managers, QA, and engineers across US, India, and Southeast Asia time zones. Over these years I've moved from building features to owning complex areas and, most recently, leading a product rebuild.

Escurity
Mar 2016 — Dec 2019
Batam, Indonesia, .NET Developer

Where I started my professional career. I joined as a junior developer and grew into a mid level engineer, building and maintaining business applications with ASP.NET, C#, and SQL Server, including stored procedures and reporting. This is where I learned how to ship and support real software.

Education

Universitas Internasional Batam, B.Sc. Computer Science, 2020.

UTeM University, Malaysia, ICT student exchange, 2015.

05 / SKILLS
Backend & APIs
C#, ASP.NET Core, NestJS, Web API, REST, GraphQL, ADO.NET
Frontend
React, Next.js, TypeScript, JavaScript, Pixi.js, WebGL, Tailwind, jQuery
State & Data
Zustand, React Hook Form, Zod, TanStack Query, Material React Table, Axios
Browser Extensions
Chrome, Firefox, Edge, background service workers, diagnostics, session replay
Databases
MS SQL Server, PostgreSQL, Firestore, Cloud SQL, Redis, Bull, Stored Procedures
Cloud & DevOps
GCP (App Engine, Cloud Storage, Cloud SQL, Secret Manager, Log Explorer), Jenkins, CI/CD, Azure DevOps
Version Control & Workflow
Git, GitHub, Bitbucket, branching and release management, Scrum, code review
Integrations & Tools
OAuth, JWT, Linear, Jira, SendGrid, Pub/Sub, MCP, DevCycle, Elasticsearch, Kibana
06 / CONTACT

Open to remote, onsite, or relocation.

I work best as a full stack developer, but I'm happy to focus on backend or frontend if that's the better fit, and I'm ready to step into whatever role fits, lead or otherwise.