I've been building JuggleHire—a hiring tool for small teams—for 2.5 years. Here's the stack and why I chose it.
The Stack
Backend:
- Laravel 12 (PHP 8.3)
- MySQL
- Redis (queues + caching)
- Laravel Horizon for queue management
Frontend:
- React 19
- Inertia.js v2 (the glue)
- Mantine UI components
- Tailwind CSS v4
Infrastructure:
- DigitalOcean
- Laravel Forge
- GitHub Actions for CI/CD
Why Inertia.js?
I wanted SPA-like speed without building a separate API. Inertia lets me:
- Use Laravel routing and controllers
- Return React components instead of Blade views
- Get client-side navigation without managing API endpoints
- Keep authentication simple (session-based)
It's not perfect for every use case, but for a B2B SaaS with authenticated users, it's ideal.
The AI Features
Using OpenAI's API (GPT-4o-mini) for:
- Candidate summaries
- Match scores
- Job description generation
- Interview questions
- Email templates
I built a credits system so users don't get unlimited API calls. 50,000 credits = ~500 candidate summaries.
Lessons Learned
Livewire → React migration was painful but worth it. The UI is way more responsive now.
Inertia v2's deferred props are game-changing. Load the page fast, fetch heavy data after.
AI features are table stakes now. Users expect them.
Solo founder = ruthless prioritization. I can't build everything.
Just Launched on Product Hunt
If you want to see it in action:
- PH: https://www.producthunt.com/posts/jugglehire-2/
- LTD: https://jugglehire.com/lifetime-deal (20 spots, $99)
Happy to answer questions about the stack or the build process.

Top comments (0)