Projects
projects/
Projects
-
ack-nestjs-boilerplate Open-source NestJS starter for new services View project
-
Rekt Game Core Main backend of a competitive blockchain game View project -
Rekt Game Chat Real-time messaging for a blockchain game View project -
Kadence K-OINS Online survey and panel app for Indonesia View project -
Kadence Internal Tools Expense platform for internal use View project
-
Kadence Kepo Field-operation app for registered shoppers View project
-
Korner App for paid live legal consultations View project - Confidential Field Operation Platform Market-research platform for field visits View project
Gradana P2P lending platformMAP Loyalty System Multi-tenant loyalty system for iOS, Android and web
- confidential client Vehicle Rental System Web platform for vehicle rental
- # Projects
- README shows one card per project, in the order below: the logo, the name, where it was done with the card's number under the name, and one line for what the product is (the "Card" line). The 8 projects with a project page are numbered #001 to #008 and link to it. The 3 without one show no number and no label, and do not link. Confidential work shows "confidential client" instead of a logo; MAP Loyalty System shows the MAPCLUB logo; Kadence Kepo shows the Kadence logo.
- Filters above the cards: All, Open source, Rektstudios, Kadence, Freelance. Gradana and MAP Loyalty System appear under All only.
- Each entry below keeps the facts behind the card: role, where, dates, platforms, stack and a short description. The full story is in `data/projects/<project>.md`.
- ## ack-nestjs-boilerplate, open source
- Sole maintainer, open source. Jan 2022 – Present
- Stack: NestJS 12, TypeScript 6, Prisma 6, MongoDB, Redis, BullMQ, Zod 4, Vitest, AWS, Docker
- Card: Open-source NestJS starter for new services
- My NestJS starter, described in full under Open source above.
- Project page: `/projects/opensource-ack-nestjs-boilerplate`
- ## Rekt Game Core, Rektstudios
- Founding backend engineer (team of 3), Rektstudios, part-time, then full-time from Nov 2024. Sep 2024 – Present
- Stack: NestJS, TypeScript, PostgreSQL, Prisma, Redis, RabbitMQ, BullMQ, AWS
- Card: Main backend of a competitive blockchain game
- The main backend of a blockchain game, built from scratch by our backend team: auth, wallet, store, NFT marketplace, game runs, XP and level progression, battle pass, referral reward and realtime leaderboard in one NestJS service. HTTP to clients. Core consumes game and indexer events from RabbitMQ. Core publishes only profile sync to Chat on RabbitMQ. Mint and transfer go out through the Engine SDK. BullMQ on Redis runs workers. Money writes go through a wallet ledger with Postgres advisory locks, compare-and-swap status transitions and idempotency keys. WEB2 and WEB3 trades share a marketplace. A WEB2 fill settles as buyer debit, NFT ownership and seller credit. A WEB3 fill arrives from Envio on RabbitMQ and a job applies it. Sign-up can take an optional referral code, issues the user's own code and grants a free character. Login checks active and 2FA, then issues a JWT. Stripe card top-up from $5 to $500: Core creates the intent, re-fetches the PaymentIntent after the Stripe webhook, then enqueues the wallet credit. SpludgeWars match XP writes on the primary. Leaderboard lists read the replica, daily through all-time, top 100. CryptoRun game runs go through a BullMQ queue capped at 5 concurrent games.
- Project page: `/projects/rektstudios-core`
- ## Rekt Game Chat, Rektstudios
- Founding backend engineer (team of 3), Rektstudios, full-time. May 2025 – Present
- Stack: NestJS, GraphQL, Socket.IO, MongoDB, Redis, RabbitMQ
- Card: Real-time messaging for a blockchain game
- The game's messaging service, built from scratch by the same team: direct messages, public, private and global groups (global groups allow guests), friends and blocking, typing indicators and presence across devices. GraphQL handles reads and writes, Socket.IO the live events, and a Redis adapter lets it run as several instances. Chat verifies Core JWTs and copies profiles over RabbitMQ.
- Project page: `/projects/rektstudios-chat`
- ## Kadence K-OINS, Kadence International
- Architect and lead, Kadence International, full-time. Jan 2022 – Nov 2024. iOS, Android (App Store and Google Play)
- Stack: NestJS microservices, MongoDB, RabbitMQ, Flutter, Xendit, AWS
- Card: Online survey and panel app for Indonesia
- A survey and panel app for Indonesia. Panelists are matched to surveys by demographics, with quotas enforced, and answer through a logic engine with 11 question types that can jump, disqualify or complete. They earn points and cash them out through Xendit. K-OINS runs on 4 services of a NestJS backend it shares with Kadence Kepo: the user service, which I built first, during Kepo, and the survey, point and contact services, which I built for K-OINS. The services talk to each other through RabbitMQ. I also built the Flutter app and the infrastructure. 18k panelists have registered and about 2k are active each month. The app is rated 4.2 on the App Store and 3.6 on Google Play.
- Project page: `/projects/kadence-k-oins`
- ## Kadence Internal Tools, Kadence International
- Lead Engineer, built the API, Kadence International, full-time. Jul 2024 – Oct 2024. Web
- Stack: NestJS, MongoDB, BullMQ, Puppeteer, Next.js, AWS
- Card: Expense platform for internal use
- The company's expense platform. Each division is a workspace, so its claims stay private to it. Staff file purchase orders, reimbursements and settlements, then export a PDF. I led it as Lead Engineer and built the API. A teammate built the Next.js web app.
- Project page: `/projects/kadence-internal-tools`
- ## Kadence Kepo, Kadence International
- Lead Engineer, built the backend, the Android app and the upload page's API, and ran the infrastructure, Kadence International, full-time. Jul 2021 – Dec 2021. Android (outside the app stores), web dashboard, web upload page
- Stack: NestJS microservices, MongoDB, RabbitMQ, Flutter, AWS S3
- Card: Field-operation app for registered shoppers
- Logo: the Kadence logo (`public/assets/brands/kadence.svg`); Kadence Kepo has no logo of its own
- Kadence's field-operation app for its registered shoppers, built in about 6 months at the start of my time at Kadence. Only registered shoppers use it, so it has 1k–2k users. It ran 3 Kadence fieldwork projects at the same time, with shoppers uploading and recording at once, on a minimal server: 2 GB RAM, 1 vCPU and 50 GB of storage. With memory optimization, the app ran on that server. The app sends GPS to the API when a visit starts and when it is marked visited, and keeps photos, videos and audio on the phone until upload. It sends each file to the API in 50 MB chunks, and the API passes each chunk on to AWS S3 as one part. A failed upload is sent again from the start, with a retry button on each file. When the app's traffic is full, shoppers can upload in a browser on a separate web upload page. The Android app is distributed outside Google Play and the App Store. I led it as Lead Engineer. I built the backend, the Android app and the upload page's API, and ran the infrastructure. My teammate built the front end of the web dashboard and the web upload page, and a designer designed the UI. Kadence Kepo is a separate project from Field Operation Platform, my freelance field-operation app, and is not Kepo Solusi Indonesia, where I had my first backend role.
- Project page: `/projects/kadence-kepo`
- ## Korner, freelance (legal consultation)
- Fullstack Engineer, freelance. Oct 2023 – Apr 2024. iOS, Android (App Store and Google Play)
- Stack: NestJS, MongoDB, Flutter, Next.js, Twilio, Xendit, Docker, GitHub Actions, AWS
- Card: App for paid live legal consultations
- Legal tech platform that connects people with lawyers for 30-minute live consultations, booked and paid in the app. Clients book and pay for 30-minute live consultations with lawyers. The chat room for a slot opens 5 minutes before it starts and closes itself when the time is up. A 10-minute cron sweep closes any session the chat webhook missed. A booking can carry a voice note of up to 5 minutes and PDFs, stored on S3. Live chat runs on Twilio Conversations. Xendit handles the invoices and payouts. I built the NestJS API, the Next.js admin dashboard, and the Flutter app for iOS and Android. The dashboard approves lawyers, reviews lawyers, and lists transactions. I recommended hosted chat and payments. The client chose Twilio Conversations and Xendit.
- Project page: `/projects/freelance-korner`
- ## Field Operation Platform, freelance (market research, confidential)
- Fullstack Engineer, freelance. Feb 2025 – Aug 2025. Web, Android
- Stack: NestJS, MongoDB, Flutter, Nuxt.js, Vue.js, Vite, Vuetify, Agenda, AWS S3, Docker, GitHub Actions
- Card: Market-research platform for field visits
- Field agents receive tasks, capture photo, video and audio on visits, and send it to the operations team, often on a weak signal. Media stays on the device until the agent is connected. An in-app queue then uploads one file at a time straight to S3 in 30 MB chunks through presigned URLs, and a failed upload continues from the next unfinished chunk. Operations assign tasks and review the media in a Nuxt dashboard.
- Project page: `/projects/freelance-field-operations`
- ## Gradana, Gradana Indonesia
- Associate Fullstack Engineer, Gradana Indonesia, full-time. Mar 2020 – Jul 2021. Web, mobile
- Stack: Microservices, Alibaba Cloud, Jenkins
- Card: P2P lending platform
- Gradana is a P2P lending platform. I split its live monolith into microservices in stages, on Alibaba Cloud infrastructure I designed, with Jenkins CI/CD and automated tests. The work supported OJK certification.
- ## MAP Loyalty System, Gtech Digital
- Backend Engineer, Gtech Digital, full-time. Apr 2019 – Mar 2020. iOS, Android, web
- Stack: REST APIs, NoSQL, MySQL
- Card: Multi-tenant loyalty system for iOS, Android and web
- Multi-tenant loyalty APIs for iOS, Android and web, with NoSQL and MySQL schemas tuned for loyalty transactions with high-frequency reads and writes.
- ## Vehicle Rental System, freelance (confidential)
- Backend developer, freelance. Jan 2020 – Aug 2020. Web
- Stack: Java, Vert.x, PostgreSQL, Git
- Card: Web platform for vehicle rental
- A web platform for vehicle rental: live vehicle tracking, rental orders, purchases and invoicing. I connected the tracking hardware, built the ingest from the IoT trackers into PostgreSQL for live vehicle status, and wrote the services for orders, purchases and invoices.