Lompat ke konten
vhmns

Terbuka untuk kerjaMenerima pekerjaan produk web, AI tooling, dan automation.

Saya bikin software yang dipakai usaha kecil tiap hari — dan turun sampai ke lapisan paling dasar sistemnya.

Saya developer di Indonesia. Sebagian besar yang saya kerjakan adalah software yang dipakai usaha kecil untuk jalan sehari-hari.

Pekerjaannya jarang benar-benar “bikin website”. Lebih sering: mengambil sesuatu yang sudah dijalankan sebuah usaha, lalu membuatnya hidup di web — harganya disebut sebelum ditanya, jam bukanya benar saat itu juga, pesanan masuk ke thread WhatsApp yang memang mereka baca. Bagian itulah yang menentukan barangnya kepakai atau tidak. Dan kalau masalahnya ternyata ada lebih ke bawah — soal bagaimana satu hash mengunci hash berikutnya, berapa biaya token sebenarnya lintas provider, apa yang bisa dan tidak bisa dipaksakan ke sebuah kontrak — saya turun ke situ, bukan memutarinya.

Baca indeksnya

01–14

Indeks

14 entri, diurutkan dari yang paling layak dilihat, bukan dari kapan dibuatnya. 6 di antaranya kerja klien. Semuanya tertaut langsung ke barangnya atau ke kode sumbernya.

01WebKerja klien

Jadiin Rupiah

Minyak jelantah, dijemput ke tempat dan dibayar langsung.

Bisnis yang benar-benar jalan di atas satu halaman: membeli minyak jelantah dari rumah tangga, warung, dan restoran se-Jabodetabek, lalu menyalurkannya ke fasilitas resmi untuk diolah jadi biodiesel, bio-avtur, sabun, dan lilin.

Syarat dagangnya ditaruh paling depan, bukan sesuatu yang harus ditanyakan dulu — Rp6.000-8.000 per liter, minimal 15 liter, jemput gratis, timbang terbuka, bayar di tempat. Jalur masuknya cuma dua, form penawaran dan WhatsApp, karena memang itu yang sudah dipakai para penjualnya.

jadiinrupiah.com · Next.js · React · Tailwind CSS · Vercel

02ToolKerja klien

KitchenCy

HPP yang benar-benar benar, dan rencana produksi yang mengikuti penjualan nyata.

Asisten gratis untuk UMKM F&B. Menghitung HPP dengan benar, bukan berhenti di harga bahan; merencanakan produksi harian dari pola penjualan sebelumnya dengan saran AI di atasnya; dan mencatat sisa dapur supaya tidak diam-diam berakhir di TPA.

Sudut pandangnya dipilih dengan sadar: yang dijual di depan adalah soal makanan terbuang, sedangkan untung yang lebih sehat diposisikan sebagai efek samping, bukan judulnya.

kitchencycle.vercel.app · Next.js · React · Tailwind CSS · Vercel

03ToolProyek sendiri

Hermes Cost Tracker

CLI yang menjawab berapa biaya sebenarnya sebuah agent, lintas semua provider yang dipakainya.

Agent menghabiskan biaya API diam-diam — masalah klasik runaway cost. Tiap provider punya dashboard sendiri, periode tagihan sendiri, dan satuan hitung sendiri, sehingga satu angka yang benar-benar dibutuhkan, berapa biaya agent ini hari ini, justru tidak ada di mana pun.

Tool ini mencatat pemakaian token tiap panggilan, menghitung biayanya dari tabel harga yang bisa disunting, lalu menampilkannya sebagai dashboard. Bisa dipakai ke endpoint apa pun yang kompatibel OpenAI, dengan tarif untuk sekitar dua puluh provider — OpenRouter, Anthropic, Nous Portal, Groq, DeepInfra, Together, Ollama, dan lainnya — semuanya diatur di satu file JSON, bukan dipaku di dalam kode.

Dua batasan yang membentuknya. Tanpa dependensi sama sekali, supaya memasang pelacak biaya tidak malah jadi masalah supply-chain sendiri. Dan kuncinya dibaca dari environment variable atau config yang di-gitignore, tidak pernah ikut ter-commit.

github.com/vhmns14/hermes-cost-tracker · Python · Zero dependencies · CI

04WebKerja klien

Sijantan

Jawaban lurus soal vasektomi, tanpa menyimpan siapa yang bertanya.

KB di Indonesia terlanjur dianggap urusan istri, dan kebanyakan yang didengar laki-laki soal vasektomi keliru. Situs ini membongkar mitosnya satu per satu — lewat kuis, artikel, AI yang bisa ditanyai langsung, dan jalan untuk mencari dokter kalau sudah siap.

Sikap soal privasi adalah keputusan produknya, bukan catatan kaki: tanpa akun, tanpa data pribadi, tanpa riwayat tersimpan. Orang yang membuka halaman ini melakukannya diam-diam, dan situsnya dibangun supaya tetap begitu.

sijantan.id · React · Vite · Tailwind CSS · Vercel

05WebKerja klien

ZFC.Idn

Storefront ayam geprek yang tahu kapan dirinya tutup.

Menu, keranjang, level pedas, area delivery, dan lokasi cabang untuk usaha ayam geprek, dengan proses pesan dilempar ke WhatsApp dan Grab karena dari situlah pesanan memang datang.

Detail yang menentukan di halaman makanan: jam buka bersifat live, bukan sekadar dicetak. Bagian atas menyatakan sedang buka atau tidak dan tutup jam berapa, jadi tidak ada yang memesan ke dapur yang sudah tutup.

zfcidn.vercel.app · Next.js · React · Tailwind CSS · Vercel

06WebKerja klien

Rill Kopi & Dessert

Kedai kopi dan dessert di Purwokerto, bisa dipesan lewat tiga jalur.

Cerita, menu, lokasi, dan kontak untuk kedai specialty coffee dan dessert, dengan pemesanan lewat WhatsApp, GrabFood, atau ShopeeFood.

Nada visualnya sengaja dibuat berbeda dari storefront yang lain: tipografi yang tenang, ruang kosong yang lega, ilustrasi alih-alih foto. Kedai kopi dan gerai ayam goreng tidak seharusnya terlihat seperti template yang sama, dan di sini memang tidak.

rilldessert.vercel.app · Next.js · React · Tailwind CSS · Vercel

07ToolProyek sendiri

Hermes Skill Audit

Memindai skill agent untuk hal-hal yang seharusnya tidak pernah ada di dalamnya.

Skill agent dikontribusikan pengguna dan sebagian besar tidak diperiksa siapa pun — kamu memasang satu dari hub, lalu ia jalan dengan shell dan kunci milikmu. Tool ini memindai folder skill atau plugin sebelum itu terjadi.

Yang dicari: perintah destruktif, unduhan yang langsung dialirkan ke shell, eskalasi hak akses, obfuskasi seperti eval hasil decode base64, POST keluar yang berpotensi eksfiltrasi, dan teks prompt injection yang diselipkan di markdown skill itu sendiri. Yang terakhir itu kasus paling menarik: serangannya sama sekali bukan di kode, melainkan di kalimat yang sebentar lagi dibaca agent-nya.

github.com/vhmns14/hermes-skill-audit · Python · Zero dependencies · CI

08OnchainProyek sendiri

ProofOfHabit

Pertaruhkan kebiasaanmu. Setiap hari yang bolong, jatah hari itu dibakar.

Perjanjian antara kamu dan dirimu sendiri, dengan blockchain sebagai saksi. Sebut kebiasaannya, kunci sejumlah MON, tentukan jangka waktunya dalam hari. Tiap hari kamu check-in onchain, jatah hari itu kembali; tiap hari yang bolong dikirim ke dead address, di luar jangkauan siapa pun termasuk pembuatnya.

Penyelesaiannya pro rata, bukan menang-kalah: sepuluh hari dengan dua hari bolong mengembalikan delapan puluh persen dan membakar dua puluh. Kontraknya tidak punya owner dan tidak punya pintu belakang, dan justru itulah satu-satunya alasan janjinya berarti.

proofofhabit.vercel.app · github.com/vhmns14/proofofhabit · Solidity · React · Vite · wagmi · WalletConnect · Zustand · Monad Testnet

09LabProyek sendiri

Merkle Tree Visualizer

Struktur yang membuat pemalsuan selalu kelihatan, dibuat bisa disentuh.

Merkle tree biasanya dijelaskan lewat diagram yang tidak bisa disentuh. Kamu bisa membaca bahwa mengubah satu leaf akan mengubah root dan tetap tidak merasakan kenapa itu penting, sebab reaksi berantainya adalah inti gagasannya dan gambar diam tidak bisa menunjukkan sebuah reaksi.

Ubah satu blok dan semua hash di atasnya dihitung ulang dengan SHA-256 asli. Klik sebuah leaf dan ia menandai hash-hash sibling yang menyusun Merkle proof-nya, lalu memutar ulang langkah demi langkah untuk menunjukkan semuanya menghasilkan root yang sama. Level ganjil menduplikasi node terakhir seperti cara Bitcoin, dan node duplikatnya digambar putus-putus, bukan disembunyikan.

Demo di bawah halaman ini adalah gagasan yang sama, dibangun ulang untuk situs ini dengan hash sinkron supaya seluruh tree bisa dihitung ulang tiap ketikan.

merkletree-visualizer.netlify.app · github.com/vhmns14/merkle-tree · JavaScript · Web Crypto SHA-256

10GameKerja klien

Airline Tycoon

Dirikan maskapai, pilih hub-nya, usahakan tidak bangkrut.

Sim manajemen di browser: namai maskapainya, beri slogan, emblem, dan dua warna merek, pilih home hub dari kode bandara sungguhan, tentukan tingkat kesulitan, lalu jalankan penerbangan real-time, kargo di peta, dan operasi armada dari situ.

Ekonomi adalah sebuah sistem, dan cara tercepat memahaminya adalah membangun versi kecilnya lalu mengamati di mana ia jebol.

airline-tycoon-six.vercel.app · github.com/vhmns14/airline-tycoon · TypeScript · React · Vite · Tailwind CSS · Zustand

11WebProyek sendiri

Invoice Generator

Invoice dengan pratinjau langsung dan PDF di ujungnya, tanpa backend sama sekali.

Sampai lima profil usaha, masing-masing dengan logo dan nomor urut invoice sendiri. Baris item menjumlah otomatis, pajak dan diskon bisa disunting, dan pratinjaunya berdampingan dengan form di desktop lalu jadi tab di ponsel. Statusnya Draft, Terkirim, Lunas — dan berubah sendiri jadi Jatuh Tempo begitu tanggalnya lewat.

Semuanya disimpan di localStorage browser, dan justru itu inti desainnya: tidak ada akun yang harus dibuat, tidak ada server yang perlu dipercaya memegang daftar klien orang, dan PDF A4-nya dirender di mesin yang sama dengan yang mengetiknya. Invoice yang sudah jadi bisa dibagikan sebagai teks siap-WhatsApp atau diekspor ke CSV.

invoice-generator-nine-kappa.vercel.app · github.com/vhmns14/invoice-generator · React 19 · Vite 8 · Tailwind CSS 4 · jsPDF · html2canvas-pro

12ToolProyek sendiri

Agent Log Redactor

Membersihkan rahasia dan data pribadi dari log agent sebelum sempat ter-commit.

Ruang kerja agent diam-diam terisi hal-hal yang tidak boleh terdorong ke repo: API key di output debug, alamat email di transkrip, path home directory di file memori. Sekali saja git add . tanpa berpikir, semuanya jadi publik selamanya.

Tool ini menyamarkannya lebih dulu — kunci provider OpenAI, Anthropic, OpenRouter, GitHub, Google, Stripe, AWS, Slack, dan Telegram, ditambah JWT, kunci privat SSH, dan penugasan KEY=secret polos, berikut email, alamat IP, nomor kartu, dan path /home/.... Pola tambahan bisa disisipkan lewat baris perintah, dan exit code --fail mengubahnya jadi gerbang CI, bukan sesuatu yang harus kamu ingat untuk dijalankan.

github.com/vhmns14/agent-log-redactor · Python · Zero dependencies · CI

13DaftarProyek sendiri

Free AI API Tiers

Provider AI mana yang benar-benar gratis, dijaga tetap jujur oleh pemeriksaan mingguan.

Daftar kurasi dengan definisi yang ketat: gratis berarti tier berulang yang selalu ter-reset, bukan kupon sekali pakai yang habis dalam tiga puluh hari. Kredit promo diberi label sebagai promo, tidak dicampur ke kolom yang sama, dan tiap baris mencantumkan tanggal terakhir diverifikasi.

Tabel di README dihasilkan dari satu file JSON oleh skrip Python, dan GitHub Action terjadwal memeriksa ulang tautannya lalu membangun ulang tabelnya. Daftar seperti ini kehilangan nilainya begitu basi, jadi perawatannya diotomatiskan, bukan sekadar dijanjikan.

github.com/vhmns14/free-ai-api-tiers · Python · JSON · GitHub Actions

14ToolProyek sendiri

gwt — Git Worktree Manager

Satu direktori untuk tiap branch, tanpa ritual yang biasanya menyertainya.

Bekerja di satu working tree berarti bolak-balik stash dan checkout setiap kali sebuah fitur dan sebuah review PR sama-sama minta perhatian. Git worktree menyelesaikan itu dengan memberi tiap branch direktorinya sendiri, tapi perintah bawaannya cukup panjang sehingga kebanyakan orang tidak pernah benar-benar memakainya.

gwt memendekkan seluruh alurnya: membuat branch sekaligus worktree-nya dalam satu perintah, menampilkan semuanya lengkap dengan status dirty dan terkunci, melompat ke salah satunya cukup dengan nama, melihat status seluruh worktree sekaligus, membukanya di editor, dan membersihkan worktree yang branch-nya sudah ter-merge. Shell hook membuat lompatannya benar-benar cd, bukan subshell.

github.com/vhmns14/git-worktree-manager · Python 3.10+ · Zero dependencies · MIT

Lingkup

Yang bisa saya kerjakan

Dikelompokkan berdasarkan jenis pekerjaannya, bukan berdasarkan tool. Tiap baris menyebut proyek asalnya — tidak ada satu pun yang cuma pernah saya baca.

  • Storefront

    Situs yang benar-benar bisa dipakai berdagang: menu dan katalog, keranjang, jam buka yang benar saat itu juga, area layanan, dan pemesanan yang dilempar ke WhatsApp, Grab, atau ShopeeFood alih-alih checkout yang tidak dipakai siapa pun.

    Next.js · React · Tailwind CSS · Vercel

    ZFC.IdnRill Kopi & DessertJadiin Rupiah

  • Produk & tool

    Software dengan akun dan state di belakangnya, bukan sekadar halaman: perhitungan biaya yang wajib benar secara aritmetika, perencanaan yang mengikuti riwayat penjualan nyata, dan data yang diseragamkan lintas sumber sebelum dibandingkan.

    Next.js · React · Python · Vite

    KitchenCyInvoice Generator

  • AI di produk

    Fitur LLM yang memang layak ada — asisten yang menjawab di dalam produk, saran yang ditarik dari angka usaha itu sendiri — plus sisi yang tidak seksi: melacak biaya tokennya dan memeriksa apa yang sebentar lagi dijalankan sebuah agent.

    OpenAI-compatible APIs · Python · Prompt-injection scanning

    SijantanKitchenCyHermes Cost TrackerHermes Skill Audit

  • CLI & automasi

    Tool baris perintah kecil yang mengerjakan satu hal dan bisa dipasang tanpa menyeret pohon dependensi — pelacakan biaya, penyamaran rahasia, audit skill, pengelolaan worktree — dengan exit code yang memang ditujukan untuk gerbang CI dan job terjadwal yang menjaga datanya tidak basi.

    Python · Zero dependencies · GitHub Actions

    Hermes Cost TrackerHermes Skill AuditAgent Log Redactorgwt — Git Worktree ManagerFree AI API Tiers

  • Onchain

    Kontrak dan front end yang berbicara dengannya: koneksi wallet, alur transaksi, dan aturan penyelesaian yang ditulis supaya tidak bisa diam-diam dianulir — tanpa owner, tanpa pintu belakang.

    Solidity · wagmi · WalletConnect · Monad Testnet

    ProofOfHabit

  • Dasar sistem

    Lapisan di bawah framework: hashing dan struktur pohon, bukti (proof), serta implementasi yang diuji terhadap acuan alih-alih dianggap benar begitu saja.

    SHA-256 · Merkle proofs · TypeScript

    Merkle Tree VisualizerAirline Tycoon

Fig.

Bongkar Merkle tree

Tambah, ubah, atau hapus leaf. Semua hash di atasnya dihitung ulang dan jalur dari leaf itu ke root akan menyala. Reaksi berantai inilah alasan sebuah chain tidak bisa diam-diam diubah: ganti satu byte di bawah, angka di puncak langsung tidak cocok.

Root

37f6a56851365b14f4034fbfaaa613e4cb42d2d23b3cd2d0540053e1752baecb

Leaf

3/12
54deede94d792b7845117faadb42d88d5e078848ffd0a05ae8db4fb4964d8ad354deed…#1bc6b000636c401dd81526b37d07101b9b30e5e7da61b7e94d93011c97f77fe04bc6b00…#21e1519739bb411e674d8314816ec56bc30a1d20ed9602c2d723b975dadee843d1e1519…#31e1519739bb411e674d8314816ec56bc30a1d20ed9602c2d723b975dadee843d1e1519…1d9cbebf77e952a0eb9d77a590ee59feb540dabaeb201d4d0ed3b2cbf438b5d31d9cbe…5951fb31941a4f98d68ec1da04206a269d325cb9ef896b3ba1474d5409fc15035951fb…37f6a56851365b14f4034fbfaaa613e4cb42d2d23b3cd2d0540053e1752baecb37f6a5…
  • jalur terdampak
  • sibling bukti
  • duplikat (jumlah ganjil)

Pilih satu leaf untuk melacak jalurnya ke root.

Gambar — Merkle tree, SHA-256, dibangun ulang tiap ketikan

@

Kontak

Terbuka untuk pekerjaan produk web, AI tooling, dan automation. Senang juga sekadar ngobrol soal apa pun di atas.