I initially developed planfree.dev for my team at Netcall, so we could use a planning website free from the hassle of constant popups trying to get us to upgrade to the premium versions. Or other equally ghastly websites that track your number of games using session/local storage, where we’d have to go incognito, or manually remove values from application storage.
The frontend Vue app of Planfree has always been deployed to Netlify, it’s just too easy — and free — to bother considering anywhere else. The backend was deployed to my work’s Azure subscription, being it was initially intended to help my team and I had some spare credits, it was a no-brainer.
Now, fast-forward a couple of years, Planfree is gaining some traction with teams all over the world using it to plan their next iteration. I have since moved onto another team at Netcall where we don’t add story points to the tickets, thus don’t need Planfree.
Time to move the backend.
Having the backend deployed to Azure under a work subscription came with a few downsides to begin with:
- I had to manually build my app and upload it to Azure; being behind a subscription I couldn’t connect CI/CD using my GitHub
- Visibility was limited to my work computer
These two points have put a nail in the progression of the backend, there’s not been any updates to the code since the first lot of deployments. It’s hard to add incremental changes when you know you’re going to have to manually deploy it, and it’s hard to add any changes at all when you don’t have good visibility on potential improvements.
I sat down this morning with the intention of rewriting the backend from a node, socket.js app to a dotnet core app using SignalR. I wrote a couple lines of code and then came to the startling realisation that I may well just be making work for myself. Due to the lack of visibility, I have no idea whether the backend needs anything, let alone rewriting. Let’s just get this deployed to Heroku and see what’s what.
This was too easy…
Heroku has come on a long way since I last used it. I created a new Heroku app and connected my Github repo to it. I added the node.js build pack, clicked deploy, it didn’t work. The problem is that Heroku expects your package.json to be at the root directory, mine isn’t as my repo hosts the front and the backend. I had to create a separate package.json which pointed to the server app for Heroku’s benefit:
{
"name": "planfree.dev",
"version": "1.0.0",
"description": "For deployment to heroku",
"main": "index.js",
"scripts": {
"start": "node server/index.js",
"postinstall": "npm install --prefix server/"
},
"repository": {
"type": "git",
"url": "git+https://github.com/LukeGarrigan/planfree.dev.git"
},
"author": "",
"license": "ISC",
"homepage": "https://github.com/LukeGarrigan/planfree.dev#readme"
}
This was a bit of a faff, most of the competitors allow you to specify a root directory or at least configure some initial commands, but it’s not the end of the world.
The only config I had to change was updating the Netlify app to point to the new server and set some environment variables for the server to point back to the host.
I thought there would at least be some CORs fun and games, but it looks like Heroku is open by default.
it deployed.
And now we have some metrics!

The only downside to this is that I’m going to have to pay ~$7 per month. I’d be curious if there are any free always-on ways to deploy a node app out there
With all this newfound visibility at my fingertips, I look forward to not making any improvements to the backend.