[{"data":1,"prerenderedAt":229},["ShallowReactive",2],{"projects_list":3},[4,58,107,142,186],{"id":5,"title":6,"body":7,"category":8,"client":9,"description":10,"docs":11,"extension":12,"features":13,"image":25,"link":11,"longDescription":7,"meta":26,"navigation":33,"path":34,"problem":35,"repo":32,"results":38,"seo":41,"slug":42,"solution":43,"stem":46,"techstack":47,"__hash__":57},"projectsDetail\u002Fprojects\u002Fauthendpoints.yml","AuthEndpoints",null,"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","yml",[14,17,19,21,23],{"icon":15,"title":16},"i-lucide-check","Composable auth endpoints & modules",{"icon":15,"title":18},"Cookie, bearer, or Simple JWT sign-in",{"icon":15,"title":20},"Passkeys (WebAuthn) support",{"icon":15,"title":22},"Hardening on by default",{"icon":15,"title":24},"Optional GitHub & Google OAuth","\u002Fimages\u002Fauthendpoints-3-0-rc.png",{"sitemap":27,"schemaOrg":29},{"lastmod":28},"2026-08-01",[30],{"type":31,"name":6,"codeRepository":32},"SoftwareSourceCode","https:\u002F\u002Fgithub.com\u002Fmadeyoga\u002FAuthEndpoints",true,"\u002Fprojects\u002Fauthendpoints",{"en":36,"id":37},"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":39,"id":40},"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":6,"description":10},"authendpoints",{"en":44,"id":45},"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",[48,51,54],{"icon":49,"title":50},"i-simple-icons-dotnet",".NET",{"icon":52,"title":53},"i-simple-icons-csharp","C#",{"icon":55,"title":56},"i-simple-icons-nuget","NuGet","w1LTmiJ0KNBJJOlq98R8L7L_vmR43NX8fbZ7_bKYXmU",{"id":59,"title":60,"body":7,"category":61,"client":62,"description":63,"docs":7,"extension":12,"features":64,"image":75,"link":76,"longDescription":7,"meta":77,"navigation":33,"path":83,"problem":84,"repo":7,"results":87,"seo":90,"slug":91,"solution":92,"stem":95,"techstack":96,"__hash__":106},"projectsDetail\u002Fprojects\u002Fmbscctv.yml","mbscctv.com","work","PT Media Bersama Sukses","Company profile and landing page for a security systems firm, with a product catalog and a blog.",[65,67,69,71,73],{"icon":15,"title":66},"Git-based CMS",{"icon":15,"title":68},"Markdown blog",{"icon":15,"title":70},"Online catalog",{"icon":15,"title":72},"Works on mobile",{"icon":15,"title":74},"SEO","\u002Fimages\u002Fchrome_2025-07-22_15-11-17.jpg","https:\u002F\u002Fmbscctv.com",{"sitemap":78,"schemaOrg":80},{"lastmod":79},"2025-08-09",[81],{"type":82,"name":60},"CreativeWork","\u002Fprojects\u002Fmbscctv",{"en":85,"id":86},"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":88,"id":89},"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":60,"description":63},"mbscctv",{"en":93,"id":94},"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",[97,100,103],{"icon":98,"title":99},"i-simple-icons-vuedotjs","Vue",{"icon":101,"title":102},"i-simple-icons-nuxt","Nuxt",{"icon":104,"title":105},"i-simple-icons-tailwindcss","Tailwind","A84oNWHYlGUGcgmCIBM4rPTZI82CMNtoMhQUCtfsZK0",{"id":108,"title":109,"body":7,"category":61,"client":110,"description":111,"docs":7,"extension":12,"features":112,"image":118,"link":119,"longDescription":7,"meta":120,"navigation":33,"path":124,"problem":125,"repo":7,"results":128,"seo":131,"slug":132,"solution":133,"stem":136,"techstack":137,"__hash__":141},"projectsDetail\u002Fprojects\u002Fnasionalrubber.yml","nasionalrubber.co.id","PT. Nasional Bhirawa Tama","Landing page for a rubber company in Indonesia, with Indonesian and English versions.",[113,116],{"icon":114,"title":115},"i-lucide-globe","English + Indonesian (i18n)",{"icon":117,"title":72},"i-lucide-smartphone","\u002Fimages\u002Fchrome_2025-07-23_15-56-12.jpg","https:\u002F\u002Fnasionalrubber.co.id\u002F",{"sitemap":121,"schemaOrg":122},{"lastmod":79},[123],{"type":82,"name":109},"\u002Fprojects\u002Fnasionalrubber",{"en":126,"id":127},"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":129,"id":130},"One site now covers both markets through a language switch.","Satu situs sekarang melayani dua pasar lewat tombol ganti bahasa.",{"title":109,"description":111},"nasionalrubber",{"en":134,"id":135},"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",[138,139,140],{"icon":98,"title":99},{"icon":101,"title":102},{"icon":104,"title":105},"8p9XOWIUITy39sQuhgtCK0OyFnu-ZIG3ZqAkQYA4cwU",{"id":143,"title":144,"body":7,"category":61,"client":145,"description":146,"docs":7,"extension":12,"features":147,"image":158,"link":159,"longDescription":7,"meta":160,"navigation":33,"path":164,"problem":165,"repo":7,"results":168,"seo":171,"slug":172,"solution":173,"stem":176,"techstack":177,"__hash__":185},"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.",[148,150,152,154,156],{"icon":15,"title":149},"Dashboard and analytics",{"icon":15,"title":151},"Sales tracking",{"icon":15,"title":153},"Product and stock management",{"icon":15,"title":155},"User access control",{"icon":15,"title":157},"Invoicing and printable receipts","\u002Fimages\u002Fchrome_2025-07-24_14-44-25.jpg","",{"sitemap":161,"schemaOrg":162},{"lastmod":79},[163],{"type":82,"name":144},"\u002Fprojects\u002Fpos-system",{"en":166,"id":167},"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":169,"id":170},"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":144,"description":146},"pos-system",{"en":174,"id":175},"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",[178,181,182],{"icon":179,"title":180},"i-simple-icons-django","Django",{"icon":104,"title":105},{"icon":183,"title":184},"i-simple-icons-alpinedotjs","Alpine","Y0cE4H0q2-hMjeHK2IacvsQ8eETlUXRc6j2S_u8uy18",{"id":187,"title":188,"body":7,"category":61,"client":189,"description":190,"docs":7,"extension":12,"features":191,"image":202,"link":159,"longDescription":7,"meta":203,"navigation":33,"path":209,"problem":210,"repo":7,"results":213,"seo":216,"slug":208,"solution":217,"stem":220,"techstack":221,"__hash__":228},"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.",[192,194,196,198,200],{"icon":15,"title":193},"Accounting and finance",{"icon":15,"title":195},"Inventory and stock",{"icon":15,"title":197},"Billing and invoicing",{"icon":15,"title":199},"Access by role",{"icon":15,"title":201},"Reporting and analytics","https:\u002F\u002Fres.cloudinary.com\u002Ffpfvgqrg\u002Fimage\u002Fupload\u002Fv1787128601\u002Fchrome_2025-08-06_12-32-28_qqkuuj.jpg",{"sitemap":204,"schemaOrg":206},{"lastmod":205},"2026-07-11",[207],{"type":82,"name":208},"Prima","\u002Fprojects\u002Fprima",{"en":211,"id":212},"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":214,"id":215},"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":188,"description":190},{"en":218,"id":219},"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",[222,223,225],{"icon":179,"title":180},{"icon":49,"title":224},".NET 10",{"icon":226,"title":227},"i-simple-icons-postgresql","PostgreSQL","51YjD7nNC33LNC_R7gZqvA01ei_kh1QaQYg1xoUq-KA",1787129549979]