As a developer with 8+ years of experience and with 150+ projects completed, me and my team learnt devops the hard way. Multiple fixes, compatibility issues, server issues, random vulnerabilities appearing out on framework level out of nowhere; it was all a mess.
As a small team we always had trouble with focusing on both sides, jumping between one client's server to another. I can confidently say this is one reason which made my hair gray at my 20s (I almost fixed it, totally different topic).
After a lot of struggle, we decided that’s enough and we need to find a solution for this. That’s when we started to work on Putmein.
In this article, I’ll explain the motive behind the product, where the idea came from, why is it now open source and how it almost saved us lots of money, also of course some technical details.
What happened?
The idea to automate and eliminate these issues starts when we were working on a project. The screenshot is actual UI from that project, but removed the logo for IP reasons :)
It is a food delivery project which had:
- 3 Sets of Landing page
- Restaurant Dashboard & Mobile application
- Driver’s Dashboard & Mobile application
- Admin Dashboard
- User storefront website & Mobile application
- A master backend
Not just that, it also included other third party integrations. Which is a lot to develop, and even worst really hard to deploy and manage. But we somehow pulled it off after splitting our team into two and risking our development time and put deadline to risk. We passed deadline, but client was really supportive and know what happened as they added up few features on top while we were working on it.
We might’ve dodged a bullet in that place but the problem continued. We were lucky to get into a country’s government project. Something we have to take real serious security measures, and we did. Again the development went really smooth. A huge problem arises when we stepped into deployment.
The government was far behind on their techstack that they where using ASP.NET 4.0. They had a massive server and running manythings in one server. The gave us cPanel access, not the server SSH. We developed the whole project in Next.js. We have to go back and forth with the client and told them this is something new, we need SSH access to properly host this application.
Then we got the SSH access somehow, and we logged in. What we see is a messy server with lots of applications, and lots processes running. Now this project is something special, we had to have some background processes needs raw computer power to run. We pulled it off with Node.js somehow and we deployed it. Project worked, client happy 🙂, we are happy 😊, happy ending 🎉.
UNTIL, we got a message from client saying some of their other projects are down. We panicked. It is a government agency saying their government websites are down for the people in their country. We were not informed that the server has other applications in it. The problem was, they had some random port which got conflicted between the application we deployed to an application that they already have.
We spent like straight 5 hours, digging what went wrong and fixing it. Finally we fixed it by reverting the whole server to a state where it was before we deployed our application. Thankfully we took backups and snapshots before we deployed. But the damage is done.
That’s when we decided, it’s time to do something about this issue.
How we started?
Once these massive issues, and similar smaller issues have happened, after talking to multiple teams of different scales and sizes, we see this is a big issue not just for us, but to every team out there.
This is a beautiful image from an Wikipedia page. It explains what is DevOps in very simple way.
Plan → Create → Verify → Package → Release → Configure → Monitor
Very easy, right? Yes, only if you are a DevOps engineer with years and years of experience. Even to the DevOps people we talked to, they still get new issues that they don’t know of and struggle most of the time.
That’s when the idea of Putmein was born. Why can’t we make a 24/7 monitoring tool, which sits on the DevOps pipeline, audits for security issues, helps you deploy, configure stuffs itself, checks and verify every code from CI/CD and fix any issues in itself.
We took the board and started to make flows and after flows, sketches after sketches, a lot of books and articles, lots of failures, lots of talking with experts. We did planning for Putmein for 4 to 5 whole months. With the plan ready, we moved on to development.
We took SDLC strictly. Once a part is built, we test it with a real case scenario, then move on to next step. We spent 10 months building the whole project. We were making thousands of iterations. At the beginning it just started as a simeple CLI tool which at the end ended up being a full TUI and GUI platform.
How Putmein works?
We have three separate sets of project in one mono-repo naming it as:
- Ray: A GUI based platform made with Next.js
- Cohen: A TUI version of ray built in Node.js and Go (Still under development)
- Brain: Backend which powers both Ray and Cohen and written in Go.
- It is very easy to install. You can use the command below for your required OS.
# Linux / macOS / WSL
curl -fsSL https://putme.in/install.sh | bash
# Windows (PowerShell)
powershell -c "irm https://putme.in/install.ps1 | iex"
We are still developing it in different aspects, it is still in beta and we started using it on live servers for some of our clients and they loved it.
How did it saved us money?
Now for this part. We were in half completion state of the project. The core features are completed. At this point, we were using Next.js for most of our platforms. We have installed Putmein to different places just to be sane and know if something happens.
Next.js publically announced there is a CVE in React Server Components (RSC) and we had to act quick. Before we knew there where some attempts to exploit this issue on some of the server with lots of traffic. Thankfully, the agents inside Putmein realised what is happening and they already tried blocking some remote code execution attempts.
If the remote code execution has happened, it would’ve been a bigger mess, and we would’ve lost thousands of dollars.
After sometime, we installed Putmein on a server which had a financial application. We ran audit and it found the issue faster than a human could and flagged it immediately to us.
It is not in perfect shape yet. But it can help team of any scale to Secure, Build, Fix and Deploy.
Go to https://github.com/putme-in/putmein and star the repo. Install and use it. Create issues if you find any. Check our website for docs.
We will be pushing a lot to this repo and will be actively maintaining it, because it is helping us a lot, a lot more than what we have covered in this article.






Top comments (0)