I build and ship real products end-to-end — Flutter apps, Next.js backends, Postgres, and the infra to run them. Currently building the DRW Skincare ecosystem: a POS app used by ~1,000 beauty consultants and the platform behind it.
I'm a self-driven developer who likes owning a product from idea to production — designing the data model, building the app, wiring the API, and keeping it running on real infrastructure.
Most of my time goes into the DRW Skincare ecosystem: a Flutter point-of-sale app used daily by around a thousand beauty consultants, its Next.js + PostgreSQL backend, and a handful of other web apps for clients and side projects.
Products I've designed, built, and shipped end-to-end.
Point-of-sale SaaS for small shops and for brands that sell through reseller networks: cashier, stock, customers and profit reports, with prices set per reseller level and paid modules unlocked per store. A clean fork of the POS I built for a thousand-consultant skincare network, started on a fresh git history, stripped of every integration with the original business, and on the App Store nine days after the first commit. A module unlocks only after the server confirms the payment's status and amount with the payment gateway itself, so a forged notification activates nothing. Flutter on Android and iPhone (Huawei AppGallery in review) plus a web cashier, on Next.js 15 + Prisma/PostgreSQL, self-hosted. Live at berlaris.com.
Quran-reading app that verifies recitation from the user's voice via real-time forced alignment (no tajwid scoring — just live "heard-word" tracking). Speech recognition runs fully on-device (Zipformer2 CTC phoneme model, ONNX INT8 ~73 MB): audio never leaves the phone, works offline, with automatic server fallback. Community layer: public "Jelajah" groups, collaborative split-page reading (up to 3 readers, per-member colour building a whole-Quran "Peta Khatam"), khatam cycles, endless leaderboards, badges, realtime chat/DM, and universal-link sharing. Flutter (Android/iOS/Web) + FastAPI + PostgreSQL + ONNX Runtime, self-hosted on a VPS. On Google Play and the App Store; live at berquran.com.
Network of ten media accounts publishing to Instagram, Facebook, TikTok and YouTube on a fixed slot schedule, with generation and posting fully automated. The brands are RameRamai, Dunia Hewan Tumbuhan (animals and plants for children), Yeorobun Space (Korean culture), Kulineerss (food), Ramaibola (football), Lobi Gaming (games), Keliling Dunia (travel), Iman Islam Ihsan, Konsul Dokter (medical education, where a medical-claims guard has to pass every post) and Aiera; seven of the accounts started publishing within one month because every brand runs on the same pipeline. The publishing rate is decided per slot from queue depth: twenty or more pending links and all ten slots fire, below that only the five core slots run and the half-hour slots are skipped without catch-up. Contributors feed the queue through a Chrome extension that adds a queue button to posts on X, TikTok and Instagram. The applications share one sign-on and one roster, each holding its own internal token scope so a token minted for one brand cannot act as another; an archive polls Instagram after each post and stores views, reach and engagement, which is why the numbers are measured rather than estimated. Between 1 July and 22 October 2026 it published 3,545 posts and drew 121.3 million views on Instagram alone, with October's 1,934 posts outnumbering the whole previous quarter. On the July to September posts, which have had time to settle, the top 1% account for 66% of views, one post reached 13.5 million, and the median post 2,269. Next.js + PostgreSQL, self-hosted on a VPS via Coolify. Live at r2media.id.
Flutter point-of-sale app used daily by ~1,000 beauty consultants across Android, iOS & Web. Full-online architecture, Riverpod state management, thermal-printer receipts, per-reseller stock, tiered pricing, and a loyalty/coin wallet — backed by the Next.js + PostgreSQL platform. On Google Play and the App Store; web build live at pos.drwskincare.com.
Facial & skin-treatment salon site for Beauty Center (by DRW Skincare) — affordable clinic-grade facials (under 100K) with treatment listings and a booking flow. Built with Next.js 16 and Clerk auth, with a Ghost-powered blog. Live at beautycenter.id.
Community engagement platform (Next.js + PostgreSQL) with gamified ranking, tasks, badges and a loyalty/coin system bridged to the DRW wallet. Self-hosted on its own VPS via Coolify + Cloudflare, with scheduled jobs driving imports and payouts. Live at berkomunitas.com.
Aesthetic-clinic website with an integrated affiliate-marketing system — auto-generated referral codes, automatic 10% commission tracking on actual payments, a member dashboard, and an admin panel for managing reservations. Built with Next.js 15, Clerk auth, and Prisma/PostgreSQL. Live at drwprime.com.
The Next.js 15 + TypeScript + PostgreSQL platform behind DRW Skincare — mobile POS API, web cashier UI, e-commerce storefront, SSO (Google & Apple), a loyalty/coin wallet, and a promo/discount engine. Self-hosted on a VPS with Docker + GitHub Actions CI/CD. Live in production at drwskincare.com.
Social-media marketing reporting platform that pulls page and ad performance from Meta into one dashboard, now being turned into a multi-tenant SaaS for social-media specialists. Meta's app review approved eight permissions in October 2026. A monorepo with a public SPA, a Next.js API, and a BullMQ + Redis worker for background jobs, self-hosted on a VPS via Coolify. Live at mizu.mkwiro.online.
Learning platform for a licensed beauty-training institute, rewritten from a CodeIgniter 3 LMS into Laravel 13 + Filament 5 on PostgreSQL and cut over in place on 8 October 2026. The import reconciles exactly against the old database: 703 learners, 1,251 enrolments, 765 certificates and 3,016 lesson-progress records, with the legacy data's own bugs handled on the way in, such as a progress value of "100" stored as a timestamp. New lessons stream from Bunny Stream through signed embeds and are uploaded straight from the admin form, media lives on Cloudflare R2, learners can sign in with Google, and the database goes offsite every night to a bucket under a 30-day object lock. Live at drwacademy.com.
Project-management product built as a fork of Plane CE, used to move a 21-person team off ClickUp: 13,498 work items across 23 projects and 14,815 of 14,816 attachments, 205 GB in all. Storage runs on Cloudflare R2, which does not support the presigned POST uploads Plane is built on, so the fork patches uploads over to presigned PUT behind a switch that keeps MinIO as the rollback path, and documents the patch so it survives rebasing onto upstream. Marketing site and app split across two hosts the way ClickUp does it, with signed-in visitors forwarded straight to the app. Django + React, self-hosted. Live at hyperformance.space.
Employee app and HRIS that began as an in-house rebuild of a hospitality group's HR system, taken over from an outside vendor whose Laravel app exposed no API, so the data came out by scraping its pages. Re-scoring the imported attendance found 155 records stamped "on time" that were not. It is now a product of its own: selfie check-in with a location and time watermark, geofencing that flags rather than blocks, a team timeline of photo-proof daily work, automatic payroll with PPh 21 from the PP 58/2023 TER tables, THR, salary advances and Coretax export, and a partner API with outgoing webhooks. Next.js 16 + PostgreSQL with a Flutter app on Android, iPhone and Huawei, self-hosted. Live at berkarya.app.
AI platform formed in October 2026 by merging two of my products, an AI gateway and an image and video studio, into one app. An OpenAI-compatible API buys model capacity wholesale through LiteLLM and resells it with per-user virtual keys, monthly budgets and a rupiah wallet topped up through Xendit, with usage, cost and margin reported per key. Around it sit a chat app, the studio, and an MCP server with OAuth so coding agents can plug in directly. Next.js 15 + Prisma/PostgreSQL (pgvector) + Redis, self-hosted. Live at ai-era.id.
Booking and operations platform for a group running boarding houses, villas and guest houses: 25 properties in 6 cities, 689 rooms. Taken over from an outside vendor and rebuilt end to end: room browsing and booking with Xendit payments, WhatsApp OTP sign-in, and an admin for properties, prices, bookings, retail sales with loyalty points, and company receivables with invoices and payment links. Residents use a Flutter app on the App Store and Google Play, or a web app that runs on the same server-side logic. Next.js 16 + Prisma/PostgreSQL, on its own server with GitHub Actions deploys. Live at livioo.id.
Double-entry accounting app for a hospitality group of ~25 branches, rebuilt from a legacy Laravel system — hierarchical chart of accounts, balanced journals, Excel import, period closing, and computed reports (general ledger, worksheet, profit & loss, balance sheet) with separate books per business unit. Next.js + Prisma/PostgreSQL, self-hosted via Coolify. Live at financioo.dzawanikost.com.
Flutter companion app for DRW Skincare patients — guided photo and video capture that documents skin-treatment progress over time, walked through step by step by an Indonesian voice assistant ("Buperi"), backed by a dedicated journey API on the DRW platform. Android & iOS, built alongside the POS app.
Member app, website and back office for a women-only gym and pilates studio in Yogyakarta: class booking, QR check-in that deducts session credits, membership and expiry tracking, push notifications, and in-app payment with a native QRIS flow via Xendit. The Flutter app was rewritten from React Native, on a NestJS + PostgreSQL API. All three surfaces were redesigned in October 2026, and app 2.1.0 is live on the App Store and Google Play. Live at wondher.fit.
Have a project in mind — an app, a website, or a system that needs to scale? Drop me a line.