[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"projects-page":58,"projects":76},[4],{"title":5,"path":6,"stem":7,"children":8,"page":57},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37,41,45,49,53],{"title":10,"path":11,"stem":12},"A Guide to Server-Side Rendering (SSR) with Vite and React.js","\u002Fblog\u002Fa-guide-to-server-side-rendering-ssr-with-vite-and-reactjs","blog\u002Fa-guide-to-server-side-rendering-ssr-with-vite-and-reactjs",{"title":14,"path":15,"stem":16},"🔄 Background DNS Refresh in Node.js: Keeping Cached IPs Updated","\u002Fblog\u002Fbackground-dns-refresh-in-nodejs-keeping-cached-ips-updated","blog\u002Fbackground-dns-refresh-in-nodejs-keeping-cached-ips-updated",{"title":18,"path":19,"stem":20},"Comprehensive Guide: Encrypting Images, Uploading to Cloudinary, and Serving Them Securely","\u002Fblog\u002Fcomprehensive-guide-encrypting-images-uploading-to-cloudinary-and-serving-them-securely","blog\u002Fcomprehensive-guide-encrypting-images-uploading-to-cloudinary-and-serving-them-securely",{"title":22,"path":23,"stem":24},"Comprehensive Guide to Using Uploadthing with Express and Typescript","\u002Fblog\u002Fcomprehensive-guide-to-using-uploadthing-with-express-and-typescript","blog\u002Fcomprehensive-guide-to-using-uploadthing-with-express-and-typescript",{"title":26,"path":27,"stem":28},"🌐 DNS Caching in Node.js: Supercharge Your App's Speed & Reliability 🚀","\u002Fblog\u002Fdns-caching-in-nodejs-supercharge-your-apps-speed-and-reliability","blog\u002Fdns-caching-in-nodejs-supercharge-your-apps-speed-and-reliability",{"title":30,"path":31,"stem":32},"Enhancing Redis for Message Queues: Using External Databases for Payload Storage","\u002Fblog\u002Fenhancing-redis-for-message-queues-using-external-databases-for-payload-storage","blog\u002Fenhancing-redis-for-message-queues-using-external-databases-for-payload-storage",{"title":34,"path":35,"stem":36},"Full Stack Learning Management System (LMS) with MERN Stack: A Complete Guide","\u002Fblog\u002Ffull-stack-learning-management-system-lms-with-mern-stack-a-complete-guide","blog\u002Ffull-stack-learning-management-system-lms-with-mern-stack-a-complete-guide",{"title":38,"path":39,"stem":40},"Getting Started with Redis: Elevating Your Web Applications","\u002Fblog\u002Fgetting-started-with-redis-elevating-your-web-applications","blog\u002Fgetting-started-with-redis-elevating-your-web-applications",{"title":42,"path":43,"stem":44},"How Queues Enhance Your Application Development Process","\u002Fblog\u002Fhow-queues-enhance-your-application-development-process","blog\u002Fhow-queues-enhance-your-application-development-process",{"title":46,"path":47,"stem":48},"Next-Gen E-Learning: Transforming Education for Students and Creators","\u002Fblog\u002Fnext-gen-e-learning-transforming-education-for-students-and-creators","blog\u002Fnext-gen-e-learning-transforming-education-for-students-and-creators",{"title":50,"path":51,"stem":52},"Single Sign-On (SSO) Implementation Using Passport.js in TypeScript","\u002Fblog\u002Fsingle-sign-on-sso-implementation-using-passportjs-in-typescript","blog\u002Fsingle-sign-on-sso-implementation-using-passportjs-in-typescript",{"title":54,"path":55,"stem":56},"Using Multer for Local File Uploads: Benefits, Trade-offs, and Cloud Transfer Integration","\u002Fblog\u002Fusing-multer-for-local-file-uploads-benefits-trade-offs-and-cloud-transfer-integration","blog\u002Fusing-multer-for-local-file-uploads-benefits-trade-offs-and-cloud-transfer-integration",false,{"id":59,"title":60,"body":61,"description":62,"extension":63,"links":64,"meta":70,"navigation":71,"path":72,"seo":73,"stem":74,"__hash__":75},"pages\u002Fprojects.yml","Building, Shipping, and Automating.",null,"A selection of projects I've designed and built — from production backends and serverless APIs to CLIs, browser extensions, and client-side tools. Thoughtful engineering over tickets and plumbing.","yml",[65,68],{"label":66,"color":67},"Let's talk","neutral",{"label":69},"Email me",{},true,"\u002Fprojects",{"title":60,"description":62},"projects","mPz8f36dgsHF-gtxW3pH_h6GRIlWW7hjI1M96A-v5LI",[77,94,110,124,137,152,165,179,190,204,223,235,247,259],{"id":78,"title":79,"date":80,"description":81,"extension":63,"image":82,"meta":83,"order":84,"stem":85,"tags":86,"url":92,"__hash__":93},"projects\u002Fprojects\u002Fciphera.yml","Ciphera — Self-Destructing Private Chat","2025-01-01","Invite-only chat for two where rooms are wiped from the server when a 10-minute timer hits zero — no accounts, no history, no archive. Real-time presence, replies, edits, pinning, and emoji reactions via Convex.","\u002Fproject\u002Fciphera.png",{},2,"projects\u002Fciphera",[87,88,89,90,91],"React","Bun","Convex","Tailwind CSS","TypeScript","https:\u002F\u002Fchat.sachinthapa.tech","I1AAEZFmcqBM6KrCoyW4PV3-fHcuFZG5Escf1FDsano",{"id":95,"title":96,"date":97,"description":98,"extension":63,"image":99,"meta":100,"order":101,"stem":102,"tags":103,"url":108,"__hash__":109},"projects\u002Fprojects\u002Fdropby.yml","DropBy — Drop Files, Get a Link","2026-01-01","Share an .html or .md file and get a live URL that vanishes in 60 minutes — no account needed. Burn-after-reading links and passphrase-encrypted (AES-GCM) drops that the server never sees.","\u002Fproject\u002Fdropby.png",{},4,"projects\u002Fdropby",[104,105,106,107,91],"Hono","Cloudflare Workers","Cloudflare KV","Cloudflare D1","https:\u002F\u002Fsite.sachinthapa.tech","9pKkoN_Zxsjhqz6KQOD3ktib8zvTLuMK_8ixtJGMc4g",{"id":111,"title":112,"date":80,"description":113,"extension":63,"image":114,"meta":115,"order":116,"stem":117,"tags":118,"url":122,"__hash__":123},"projects\u002Fprojects\u002Femailforge.yml","EmailForge — Testmail Inbox Client","A personal email client that talks to the Testmail.app JSON API directly from the browser — no backend, no database, no proxy — secured behind Cloudflare Access SSO.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1611224923853-80b023f02d71?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",{},8,"projects\u002Femailforge",[87,88,119,120,121],"Zustand","Radix UI","Cloudflare Access","https:\u002F\u002Femail.sachinthapa.com.np","Nspn2wNoVf-jkMggdJSsE-pQn3sBA2C7l5euntm8sHU",{"id":125,"title":126,"date":80,"description":127,"extension":63,"image":128,"meta":129,"order":130,"stem":131,"tags":132,"url":135,"__hash__":136},"projects\u002Fprojects\u002Fexcalihub.yml","Excalihub — Excalidraw Power-Ups Extension","A Chrome extension that supercharges Excalidraw — save and organize drawings, turn frames into presentations, and generate diagrams from plain text with AI, all without leaving the canvas.","\u002Fproject\u002Fexcalihub.png",{},7,"projects\u002Fexcalihub",[133,134,89,91],"Chrome Extension","WXT","http:\u002F\u002Fexcali.sachinthapa.com.np","l4xfGoTk34O4xFbKs7YrGtVoUW1Jo6bFfX-7FpNqKrs",{"id":138,"title":139,"date":80,"description":140,"extension":63,"image":141,"meta":142,"order":143,"stem":144,"tags":145,"url":150,"__hash__":151},"projects\u002Fprojects\u002Finkwell.yml","inkwell — PDF Inspector (WASM)","A zero-backend PDF inspector — a Rust engine compiled to WebAssembly classifies PDFs (text-based, scanned, or mixed) and extracts clean, position-aware Markdown, all inside the browser.","\u002Fproject\u002Finkwell.png",{},14,"projects\u002Finkwell",[146,147,91,148,149],"WebAssembly","Rust","Markdown","Vercel","https:\u002F\u002Fmd.sachinthapa.tech\u002F","zlsnN0KJUAzodUFw2pDsDjDwGvse3jI6gr_Jj6wpGCg",{"id":153,"title":154,"date":80,"description":155,"extension":63,"image":156,"meta":157,"order":158,"stem":159,"tags":160,"url":163,"__hash__":164},"projects\u002Fprojects\u002Fkeyzen.yml","KeyZen — Typing Test","A polished typing test with time, word-count, quote, and zen modes — detailed WPM, accuracy, and consistency charts, a live virtual keyboard, per-key sounds, and optional haptics.","\u002Fproject\u002Fkeyzen.png",{},13,"projects\u002Fkeyzen",[161,91,90,162],"Next.js","Web Audio","https:\u002F\u002Ftype.sachinthapa.tech","PdoEdfzTzyq-0q5vRS68OYVMZam9vk-w_MBOwIuwF78",{"id":166,"title":167,"date":80,"description":168,"extension":63,"image":169,"meta":170,"order":171,"stem":172,"tags":173,"url":177,"__hash__":178},"projects\u002Fprojects\u002Fkillport.yml","killport — Kill Port Processes","A cross-platform CLI that finds and kills whatever is occupying a port — graceful SIGTERM or force kill, with dry-run, retries, and process owner checks — rewritten in Go.","\u002Fproject\u002Fkillport.png",{},11,"projects\u002Fkillport",[174,175,176],"Go","CLI","gopsutil","https:\u002F\u002Fkp.rajuthapa572.com.np\u002F","sCXzd-awpxfkZI1UsPFdmGikId9UoSEemyqabo6RgPk",{"id":180,"title":181,"date":80,"description":182,"extension":63,"image":183,"meta":184,"order":185,"stem":186,"tags":187,"url":188,"__hash__":189},"projects\u002Fprojects\u002Flazycommit.yml","lazycommit — AI-Powered Git Commits","A CLI that writes your git commit messages for you using AI providers. A monorepo combining an npm CLI package, a Cloudflare Hono API, and a landing page — built with Bun and Vite+.","\u002Fproject\u002Flazycommit.png",{},10,"projects\u002Flazycommit",[91,88,175,104,105],"https:\u002F\u002Flzc.sachinthapa.com.np","V8AhLnGUnJiaINj798527DeSo4g0SxWvxXREz_XBaqQ",{"id":191,"title":192,"date":80,"description":193,"extension":63,"image":194,"meta":195,"order":196,"stem":197,"tags":198,"url":202,"__hash__":203},"projects\u002Fprojects\u002Flingosync-live.yml","LingoSync Live — Real-Time AI Dubbing","Translates and dubs any voice or tab audio live in the browser across 82 languages with sub-second latency, powered by Gemini WebSocket bidirectional streaming.","\u002Fproject\u002Flingosync.png",{},3,"projects\u002Flingosync-live",[87,91,199,200,201],"Vite","Gemini AI","Cloudflare Pages","https:\u002F\u002Flive-translate-gamma.vercel.app\u002F","mESAWkSXXKzQ6jyV-42DvXdl4rVdkWcSe1s67L-r6z4",{"id":205,"title":206,"date":207,"description":208,"extension":63,"image":209,"meta":210,"order":211,"stem":212,"tags":213,"url":221,"__hash__":222},"projects\u002Fprojects\u002Flms-server.yml","LMS Server — Learning Management System Backend","2024-01-01","Full-featured backend for a Learning Management System — secure JWT and social login, course management, Stripe & eSewa payments, asynchronous video transcoding, certificate generation, and an admin dashboard.","\u002Fproject\u002Flms-server.png",{},1,"projects\u002Flms-server",[214,91,215,216,217,218,219,220],"Node.js","Express","PostgreSQL","Prisma","Redis","BullMQ","Docker","#","UgzZx3QNTD92IEZp1iLbjnnhJAzOZ8-DmiWCKcEVFJ0",{"id":224,"title":225,"date":97,"description":226,"extension":63,"image":227,"meta":228,"order":229,"stem":230,"tags":231,"url":233,"__hash__":234},"projects\u002Fprojects\u002Fpaperlab.yml","Paperlab — Local-First PDF Tools","Premium PDF tools with no watermark, no upload, and no sign-up. Merge, split, convert, and edit PDFs — all processing runs 100% client-side with pdf-lib and pdfjs-dist.","\u002Fproject\u002Fpaperlab.png",{},6,"projects\u002Fpaperlab",[87,91,232,146,149],"pdf-lib","https:\u002F\u002Fpdf.sachinthapa.tech","lxS4q8_N7cAmoDrsbzAH_15oK-X8e-E-6xCS7A9-ssc",{"id":236,"title":237,"date":97,"description":238,"extension":63,"image":239,"meta":240,"order":241,"stem":242,"tags":243,"url":245,"__hash__":246},"projects\u002Fprojects\u002Fquickpic.yml","QuickPic — In-Browser Image Toolbox","16 image tools — convert, compress, resize, filter, crop, OCR, remove backgrounds, and upscale with AI. Everything runs entirely on-device; no image ever leaves the browser.","\u002Fproject\u002Fquickpic.png",{},5,"projects\u002Fquickpic",[87,91,244,146,199],"TensorFlow.js","https:\u002F\u002Fquickpic.sachinthapa.tech","IbP7E1fKLmGaq3gx4NnFb3T8Z5fb_jR6A-jhlmgMY1E",{"id":248,"title":249,"date":80,"description":250,"extension":63,"image":251,"meta":252,"order":253,"stem":254,"tags":255,"url":221,"__hash__":258},"projects\u002Fprojects\u002Fxtract.yml","Xtract — AI Bookmark Manager for X","Turns saved X bookmarks into a searchable knowledge base — one-click capture from the browser, automatic AI tags and summaries, plus natural-language and semantic search backed by Cloudflare D1 and Groq.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1620712943543-bcc4688e7485?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",{},9,"projects\u002Fxtract",[104,105,256,134,257],"D1","Groq","XVEJMH4_9PtUpsu8-DkDkLQbEhOr6rCtYd-AFzd-sWc",{"id":260,"title":261,"date":97,"description":262,"extension":63,"image":263,"meta":264,"order":265,"stem":266,"tags":267,"url":221,"__hash__":270},"projects\u002Fprojects\u002Fyoinks.yml","yoinks — Terminal Video Downloader","Paste a link and yoink any video from YouTube, X, Instagram, TikTok, and 1,800+ other sites — a full-screen interactive terminal UI with resolution picking and audio-only mode.","\u002Fproject\u002Fyoinks.png",{},12,"projects\u002Fyoinks",[214,91,175,268,269],"yt-dlp","npm","cb3I1rZpeeZvod5GxE21lR7hOr97U5K7kPi9fu4wSOM"]