Audio Brevity - the technical bits of the stack
What tech stack did I use for Audio Brevity.
A few months ago, I shared the tech stack for Audio Brevity on my private podcast (found here Adventures from the Pad). Since then, some things have changed. Two weeks ago, I embarked on rebuilding it from the ground up using Laravel.
Previously, the app was primarily built with Pocketbase and an Express app. Now, it’s built on Laravel. Here’s what happened, why I’ll still use Pocketbase again in the future, and why I’m absolutely in love with Laravel.
The “AI” pieces
One thing did stay the same, and that was the transcription and summarization.
- Runpod with GPUs running a Whisper model for transcription (shameless affiliate link)
- OpenAI’s GPT-4o-mini for summarization
I tried using an SDK for OpenAI in PHP, but I couldn’t find a way to enforce a JSON response. So, I’m actually just using cURL
to hit the API. It’s not ideal, but it’s working really well, even with massive payloads.
The “before” stack
Pocketbase got me a long way. It was working almost completely. Here was the previous stack:
- Fly.io for hosting
- Pocketbase for the database (SQLite)
- Express for the API
- Next.js for the front end
The “now” stack
- Laravel
- Forge
- DigitalOcean
- Postgres
Why Laravel?
The first code I ever wrote was in PHP. In fact, up until I started at my first startup in Portland, I was writing vanilla HTML/CSS with PHP and Perl (with a quick foray into Ember.js). I used Laravel a little bit back then and really liked it.
At my first startup, we used Angular 1.x and then React with a Python backend. Since then, I’ve mostly been working with JavaScript and its various frameworks and libraries. I haven’t really had a reason to revisit PHP, as most of my roles involved stepping into ongoing projects or companies that had already established their tech stacks.
With Pad19 Labs and Audio Brevity, I had the opportunity to build my own thing. I wanted to get started quickly, and Pocketbase with Next.js (which I use primarily at my day job) got me far. I wasn’t even considering another stack.
But then, as more people started using Audio Brevity in beta, I began encountering issues. Connections were hanging, and Pocketbase kept running out of memory (I was consistently crashing my 2 GB VM). Then, a migration went bad, and the VM wouldn’t start. My SQLite database and its replicas were not able to be mounted because the VM was hosed.
Quick reminder: I work on this between 10:00 PM and 12:00 AM. I have five kids under five, and by the time I sit down to work on Audio Brevity, I’m pretty tired. Could I have fixed the issues? Probably. Was it likely PEBKAC? Yes. But I needed to focus on building, not troubleshooting why Next.js, a pre-1.0 Pocketbase, an Express API, and Fly.io weren’t playing nice together.
I wanted something opinionated, something with a lot of things “out of the box.” When I asked, “How do I do X?” I wanted only one or two possible answers, ideally with at least one first-party option.
Without diving too deeply into Laravel (I’ll save that for another post), I’ll just say that Laravel checked all the boxes for me. I talked it over with a buddy who validated that I wasn’t crazy (thanks, Alex), and decided two weeks ago to toss the old codebase and start afresh with Laravel.
I think Pocketbase is great and I think the biggest challenge I had was debugging the inner workings when I had the memory issues. I’m bullish on what it can do especially for its DX - it’s so easy. I plan to eye it for future projects. It even says not to use it for production critical apps.
…and Laravel - I’m somewhat bummed I ever left. Immediately I was reminded of how much I enjoyed working with it. The docs are great, the community responds super well and there’s a tonne of great community content.
Two weeks with only a few hours of work a day and I built all of Audio Brevity sans the admin-panel starter-kit I bought. Laravel for the win on being a super productive framework just as it says on the tin.
Oh, and shameless plug: Audio Brevity is a thing now! You can give it a try, sign up, and let me know what you think.
image from this post generated by DALL•E 3