About the Shiva Project
Shiva is a tool I developed using the Go programming language. It's designed to simplify the process of finding and terminating processes on a machine based on their name or port. One of the standout features of Shiva is its Web UI, which allows users to view, find, and kill processes without having to rely solely on the command line. This entire functionality is encapsulated in a single binary, making it a compact and efficient tool.
Inspiration
The inspiration behind Shiva stemmed from the need to have a more user-friendly interface for managing processes. While the command line is a powerful tool, not everyone is comfortable using it, especially for repetitive tasks. I envisioned a tool that would bridge the gap between the command line and a graphical interface, making process management more accessible to a broader audience.
What I Learned
Throughout the development of Shiva, I gained deeper insights into process management in operating systems. I also honed my skills in Go, exploring its capabilities in building web-based applications. The project also exposed me to the intricacies of integrating a web UI with a backend developed in Go.
Building the Project
The project was built using Go for the backend logic and TypeScript for the frontend. I utilized various Go libraries to interact with the system processes and provide the required functionalities. The Web UI was developed using TypeScript, with a focus on providing a seamless user experience. The build process was streamlined using a Makefile, allowing for efficient compilation and execution.
Challenges Faced
One of the primary challenges I encountered was ensuring that Shiva had the necessary permissions to find and kill processes. Some processes require root access, which meant that the tool had to prompt users for their password or be run with sudo privileges. Balancing security concerns with usability was a learning experience. Additionally, integrating the Web UI with the Go backend presented its own set of challenges, especially in ensuring real-time updates and responsiveness.
Contributing
I'm always open to feedback and contributions. If anyone finds bugs or has suggestions, they're encouraged to open an issue or submit a pull request on the GitHub repository. I'm working on a roadmap of features and improvements I intend to add, which I will upload on the issues page of the repository.
Log in or sign up for Devpost to join the conversation.