Building KunciMasuk, a Privacy-First SSH Launcher
DEV Community

Building KunciMasuk, a Privacy-First SSH Launcher

Origin Story

Approximately a month ago, I developed a Bash script to streamline server access for myself and my colleagues. The feedback was constructive and encouraging, and it motivated me to refine the concept into something more robust. Today, I am releasing KunciMasuk, a free desktop application that reimagines that Bash script as a polished, user-friendly tool.

I have long been interested in desktop application development, but I wanted to build something simple yet purposeful. I deliberately avoided the ubiquitous to-do application, which felt clichΓ©, and briefly considered a Point-of-Sale (POS) system before concluding that its scope was too ambitious for a side project.

Technology Choices

As with any project, I began with system design and architecture planning. I initially evaluated Ionic, but it did not fit the use case. I then considered Flutter, yet my lack of production experience with it made it impractical. After exploring discussions on Reddit and Stack Overflow, I noted the strong enthusiasm for Rust and Tauri. While I am eager to explore both in the future, the learning curve was too steep for this release cycle. I ultimately selected Electron.js, capitalizing on my existing knowledge with React.

Database

For data persistence, I initially considered SQLite for its reliability and minimal footprint. However, for a lightweight SSH launcher, it felt like overkill. I opted for a local JSON-based datastore instead.

When a friend asked why KunciMasuk does not use cloud storage, the answer was straightforward: privacy. This application is designed to be local-first. All credentials and configuration data remain on the user's machine, ensuring complete confidentiality and zero external dependencies.

Move from React to TypeScript

With the architecture settled, I began development using VS Code, React.js, and Tailwind CSS. Approximately twenty percent into the build, I decided to treat this project as an opportunity to learn TypeScript. My approach was deliberate: I built each component in React, then consulted my AI mentor to explain TypeScript patterns and refactor the code accordingly. This method accelerated my learning without surrendering ownership of the codebase.

How I Use AI to Teach Me About TypeScript

Had I fully automated the development with AI, I could have shipped within two days. Instead, I spent three weeks coding intentionally, debugging manually, and internalizing every architectural decision. KunciMasuk may not be the most feature-rich SSH launcher available, but it is a product I built with full understanding of its internals, and that is a milestone I am proud of.

Release and Availability

Following the release of version 0.1.0 to a trusted circle of peers and colleagues, I incorporated their feedback and iterated rapidly. I am now pleased to open version 0.1.4 to the public.

You can download KunciMasuk free of charge here: Sulaiman KunciMasuk

My goal is to make this project open source. But I don't have enough courage to publish it due to my TypeScript skills. I will open it later or sooner ;)

Comments

No comments yet. Start the discussion.