Ask HN: How do you manage multiple projects / servers as a single developer?

1 points by M4v3R ↗ HN
I run a one-person developer shop and currently work for only one client. I worked on multiple projects for this client, each with slightly different stack - some were PHP with MySQL (legacy stuff, each using a different framework), some are NodeJS based with MongoDB storage. Some servers are on Vultr/DO and I have root SSH access to them, while others are managed servers with cPanel and FTP access. Databases live on most of the servers, but for the production ones we use an external MongoDB service. Basically it's all over the place. I need to remember how to access and manage all of those services, which gets hard if for example one of the projects wasn't updated in a while and I suddenly need to refresh my memory on how it was set up, how to update and deploy it.

My question is geared towards people who also work as a single developer (I assume that in big companies this is not a big issue because there are teams working on separate projects) and have similar challenges - how do you keep up with all of this? How do you handle your client telling you that there's a bug that needs to be fixed in an app you last worked on two years ago and don't really remember the specifics of its setup? Also, I fear that if something happened to me, this client would be in a very hard situation if he wanted to transition those projects to someone else.

2 comments

[ 3.1 ms ] story [ 11.1 ms ] thread
Document the living shit out of everything
I'm a solo developer and I currently have 110 projects on my development workstation. These are a combination of my own projects and freelance client's projects over the last 20 years.

Not all of them are still live on the internet but my general strategy to keep everything in order is to have an encrypted blob of text associated to each project using a CLI based password manager that I use. I've written about this tool on my blog at https://nickjanetakis.com/blog/managing-your-passwords-on-th....

It contains things like which domain registrar I used, where the hosting is, passwords for everything, random notes that are important, context about the client, etc..

Keeping the stacks separate in development is easy with Docker, and for my non-legacy clients I tend to just spin up a DO droplet and use Ansible to manage it (or use DO's 1 click installer for things like WP sites).

It wouldn't be a problem at all to hand over any of these projects to someone else but in the 20 years of doing this, I was never put in a position where a client told me to hand the reigns over to someone else.

I still have some really old clients from the mid 2000s that have 10,000+ line apps written in PHP with no frameworks. Having to patch that app haunts my dreams. Luckily I haven't had to touch it since 2007 and it miraculously still runs well.