[{"data":1,"prerenderedAt":441},["ShallowReactive",2],{"services":3,"about_on_services":148,"services_client_projects":229},{"id":4,"title":5,"body":8,"description":9,"extension":12,"items":13,"meta":86,"navigation":96,"path":97,"process":98,"seo":143,"stem":146,"__hash__":147},"services\u002Fservices.yml",{"en":6,"id":7},"Services","Layanan",null,{"en":10,"id":11},"I build software that solves real business problems.","Saya membangun software yang menyelesaikan masalah bisnis yang nyata.","yml",[14,32,50,68],{"icon":15,"title":16,"description":19,"deliverables":22},"i-lucide-globe",{"en":17,"id":18},"Web Development","Pengembangan Web",{"en":20,"id":21},"Fullstack sites and web apps on Nuxt, .NET, and Django.","Situs dan aplikasi web fullstack di atas Nuxt, .NET, dan Django.",[23,26,29],{"en":24,"id":25},"Company profiles and landing pages","Company profile dan landing page",{"en":27,"id":28},"Custom web applications (ERP, POS, inventory)","Aplikasi web kustom (ERP, POS, inventaris)",{"en":30,"id":31},"Pages that load fast and rank on Google","Halaman yang cepat dimuat dan muncul di Google",{"icon":33,"title":34,"description":37,"deliverables":40},"i-lucide-settings",{"en":35,"id":36},"Custom Software","Software Kustom",{"en":38,"id":39},"Business systems built around how you actually work, from accounting to inventory.","Sistem bisnis yang dibangun mengikuti cara kerja Anda, dari akuntansi sampai inventaris.",[41,44,47],{"en":42,"id":43},"Business process automation","Otomatisasi proses bisnis",{"en":45,"id":46},"Accounting and financial systems","Sistem akuntansi dan keuangan",{"en":48,"id":49},"Inventory and stock management","Manajemen inventaris dan stok",{"icon":51,"title":52,"description":55,"deliverables":58},"i-lucide-palette",{"en":53,"id":54},"Landing Pages","Landing Page",{"en":56,"id":57},"Landing pages built to convert, for a product, company, or campaign.","Landing page yang dibuat untuk konversi, buat produk, perusahaan, atau campaign.",[59,62,65],{"en":60,"id":61},"Content and structure tuned for search","Konten dan struktur yang dioptimalkan untuk pencarian",{"en":63,"id":64},"Fast, and works on phones","Cepat dan nyaman di HP",{"en":66,"id":67},"Analytics and tracking wired in","Analytics dan tracking terpasang",{"icon":69,"title":70,"description":73,"deliverables":76},"i-lucide-lightbulb",{"en":71,"id":72},"Consulting","Konsultasi",{"en":74,"id":75},"Not sure about your tech stack, or want a second pair of eyes on your architecture? I'll tell you straight what I'd do.","Bingung pilih tech stack, atau mau arsitektur dicek orang lain? Saya akan bilang terus terang apa yang akan saya lakukan.",[77,80,83],{"en":78,"id":79},"Tech stack advice and planning","Konsultasi pemilihan tech stack",{"en":81,"id":82},"Code review and architecture audit","Review kode dan audit arsitektur",{"en":84,"id":85},"Project scoping and estimation","Scoping dan estimasi proyek",{"sitemap":87,"schemaOrg":89},{"lastmod":88,"title":6},"2026-07-11",[90],{"type":91,"name":92,"provider":93},"Service","Software Development Services",{"type":94,"name":95},"Person","Made Yoga Mahardika",true,"\u002Fservices",[99,107,116,125,134],{"step":100,"icon":101,"title":102,"description":104},1,"i-lucide-search",{"en":103,"id":103},"Discovery",{"en":105,"id":106},"We talk through what you need and what's in the way. I ask questions until I understand the business.","Kita ngobrol soal kebutuhan dan kendala Anda. Saya bertanya sampai paham bisnisnya.",{"step":108,"icon":109,"title":110,"description":113},2,"i-lucide-pencil",{"en":111,"id":112},"Plan","Perencanaan",{"en":114,"id":115},"I lay out a plan with milestones, the stack, and a timeline.","Saya susun rencana dengan milestone, pilihan teknologi, dan timeline.",{"step":117,"icon":118,"title":119,"description":122},3,"i-lucide-code",{"en":120,"id":121},"Build","Pengembangan",{"en":123,"id":124},"I build in small steps with regular check-ins, so you see progress and can redirect early.","Saya bangun bertahap dengan update rutin, jadi Anda bisa lihat progres dan kasih masukan sejak awal.",{"step":126,"icon":127,"title":128,"description":131},4,"i-lucide-rocket",{"en":129,"id":130},"Launch","Peluncuran",{"en":132,"id":133},"I handle deployment, testing, and go-live, plus docs and training if you need them.","Saya urus deployment, testing, dan go-live, plus dokumentasi dan training kalau perlu.",{"step":135,"icon":136,"title":137,"description":140},5,"i-lucide-wrench",{"en":138,"id":139},"Support","Dukungan",{"en":141,"id":142},"Support and maintenance after launch, so things keep working.","Dukungan dan maintenance setelah launch, biar semuanya tetap jalan.",{"title":144,"description":145},{"en":6,"id":7},{"en":10,"id":11},"services","EfeqBJjusAaiIlrTnQ0oLeADl0PGlDl90lFH74g84R8",{"id":149,"title":150,"body":8,"description":8,"experiences":151,"extension":12,"meta":176,"navigation":96,"path":183,"personal":184,"seo":202,"stem":203,"values":204,"__hash__":228},"about\u002Fabout.yml","About Me",[152,159,165,170],{"timeframe":153,"title":154,"company":155,"domainName":156,"url":157,"jobtype":158},"2022 - 2026","Fullstack Software Developer","Superjaya","superjaya.id","https:\u002F\u002Fsuperjaya.id","Freelance",{"timeframe":160,"title":161,"company":162,"domainName":163,"url":164,"jobtype":158},"2025 - Present","Backend Developer","Prima (Medicine Store System)","Internal","",{"timeframe":166,"title":154,"company":167,"domainName":168,"url":169,"jobtype":158},"2021 - 2022","PT Media Bersama Sukses","mbscctv.com","https:\u002F\u002Fmbscctv.com",{"timeframe":171,"title":172,"company":173,"domainName":174,"url":175,"jobtype":158},"2024 - 2024","Frontend Software Developer","PT. Nasional Bhirawa Tama","nasionalrubber.co.id","https:\u002F\u002Fnasionalrubber.co.id\u002F",{"sitemap":177,"schemaOrg":179},{"lastmod":178},"2026-08-01",[180],{"type":181,"name":182},"AboutPage","About Made Yoga Mahardika","\u002Fabout",{"name":95,"title":185,"bio":186,"image":189,"location":190,"links":192},{"en":154,"id":154},{"en":187,"id":188},"I build software for real businesses, from back-office systems to customer-facing platforms. I also maintain AuthEndpoints, an open-source auth library for ASP.NET Core, and tinker with AI agents and LLM tooling out in the open.","Saya membangun software untuk bisnis nyata, dari sistem back-office sampai platform pelanggan. Saya juga mengelola AuthEndpoints, pustaka auth open source untuk ASP.NET Core, dan mengutak-atik AI agents serta tooling LLM secara terbuka.","\u002Fimages\u002Fprofile2.jpg",{"en":191,"id":191},"Samarinda, Indonesia",[193,196,199],{"icon":194,"url":195},"i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fmadeyoga",{"icon":197,"url":198},"i-simple-icons-linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fmade-mahardika-4a205a379\u002F",{"icon":200,"url":201},"i-simple-icons-youtube","https:\u002F\u002Fwww.youtube.com\u002F@madey02",{"title":150},"about",[205,213,221],{"icon":206,"title":207,"description":210},"i-lucide-shield-check",{"en":208,"id":209},"Integrity","Integritas",{"en":211,"id":212},"I make sure clients profit from the apps I build. Their problem has to get solved, and the software has to earn its keep.","Saya memastikan klien untung dari aplikasi yang saya bangun. Masalah mereka harus selesai, dan software-nya harus layak untuk bisnis mereka.",{"icon":214,"title":215,"description":218},"i-lucide-check",{"en":216,"id":217},"Practical results","Hasil nyata",{"en":219,"id":220},"I solve business problems first. The code is just how the fix ships.","Saya menyelesaikan masalah bisnis dulu. Coding cuma cara solusinya dikirim.",{"icon":214,"title":222,"description":225},{"en":223,"id":224},"Adaptability","Adaptif",{"en":226,"id":227},"Requirements change. I adjust, and I'll pick up whatever tool or workflow fits the job.","Kebutuhan bisa berubah. Saya menyesuaikan diri dan memakai alat atau metode apa pun yang cocok untuk pekerjaannya.","Aj8iCmnn-_kAbsEwgq2j_Fb8B_McrRxaxmyOsKr_tpQ",[230,279,325,356,399],{"id":231,"title":232,"body":8,"category":233,"client":234,"description":235,"docs":236,"extension":12,"features":237,"image":248,"link":236,"longDescription":8,"meta":249,"navigation":96,"path":255,"problem":256,"repo":254,"results":259,"seo":262,"slug":263,"solution":264,"stem":267,"techstack":268,"__hash__":278},"projectsDetail\u002Fprojects\u002Fauthendpoints.yml","AuthEndpoints","opensource","Open Source","A composable auth endpoints library for ASP.NET Core. Registration, login, 2FA, password reset, and passkeys, bootstrapped in minutes.","https:\u002F\u002Fmadeyoga.github.io\u002FAuthEndpoints\u002F",[238,240,242,244,246],{"icon":214,"title":239},"Composable auth endpoints & modules",{"icon":214,"title":241},"Cookie, bearer, or Simple JWT sign-in",{"icon":214,"title":243},"Passkeys (WebAuthn) support",{"icon":214,"title":245},"Hardening on by default",{"icon":214,"title":247},"Optional GitHub & Google OAuth","\u002Fimages\u002Fauthendpoints-3-0-rc.png",{"sitemap":250,"schemaOrg":251},{"lastmod":178},[252],{"type":253,"name":232,"codeRepository":254},"SoftwareSourceCode","https:\u002F\u002Fgithub.com\u002Fmadeyoga\u002FAuthEndpoints","\u002Fprojects\u002Fauthendpoints",{"en":257,"id":258},"Every ASP.NET Core API redoes the same auth. Register, login, email confirmation, password reset, 2FA, session management, each with a different user model.","Setiap API ASP.NET Core mengulang auth yang sama. Registrasi, login, konfirmasi email, reset password, 2FA, manajemen sesi, dan model user yang berbeda-beda.",{"en":260,"id":261},"AuthEndpoints 3.0 RC ships with passkeys, hardened defaults, and public docs. Auth setup becomes a step, not a phase.","AuthEndpoints 3.0 RC hadir dengan passkeys, default yang sudah diperkuat, dan dokumentasi publik. Setup auth jadi satu langkah, bukan satu fase.",{"title":232,"description":235},"authendpoints",{"en":265,"id":266},"AuthEndpoints turns that work into a composable library on top of ASP.NET Core Identity. Pick your modules, set the token strategy, and map a secure auth layer in minutes instead of a week of copy-paste.","AuthEndpoints mengubahnya menjadi pustaka composable di atas ASP.NET Core Identity. Pilih modul, atur strategi token, dan petakan lapisan auth yang aman dalam hitungan menit, bukan seminggu copy-paste.","projects\u002Fauthendpoints",[269,272,275],{"icon":270,"title":271},"i-simple-icons-dotnet",".NET",{"icon":273,"title":274},"i-simple-icons-csharp","C#",{"icon":276,"title":277},"i-simple-icons-nuget","NuGet","w1LTmiJ0KNBJJOlq98R8L7L_vmR43NX8fbZ7_bKYXmU",{"id":280,"title":168,"body":8,"category":281,"client":167,"description":282,"docs":8,"extension":12,"features":283,"image":294,"link":169,"longDescription":8,"meta":295,"navigation":96,"path":301,"problem":302,"repo":8,"results":305,"seo":308,"slug":309,"solution":310,"stem":313,"techstack":314,"__hash__":324},"projectsDetail\u002Fprojects\u002Fmbscctv.yml","work","Company profile and landing page for a security systems firm, with a product catalog and a blog.",[284,286,288,290,292],{"icon":214,"title":285},"Git-based CMS",{"icon":214,"title":287},"Markdown blog",{"icon":214,"title":289},"Online catalog",{"icon":214,"title":291},"Works on mobile",{"icon":214,"title":293},"SEO","\u002Fimages\u002Fchrome_2025-07-22_15-11-17.jpg",{"sitemap":296,"schemaOrg":298},{"lastmod":297},"2025-08-09",[299],{"type":300,"name":168},"CreativeWork","\u002Fprojects\u002Fmbscctv",{"en":303,"id":304},"The client's old site looked dated and was hard to update. They needed a way to show their security products and services online.","Website lama klien kelihatan ketinggalan zaman dan sulit diperbarui. Mereka butuh cara untuk menampilkan produk dan layanan keamanan secara online.",{"en":306,"id":307},"Search visibility improved, and the client now manages the catalog and blog on their own.","Visibilitas pencarian membaik, dan klien sekarang mengelola katalog serta blog sendiri.",{"title":168,"description":282},"mbscctv",{"en":311,"id":312},"We rebuilt it on Nuxt with a Git-based CMS. Product listings and blog posts are plain Markdown now, so the team updates content without touching code.","Kami membangun ulang situsnya dengan Nuxt dan CMS berbasis Git. Daftar produk dan postingan blog sekarang berupa Markdown biasa, jadi tim bisa update konten tanpa menyentuh kode.","projects\u002Fmbscctv",[315,318,321],{"icon":316,"title":317},"i-simple-icons-vuedotjs","Vue",{"icon":319,"title":320},"i-simple-icons-nuxt","Nuxt",{"icon":322,"title":323},"i-simple-icons-tailwindcss","Tailwind","A84oNWHYlGUGcgmCIBM4rPTZI82CMNtoMhQUCtfsZK0",{"id":326,"title":174,"body":8,"category":281,"client":173,"description":327,"docs":8,"extension":12,"features":328,"image":333,"link":175,"longDescription":8,"meta":334,"navigation":96,"path":338,"problem":339,"repo":8,"results":342,"seo":345,"slug":346,"solution":347,"stem":350,"techstack":351,"__hash__":355},"projectsDetail\u002Fprojects\u002Fnasionalrubber.yml","Landing page for a rubber company in Indonesia, with Indonesian and English versions.",[329,331],{"icon":15,"title":330},"English + Indonesian (i18n)",{"icon":332,"title":291},"i-lucide-smartphone","\u002Fimages\u002Fchrome_2025-07-23_15-56-12.jpg",{"sitemap":335,"schemaOrg":336},{"lastmod":297},[337],{"type":300,"name":174},"\u002Fprojects\u002Fnasionalrubber",{"en":340,"id":341},"The company sells to local and international buyers, so the site had to work in two languages. It also had to be simple to get around.","Perusahaan ini jualan ke pembeli lokal dan luar negeri, jadi situsnya harus bisa dipakai dalam dua bahasa. Sekaligus harus gampang dinavigasi.",{"en":343,"id":344},"One site now covers both markets through a language switch.","Satu situs sekarang melayani dua pasar lewat tombol ganti bahasa.",{"title":174,"description":327},"nasionalrubber",{"en":348,"id":349},"We built it on Nuxt with i18n for English and Indonesian. The design is clean and focused on the company profile and products.","Kami membangunnya dengan Nuxt dan i18n untuk Bahasa Inggris dan Bahasa Indonesia. Desainnya bersih dan fokus ke profil perusahaan serta produk.","projects\u002Fnasionalrubber",[352,353,354],{"icon":316,"title":317},{"icon":319,"title":320},{"icon":322,"title":323},"8p9XOWIUITy39sQuhgtCK0OyFnu-ZIG3ZqAkQYA4cwU",{"id":357,"title":358,"body":8,"category":281,"client":359,"description":360,"docs":8,"extension":12,"features":361,"image":372,"link":164,"longDescription":8,"meta":373,"navigation":96,"path":377,"problem":378,"repo":8,"results":381,"seo":384,"slug":385,"solution":386,"stem":389,"techstack":390,"__hash__":398},"projectsDetail\u002Fprojects\u002Fpos-system.yml","Point of Sale & Inventory Management System","Indonesian Retail Store","Point of sale and inventory system for small retail stores, running on the store's local network.",[362,364,366,368,370],{"icon":214,"title":363},"Dashboard and analytics",{"icon":214,"title":365},"Sales tracking",{"icon":214,"title":367},"Product and stock management",{"icon":214,"title":369},"User access control",{"icon":214,"title":371},"Invoicing and printable receipts","\u002Fimages\u002Fchrome_2025-07-24_14-44-25.jpg",{"sitemap":374,"schemaOrg":375},{"lastmod":297},[376],{"type":300,"name":358},"\u002Fprojects\u002Fpos-system",{"en":379,"id":380},"Small stores needed a POS they could afford and run without the internet. Existing options were either too complicated or needed a constant connection.","Toko kecil butuh POS yang terjangkau dan bisa jalan tanpa internet. Pilihan yang ada terlalu ribet atau butuh koneksi terus-menerus.",{"en":382,"id":383},"The client dropped the monthly POS subscription and now owns their sales and inventory data. It handles hundreds of transactions a day.","Klien berhenti bayar langganan POS bulanan dan sekarang punya kendali penuh atas data penjualan dan inventaris. Sistem ini menangani ratusan transaksi sehari.",{"title":358,"description":360},"pos-system",{"en":387,"id":388},"We built a Django POS that runs on the store's local network. Sales tracking, inventory with low-stock alerts, user roles, and printable receipts, all without the internet.","Kami membangun POS Django yang berjalan di jaringan lokal toko. Pelacakan penjualan, inventaris dengan peringatan stok menipis, peran pengguna, dan struk cetak, semua tanpa internet.","projects\u002Fpos-system",[391,394,395],{"icon":392,"title":393},"i-simple-icons-django","Django",{"icon":322,"title":323},{"icon":396,"title":397},"i-simple-icons-alpinedotjs","Alpine","Y0cE4H0q2-hMjeHK2IacvsQ8eETlUXRc6j2S_u8uy18",{"id":400,"title":401,"body":8,"category":281,"client":402,"description":403,"docs":8,"extension":12,"features":404,"image":415,"link":164,"longDescription":8,"meta":416,"navigation":96,"path":421,"problem":422,"repo":8,"results":425,"seo":428,"slug":420,"solution":429,"stem":432,"techstack":433,"__hash__":440},"projectsDetail\u002Fprojects\u002Fprima.yml","Prima - Pharmacy Chain","PT Kem Kem Primahusada","ASP.NET Core backend for a pharmacy chain, covering accounting, inventory, billing, and invoicing.",[405,407,409,411,413],{"icon":214,"title":406},"Accounting and finance",{"icon":214,"title":408},"Inventory and stock",{"icon":214,"title":410},"Billing and invoicing",{"icon":214,"title":412},"Access by role",{"icon":214,"title":414},"Reporting and analytics","https:\u002F\u002Fres.cloudinary.com\u002Ffpfvgqrg\u002Fimage\u002Fupload\u002Fv1787128601\u002Fchrome_2025-08-06_12-32-28_qqkuuj.jpg",{"sitemap":417,"schemaOrg":418},{"lastmod":88},[419],{"type":300,"name":420},"Prima","\u002Fprojects\u002Fprima",{"en":423,"id":424},"A growing pharmacy chain was doing accounting, inventory, and billing by hand across its branches. It was error-prone and didn't scale as they grew.","Jaringan apotek yang berkembang masih mencatat akuntansi, inventaris, dan penagihan secara manual di tiap cabang. Rawan salah dan tidak ikut tumbuh saat cabang bertambah.",{"en":426,"id":427},"Every branch now shares one source of data. Errors dropped, inventory tracks itself, and there's room to add more branches.","Semua cabang sekarang memakai satu sumber data. Kesalahan menurun, inventaris terpantau otomatis, dan masih ada ruang untuk menambah cabang.",{"title":401,"description":403},{"en":430,"id":431},"We built an ASP.NET Core backend on Entity Framework Core and PostgreSQL. It handles accounting across branches, inventory with low-stock alerts, automatic billing, and access by role.","Kami membangun backend ASP.NET Core dengan Entity Framework Core dan PostgreSQL. Ia menangani akuntansi antar-cabang, inventaris dengan peringatan stok menipis, penagihan otomatis, dan akses berdasarkan peran.","projects\u002Fprima",[434,435,437],{"icon":392,"title":393},{"icon":270,"title":436},".NET 10",{"icon":438,"title":439},"i-simple-icons-postgresql","PostgreSQL","51YjD7nNC33LNC_R7gZqvA01ei_kh1QaQYg1xoUq-KA",1787129549979]