I built a task app. Yes, the same thing thousands of tutorials and a few million bored developers have already built. No, I’m not sorry. This one pays for itself.
The problem with renting
Our team of seven was on Asana. Asana is good. Asana also charges per person, per month, forever. Every time someone joins, the bill grows. And we wanted chat alongside our tasks, which usually means paying for a second tool as well.
Add it up over a year and it’s real money for a small agency. So I asked the obvious engineering question: how hard can it be?
(Harder than I thought. It usually is.)
What CrewSpace does
It’s a crew and task management app that also handles team chat, so one app does the jobs of Asana and Slack together. It’s built to host multiple companies, each with their own private space, and it runs on my own Oracle server.
For our team of seven, it saves at least £2,000 a year. And unlike a per-seat subscription, the saving grows every time someone joins.
How I built it: coding agents
I’ll be upfront, because I think it’s the more interesting part of the story. I built CrewSpace with AI coding agents, mainly Claude Code, and I’ve used Google’s Antigravity as well. Some people call this vibe coding.
That doesn’t mean I typed “make me Asana” and went for lunch. The agents write most of the code. My job is knowing exactly what I want, breaking it into pieces an agent can build, testing what comes back, spotting when it’s wrong, and deciding how the whole thing fits together. It’s less like typing and more like running a very fast, very literal team.
My engineering background helped more than I expected. Specifying a system, checking it against requirements and catching problems before they spread is the same skill whether you’re designing pipes in a chemical plant or permissions in a task app.
Version one, and why I rebuilt it
The first version was built in Next.js, because that was the only framework I knew back then. It worked. Then it got heavy.
When I wanted to add real-time chat, it was clear the foundation wasn’t right. So I rebuilt it properly:
- React for the interface.
- Express for the server.
- Socket.io for real-time chat, so messages appear instantly instead of when you refresh.
- Prisma and PostgreSQL for the database.
- Docker and Coolify on Oracle Cloud for hosting.
The move off shared hosting and onto my own server is its own story: Moving an app from shared hosting to Oracle Cloud with Coolify.
What it taught me
Building your own tool is only cheaper if you can maintain it. The real cost isn’t writing it, it’s owning it: updates, backups, and the day something breaks at 11pm. I’m comfortable with that trade because I enjoy running servers. Not everyone should make it.
It also made me think hard about security. More on that in Hiding a button isn’t security.
Seven people use it every day, and none of them get a monthly invoice for it. That’s the kind of feature list I like.