Firman Aprilian Sugiharto

Firman AprilianSugiharto

Fullstack engineer building APIs and realtime services with Go and TypeScript.

Stack
Go, TypeScript, Next.js, PostgreSQL, MySQL, WebSocket, Docker
Focus
APIs, databases, realtime updates
Open to fullstack engineer roles

Selected work

A simulation of the heartbeat logic in my Device Monitoring System. One tick is one 10 s heartbeat, played at 0.7 s. A device with three missed ticks (30 s) is marked OFFLINE.

Realtime backend system

Device Monitoring System

A monitoring system that tracks device availability. Devices report in with periodic heartbeats, a background process finds the ones that went quiet, and the dashboard updates over WebSocket without a page refresh.

Heartbeat
every 10 s
Monitor
checks every 5 s
Offline
after 30 s of silence
Push
WebSocket, DEVICE_STATUS_CHANGED
  • Go
  • Gin
  • PostgreSQL
  • WebSocket
  • JWT
  • Docker
  • Docker Compose
  • Next.js
  • TypeScript
Local recording with the five-device simulator. I stop the simulator, every device goes OFFLINE once the heartbeat timeout passes, and ONLINE again when it restarts. The timeout was set to 15 s for the recording (default 30 s).

Transactional backend API

Disbursement API

A backend API for managing fund disbursement requests, with JWT authentication, role-based authorization, status rules, pagination, search and CSV export.

States
PENDING → APPROVED or REJECTED
Guard
409 if already processed
Auth
JWT, role-based access
Lists
pagination, search, CSV export
  • Go
  • REST API
  • MySQL
  • JWT
  • GORM
  • Docker
localhost:8080captured in Postman
  1. POST/api/auth/login200 OKReturns a JWT and the user with role: admin.
  2. POST/api/disbursements201 Createdstatus: "PENDING", admin_fee: 2500 for an amount of 1500000.
  3. PATCH/api/disbursements/1/status200 OKBody { "status": "APPROVED" }. Response has status: "APPROVED" and processed_by.
  4. PATCH/api/disbursements/1/status409 ConflictBody { "status": "REJECTED" } on the same record. Error: "hanya disbursement pending yang dapat diproses" (only pending disbursements can be processed).
Real requests against the local API. The last one is rejected because the disbursement was already processed.

About

I’m a fullstack engineer. For over three years I built and maintained web applications for clients and internal teams, including CRM and POS systems in PHP and MySQL.

In Go I’ve built the Device Monitoring System (WebSocket, PostgreSQL) and the Disbursement API (JWT, role-based access, MySQL). Both use Docker. I also write TypeScript: Bun, Hono and Prisma on the server, React and Next.js on the client.

Experience
3+ years in web development
Education
S1 InformatikaUniversitas Teknologi Digital Indonesia, 2017 – 2023
Speaks
Indonesian, English

Stack

Backend
  • Go (Gin, Gorilla Mux, GORM)
  • PHP (Laravel)
  • TypeScript (Bun, Hono, Prisma)
APIs and realtime
  • REST
  • WebSocket
  • JWT authentication
  • Role-based access control
Databases
  • PostgreSQL
  • MySQL
Frontend
  • TypeScript
  • React
  • Next.js
Tooling
  • Docker
  • Docker Compose
  • GitHub Actions
  • Git

Experience

  1. Oct 2022 – Mar 2026

    Developer at PT. Benderaku Berkibar Selalu

    Built and maintained web applications for client projects and internal use, including CRM and POS systems that supported sales and customer service.

    • Implemented features, fixed bugs and handled ongoing maintenance
    • Managed and updated MySQL databases
    • Debugged and troubleshot applications to keep them stable

    PHP / MySQL / JavaScript / Git

  2. 2020

    Web Developer at Neox Indonesia

    Supported web development and maintenance for client and internal applications, from backend work to debugging and data management.

    • Implemented web features and maintained existing functionality
    • Worked with PHP, JavaScript and MySQL
    • Debugged and troubleshot web applications

    PHP / JavaScript / MySQL

  3. 2016

    Web Development Intern at Universitas Hamzanwadi

    Four-month vocational school internship supporting website development, testing and maintenance.

    • Built basic features and fixed small bugs
    • Tested and maintained existing functionality

    PHP / MySQL / JavaScript

Contact

Open to fullstack engineer roles.

Email is the fastest way to reach me.

firman.apriliann@gmail.com