I’m a software engineer focused on backend systems, with 7+ years of experience in banking, fintech, and business applications. I work with Go, Ruby on Rails, and PHP.
Rebuilt user and authentication services to support flexible access control.
Led the migration from NATS to RabbitMQ.
Digitized merchant onboarding and integrated dynamic QRIS payments through a third-party provider.
TokopediaSoftware EngineerNov 2021 — Oct 2023Fintech services, logistics, and database migrations.Show detailsHide details
Developed and maintained fintech services in Go.
Led the migration of a service database from MySQL to PostgreSQL.
Built a cross-docking service and a centralized shipping management system.
Migrated logging, metrics, and application performance monitoring to New Relic.
NutrifoodSoftware DeveloperApr 2019 — Oct 2021Ruby on Rails applications and legacy system improvements.Show detailsHide details
Migrated more than 50 Rails applications to Linux and introduced deployment with Capistrano.
Reduced a legacy application’s load time from over 30 seconds to under 2 seconds.
Built internal business applications, managed GitLab, and mentored interns.
Previously worked as a Software Developer Intern, from February 2018 to February 2019.
03 / About
About me
My background spans banking, fintech, logistics, and internal business software. I work on backend services, integrations, database migrations, and performance improvements.
I also work directly with clients to turn their requirements into working applications, from initial design and development to deployment and ongoing support.
Bachelor of Computer Science · BINUS University · 2015–2019
TECHNOLOGIES
Go
Ruby on Rails
PHP
JavaScript
PostgreSQL
MySQL
Development & deployment
Docker
AWS
Kamal
GitHub
GitLab
More technologies
Symfony · Laravel · WordPress · Node.js · Redis · SQL Server · MongoDB · Elasticsearch · RabbitMQ · NSQ · NATS · Linux · New Relic
Languages
English · Professional working proficiency
Japanese · Elementary
04 / Contact
Get in touch
Based in Indonesia · Open to opportunities
Engineering roles
I’m open to full-time software engineering roles in Indonesia, Japan, Singapore, and other countries. I’m willing to relocate for the right opportunity.
I built a clinic operations platform connecting appointment management with inventory, invoicing, and financial reporting for home visits, clinics, and corporate services.
I worked directly with the client to define requirements, design and build the application from scratch, and handle deployment and ongoing support.
Ruby on Rails
PostgreSQL
MY ROLE
Web Application Developer
PROJECT STATUS
Client project
Client names and website links are withheld for confidentiality. Project titles are descriptive.
My role
01
Worked directly with the client to define operational requirements and design the application.
02
Built the Ruby on Rails and PostgreSQL application, covering appointments, inventory, invoicing, doctor commissions, and reporting.
03
Handled deployment on AWS using Docker and Kamal, followed by ongoing support and improvements.
Development process
01Research & technology selection
02System design
03Development
04Testing & optimization
Key features
Appointments and service delivery
Home visits, clinic appointments, and corporate services, with support for multiple patients, services, and follow-up visits.
Inventory and logistics
Stock reservations, stock requests, and delivery notes across partners, warehouses, and pharmacies.
Payments and costs
Invoice-service integration, manually recorded payments, doctor commissions, service costs, and financial reports.
Access and reporting
Role-based access for operational teams, with dashboards and downloadable reports.
The application uses AWS and Docker, with Kamal for deployment. My responsibilities also include ongoing support and improvements.
The interface combines Tailwind CSS and Flowbite components. Turbo and Stimulus handle interactive updates, while ViewComponent organizes reusable Rails views.
Separate appointment and payment states
Appointment progress and payment status are tracked independently. Ticket totals are recalculated when relevant data changes, rather than on every save.
Stock planning and allocation
Stock needs are calculated separately from stock reservation. Allocation follows the service type and can reserve stock for all remaining doses in a course.
Domain-specific service objects
Ticketing, stock, and invoicing actions use dedicated service objects with a consistent result format for success status, data, and errors.
Workflow testing
Tests cover payments, stock, permissions, and reports. Selected tasks run as background jobs.
Diagram
Clinic Operations Platform+
Home visits · Clinic · Corporate
+Appointment ticketsRuby on Rails · PostgreSQL
01Inventory
02Payments
03Commissions & costs
System overview · illustration
This diagram explains the project’s structure. It is not a screenshot of the original application.
Recruitment & hiring platform
Jobfinder
Jobfinder brings candidate search, application management, and hiring into one platform.
As a Backend Engineer, I developed recruitment features using an internal PHP framework and MySQL, with frontend support focused on JavaScript.
PHP (internal framework)
MySQL
JavaScript
MY ROLE
Backend Engineer
PROJECT STATUS
Public platform
My role
01
Developed the admin dashboard and application search, plus backend features for candidate, job, and company pages.
02
Implemented a scouting flow in which an accepted invitation becomes an application.
03
Built the hiring workflow from interviews and offers through negotiation, in-app contract creation, and hiring.
My frontend work focused on JavaScript, with additional HTML and CSS contributions. Other team members handled visual design and styling.
Development process
01Research & technology selection
02System design
03Development
04Testing & optimization
Key features
Recruitment administration
The admin dashboard, application search, and backend features for candidate, job, and company pages.
Application routes
Candidates can apply directly or accept a scouting invitation. A scouting invitation becomes an application only after the candidate accepts.
Hiring and contracts
Interviews, offers, negotiation, contract creation inside Jobfinder, and hiring.
RECRUITMENT WORKFLOW
How recruitment works
Candidates enter the application process either by applying directly or by accepting a scouting invitation.
Scouting invitation
Candidate accepts
Application
The invitation becomes an application only after the candidate accepts.
Candidate applies
Application
A direct application enters the workflow without a scouting invitation.
Both routes continue through the same hiring stages.
01Application
02Interview
03Offer
04Negotiation
05Contract
06Hire
After negotiation, contracts are created inside Jobfinder before the candidate moves to the hired stage.
Technical details
Core stack
PHP (internal framework) · MySQL · JavaScript
Frontend
HTML · CSS · JavaScript
Infrastructure
AWS · Docker
The application uses AWS and Docker. Recruitment features are implemented within the project’s internal PHP framework.
Diagram
JOBFINDERJP / ID
Scouting invitation→Candidate accepts
↓
Application
Interview · Offer · NegotiationContract → Hire
PHP (internal framework) · MySQL · JavaScript
System overview · illustration
This diagram explains the project’s structure. It is not a screenshot of the original application.
Automotive e-commerce & pricing platform
Japanese Online Retailer
I built an e-commerce platform for a Japanese online retailer specializing in automotive parts, tires, and tuning equipment.
Using PHP (Symfony) and MySQL, I developed the customer-facing storefront and connected operations dashboard, including Kakaku.com integration and competitor-based pricing logic.
PHP
Symfony
MySQL
MY ROLE
Web Application Developer
PROJECT STATUS
Client project
INTEGRATION
Kakaku.com
Client names and website links are withheld for confidentiality. Project titles are descriptive.
My role
01
Developed the customer-facing automotive storefront and its connected operations dashboard using Symfony and MySQL.
02
Integrated Kakaku.com and implemented competitor-based pricing logic to help improve the retailer’s listing position.
Development process
01Research & technology selection
02System design
03Development
04Testing & optimization
Key features
Automotive storefront
An e-commerce storefront for automotive parts, tires, and tuning equipment.
Operations dashboard
The back-office application, developed alongside and integrated with the customer-facing storefront.
Kakaku.com and pricing
Integration with Kakaku.com and pricing logic based on competitors’ prices, aimed at improving listing position.
Technical details
Core stack
PHP · Symfony · MySQL
Frontend
HTML · CSS · JavaScript
Infrastructure
AWS · Docker
The e-commerce storefront and connected operations dashboard use PHP (Symfony) and MySQL, with AWS and Docker as part of the infrastructure.
Diagram
AUTOMOTIVE / JP
01Automotive storefront
↔
02Internal dashboard
PHP · Symfony · MySQL
Kakaku.comCompetitor-based pricing
System overview · illustration
This diagram explains the project’s structure. It is not a screenshot of the original application.
Course sales & video learning Archived
Online Course Platform
I worked directly with the client to define requirements, then designed and built an online course platform from scratch using PHP (Laravel) and MySQL.
Users can purchase courses and watch the course videos directly on the website.
PHP
Laravel
MySQL
Frontend HTML · CSS · JavaScript
MY ROLE
Web Application Developer
PROJECT STATUS
Archived project
Client names and website links are withheld for confidentiality. Project titles are descriptive.
My role
01
Worked directly with the client to define the requirements and project scope.
02
Designed and built the website and web application from scratch using PHP, Laravel, and MySQL.
03
Implemented course purchasing and on-site access to course videos.
Development process
01Client discussions
02Requirements
03Development
Key features
Course purchases
Users can purchase courses through the website.
On-site learning
Users can watch the courses they have purchased directly on the website.
Corporate website Archived
Agricultural Company Website
I built a WordPress corporate website for an Indonesian agricultural supplier and exporter.
The website presents its products, company information, and contact details.
WordPress
Frontend HTML · CSS · JavaScript
MY ROLE
WordPress Developer
PROJECT STATUS
Archived project
Client names and website links are withheld for confidentiality. Project titles are descriptive.
Brand website Archived
Fashion Brand Website
I built a WordPress website for an Indonesian fashion brand.
The website presents its collections and brand information.
WordPress
Frontend HTML · CSS · JavaScript
MY ROLE
WordPress Developer
PROJECT STATUS
Archived project
Client names and website links are withheld for confidentiality. Project titles are descriptive.