
Telemedhub - Telemedicine & Smart Pharmacy
Detail Proyek
TeleMedHub — Telemedicine & Smart Pharmacy OS
Sistem platform telemedicine dan manajemen apotek pintar (smart pharmacy) terintegrasi berbasis web yang menghubungkan pasien, dokter, dan apotek. Dilengkapi dengan konsultasi dokter online, pengelolaan resep digital, dompet digital berarsitektur append-only ledger, serta integrasi payment gateway Midtrans secara real-time. Berkontribusi sebagai Full-Stack Engineer (Golang & React) — merancang arsitektur Modular Monolith di backend, mengimplementasikan integrasi transaksi atomik Midtrans, serta membangun antarmuka web modern berbasis TypeScript.
Ringkasan Proyek
- Kategori: Personal Project
- Peran: Full-Stack Engineer (Backend Golang & Frontend React)
- Tech Stack:
- Backend: Go (Golang), Chi Router, PostgreSQL, pgxpool, Redis, MinIO (S3-compatible), Midtrans Snap SDK, Docker & Docker Compose
- Frontend: React 19, TypeScript (Strict Mode), Vite, TanStack Router, TanStack Query, Tailwind CSS, Lucide / Material Symbols
Latar Belakang / Ide Awal
TeleMedHub lahir dari kebutuhan akan ekosistem layanan kesehatan digital yang aman, transparan, dan terintegrasi dari hulu ke hilir. Pada sistem layanan medis konvensional, pasien sering kali mengalami kendala pencatatan resep yang terpisah, alur pembayaran yang lambat, serta ketidakpastian stok obat di apotek. Di sisi lain, integritas data medis dan transaksi keuangan memerlukan standar keamanan yang ketat.
TeleMedHub dikembangkan sebagai solusi operasional sekaligus produk eksplorasi teknis full-stack: menerapkan arsitektur Modular Monolith berbasis Clean Architecture di Golang untuk menjaga kemudahan skalabilitas tanpa kompleksitas microservices, membangun sistem dompet digital dengan audit trail ledger yang aman dari race condition, serta mengintegrasikan payment gateway industri (Midtrans) dengan mekanisme verifikasi webhook atomik.
Kontribusi Full-Stack Saya
-
Arsitektur Backend Modular Monolith & Clean Architecture:
Merancang dan mengimplementasikan struktur folder modular (internal/<module>:handler,service,repository,model,dto,validator) di Golang. Mengisolasi business logic dan memastikan arah dependency selalu ke dalam (handler → service → repository interface → model), sehingga setiap modul (Auth, Doctor, Patient, Wallet, Prescription, Inventory/Pharmacy) mudah diuji dan dikembangkan secara independen. -
Integrasi Payment Gateway Midtrans & Webhook Atomik:
Membangun alur pembayaran Top-Up dompet digital menggunakan Midtrans Snap API. Mengimplementasikan verifikasi signature key SHA-512 pada webhook callback, pembatasan panjang Order ID aman (< 50 karakter), serta menerapkan row-level locking PostgreSQL (FOR UPDATE) untuk mencegah race condition saat pembaruan saldo dompet secara bersamaan. -
Sistem Dompet Digital & Financial Ledger Append-Only:
Merancang pencatatan transaksi dompet digital yang tidak pernah diubah (append-only ledger) guna menjamin transparansi audit keuangan. Melengkapi API dengan dukungan headerIdempotency-Keyuntuk mencegah transaksi ganda (double-submit) serta user-friendly status mapping untuk pengalaman pengguna yang optimal. -
Manajemen State Server & Pagination Dinamis (Frontend React):
Mengintegrasikan TanStack Query untuk pengelolaan server-state caching tanpa mengotori client state, serta menerapkan teknikplaceholderDatauntuk navigasi halaman (pagination 10 data per halaman) yang halus pada tabel riwayat transaksi ledger dan inventaris apotek. -
Smart Pharmacy & Audit Mutasi Stok (
Stock Mutations):
Membangun modul manajemen inventaris apotek otomatis yang mencatat setiap alur masuk/keluar stok obat (stock_mutations) secara otomatis saat terjadi penebusan resep dokter, pembatalan pesanan, maupun penyesuaian stok manual oleh apoteker. -
Autentikasi Multi-Peran (RBAC) & Keamanan Akses Medis:
Mengonfigurasi autentikasi JWT berbasis short-lived access token dan persistent refresh token, dilengkapi dengan middleware otorisasi berbasis peran (Patient, Doctor, Pharmacist, Admin) untuk mengamankan data medis sensitif dan hak akses setiap portal.
Fitur Utama Produk
-
Smart Top-Up & Integrated Digital Wallet
Pengisian saldo dompet digital aman yang terhubung langsung ke Midtrans Snap (Virtual Account, E-Wallet, QRIS). Saldo bertambah secara otomatis melalui konfirmasi webhook terverifikasi. -
Append-Only Financial Transaction Ledger
Tabel riwayat keuangan transparan yang mencatat setiap alur Credit/Debit (Top-Up, Pembayaran Konsultasi, Pembelian Obat, dan Refund) lengkap dengan badge status interaktif dan kontrol navigasi halaman (pagination). -
Doctor Schedule & Consultation Booking Flow
Sistem penjadwalan sesi konsultasi dokter yang dinamis, dilengkapi alur duplikasi jadwal (Copy Schedule) serta pemindaian slot waktu otomatis untuk mencegah jadwal bentrok. -
Smart Pharmacy & E-Prescription Fulfillment
Alur penebusan resep digital terintegrasi dari dokter ke apotek. Apoteker dapat memverifikasi ketersediaan obat, memproses pesanan, serta melacak pembaruan stok secara real-time. -
Automated Stock Mutation History
Pencatatan riwayat perubahan stok obat (inventory audit log) yang merekam stok sebelum, jumlah mutasi, stok sesudah, serta tipe referensi transaksi (initial stock, order fulfillment, manual adjustment). -
Multi-Role User Portals
Antarmuka terpisah yang disesuaikan khusus untuk Pasien (Billing Center & Booking), Dokter (Portal Konsultasi & Resep), Apoteker (Inventory & Order Processing), dan Admin.
Tech Stack & Arsitektur
TeleMedHub disusun dengan struktur Monorepo yang memisahkan aplikasi Backend Golang di root direktori dan Frontend Single Page Application (SPA) React di folder /web.
- Backend: Bahasa Go dengan ruting Chi, generator kueri SQL type-safe, serta driver
pgxpooluntuk koneksi PostgreSQL performa tinggi. - Database & Storage: PostgreSQL 16 untuk persistensi data relasional berprinsip ACID, Redis 7 untuk ruting & caching token, serta MinIO untuk penyimpanan file foto profil dan lampiran medis.
- Deployment Parity: Menggunakan Docker Compose untuk memastikan seluruh dependensi (database, cache, storage, API) berjalan identik antara lingkungan pengembangan lokal dan produksi.
Tantangan Teknis & Solusi
-
Konsistensi Saldo Dompet & Pencegahan Transaksi Ganda (Race Condition):
Tantangan: Ketika panggilan webhook dari Midtrans masuk bersamaan dengan aktivitas transaksi pengguna, risiko race condition atau saldo bertambah ganda sangat tinggi.
Solusi: Diimplementasikan fungsiGetWalletByUserIDForUpdateyang memanfaatkan fitur row-level locking (FOR UPDATE) pada PostgreSQL di dalam transaksi database atomik. Selain itu, digunakan kombinasi format unikorder_iddan pengecekanIdempotency-Keyuntuk menjamin notifikasi duplikat diabaikan dengan aman (idempotent processing). -
Pembatasan Parameter Panjang Order ID pada Midtrans Snap:
Tantangan: Kustomisasi Order ID gabungan UUID mengalami penolakan HTTP 400 dari API Midtrans karena melebihi batas maksimal 50 karakter.
Solusi: Merancang ulang pola pembentukan ID menjadi formatTU-<userID_UUID>-<short_random>(~48 karakter). Dengan demikian, ID tetap berada di bawah batas 50 karakter Midtrans tanpa kehilangan kemampuan parsing identitas pengguna pada lapisan webhook. -
Optimasi Pengelolaan Server-State pada Frontend React:
Tantangan: Menyimpan data transaksi API ke dalam global client state (seperti Zustand/Redux) rawan menyebabkan data stale dan duplikasi logika fetching.
Solusi: Menerapkan TanStack Query secara menyeluruh sebagai single source of truth untuk seluruh data dari server API. Ditambahkan opsiplaceholderDatapada custom hookuseWalletTransactionsagar pengguna merasakan transisi pagination tabel yang sangat halus tanpa efek flicker atau screen jumping.
Pembelajaran & Pencapaian
- Berhasil merancang dan membangun arsitektur Modular Monolith berstandar industri dengan bahasa Golang dan prinsip Clean Architecture secara mandiri (end-to-end).
- Menguasai integrasi Payment Gateway produksi (Midtrans Snap API & Webhook Security) dengan verifikasi signature SHA-512 dan database locking ACID.
- Menerapkan praktik terbaik frontend modern menggunakan React 19, TypeScript Strict Mode, serta ekosistem TanStack (Router & Query) dalam struktur monorepo yang rapi.
Spesifikasi Proyek
Ingin Proyek Serupa?
Tim ahli kami siap membantu Anda merealisasikan inovasi sistem software terbaik.
Project Showcase
12 Tangkapan Layar





Proyek Lainnya
Jelajahi karya rekayasa perangkat lunak lainnya.

Koperasi Sedia
Cooperative core banking platform: automated savings, flat & annuity loans, daily cash register, proportional dividend allocation, and print-ready legal loan agreements.

SupportSense AI
Autonomous enterprise AI customer support engine fusing Hybrid RAG + KAG (PostgreSQL & ChromaDB) for zero-hallucination order tracking and cost-efficient sub-second routing.

Bizinsight AI
BizInsight AI adalah sistem Multi-Agent yang mengubah pertanyaan bisnis sehari-hari menjadi query database, grafik interaktif, dan wawasan bisnis otomatis tanpa perlu paham SQL.