Fullstack Developer
Irfana D. F
I build the parts of a product most people never see — payment flows that can't double-charge, real-time bridges that can't drop a message, APIs that hold up under concurrent writes. Currently freelancing across three production systems, backend-first.
Bandar Lampung, Indonesia · building since Aug 2023
01
Currently building
Three production systems, running concurrently, all backend-first.

Seria
Jan 2026 — PresentFreelance Fullstack Developer
The web ecosystem for a Minecraft server community — storefront, admin CMS, and a Java/Spigot plugin that bridges the web backend to the live game server over RCON. Payment gateway (Duitku) integration with signature verification and webhook idempotency.

GM Workspace
Jul 2026 — PresentFreelance Fullstack Developer
An internal management platform for a YouTube production team — automated payroll, a tiered bonus engine driven by asynchronous view-count syncing, and Google Drive integration with OAuth + encrypted token storage.

RSTPOS
Feb 2026 — Jun 2026Backend Developer Intern
A multi-branch Point of Sale system for retail/F&B. Built the REST API and internal dashboard — atomic stock adjustments, branch-scoped inventory, and role-based access.
02
System deep-dives
Not screenshots — the actual problems, and how they got solved.
Seria
Payments that can't double-charge
Duitku's payment webhook can retry, arrive out of order, or fire more than once for the same order — and every one of those has to end with exactly one entitlement granted, never zero, never two.
- Verify every callback against Duitku's MD5 signature before touching the database
- Treat the order row as the source of truth — a webhook for an already-PAID order short-circuits instead of re-granting
- Only call the RCON bridge to grant the in-game item after the order state transition commits
Seria
A real-time bridge to a game server
The webstore and the Minecraft server are two separate processes. A purchase on the web has to reach the game server reliably, and the plugin side has to speak RCON correctly under load.
- Built a small RCON client in Java implementing the packet protocol directly (auth, exec, response) rather than pulling in a heavier framework
- Wrapped entitlement grants behind a single sendCommand path so retries and failures are handled in one place
- Kept the plugin's responsibilities narrow — permission grants and in-game notifications, nothing else
RSTPOS
Inventory that survives concurrent branches
Multiple branches can adjust stock for the same product at the same time. Without locking, two concurrent requests can both read the same quantity and one adjustment silently overwrites the other.
- Used select_for_update() inside an atomic transaction to lock the stock row for the duration of the adjustment
- Rejected adjustments that would push quantity negative, before the write ever happens
- Logged every adjustment (branch, product, quantity, reason) for audit and reconciliation
GM Workspace
A payroll engine that can't pay twice
Bonus tiers are driven by asynchronous view-count syncing jobs. If a sync job overlaps with a payroll run, or retries after a partial failure, the same bonus can get queued more than once.
- Ordered guard logic around the payout step so a bonus can only move from 'pending' to 'paid' once
- Decoupled the view-count sync from the payout calculation so a slow or retried sync never blocks payroll from running on schedule
- Modeled tiers as data, not conditionals, so a new bonus tier is a config change, not a deploy
03
Tech stack
- Languages: JavaScript, TypeScript, Java, Python, PHP
- Frontend: Next.js, React, Tailwind CSS, HeroUI
- Backend: Node.js, Django REST, Spring, Prisma, NextAuth, Celery, HTMX
- Database: PostgreSQL, Supabase, Redis, Upstash
- Tools: Docker, Git, GitHub, Vercel, AWS, Postman, Google Cloud Console
- Currently learning: Go
- Languages
- JavaScript · TypeScript · Java · Python · PHP
- Frontend
- Next.js · React · Tailwind CSS · HeroUI
- Backend
- Node.js · Django REST · Spring · Prisma · NextAuth · Celery · HTMX
- Database
- PostgreSQL · Supabase · Redis · Upstash
- Tools
- Docker · Git · GitHub · Vercel · AWS · Postman · Google Cloud Console
- Learning
- Go
04
Experience
GM Workspace
Jul 2026 — PresentFreelance Fullstack Developer
Remote · Individual client
- Designed the payroll and tiered bonus engine end to end, including concurrency-safe payout logic
- Integrated Google Drive (OAuth + AES-256-GCM encrypted token storage) for team asset management
RSTPOS — PT. Rizq Sanjaya Teknologi
Feb 2026 — Jun 2026Backend Developer Intern
Internship
- Built REST APIs and the internal dashboard for a multi-branch retail/F&B POS system
- Implemented atomic, race-safe stock adjustment logic across branches
Seria
Jan 2026 — PresentFreelance Fullstack Developer
Remote · Minecraft server community
- Built the storefront, admin CMS, and payment gateway integration (Duitku)
- Wrote a Java/Spigot plugin bridging the web backend and game server in real time via RCON
Politeknik Negeri Lampung
Aug 2023 — PresentD3 Information Technology
Bandar Lampung, Indonesia
- Best Presentation winner at Expo 2025 for a digital building-reservation system for the campus — Next.js, Redis (Upstash), Supabase Postgres
- Where the hands-on development track started — three years in, still going
05
Let's talk
Bandar Lampung, Indonesia. Open to remote fullstack roles — backend-first — and open to discussing relocation for the right one.
Available for new work