Build in Public: December 2025 Recap

December was intense. I shipped a major release, made significant progress on two other projects, and learned a few things along the way. Here's the honest recap.

Laravel Translations v2: Shipped

The biggest milestone this month was releasing Laravel Translations v2. After months of work, the complete rewrite is live. The feedback has been great so far — the new React + Inertia frontend is faster, the role-based access control was immediately useful for teams, and the dual auth mode solved a pain point that v1 users had been asking about for a long time.

Translations v2 Release

Numbers

  • 33 test files covering the core functionality
  • 9 controllers refactored from scratch
  • 4 contributor roles with granular permissions
  • 2 auth modes (Contributors + Users)
  • 0 npm required in the host application

The upgrade path from v1 worked smoothly for most users. A few edge cases came up with custom modifications to v1, but nothing that couldn't be resolved with a quick migration.

kit: Architecture Solidified

The feature extraction system is working reliably now. I can select any combination of modules and generate a clean project without dead code. That was the hardest engineering problem in kit, and it's solved.

This month I focused on:

  • Billing module — 321 tests passing, supports Stripe with Paddle and LemonSqueezy coming
  • Teams module — 255 tests, workspace management with per-seat billing integration
  • Notifications — All 9 channels working: email, Slack, Discord, Teams, Telegram, SMS, webhooks, in-app, and WebSocket

The admin panel UI is the next big push. The backend logic is there, but the React components need polish before I'm comfortable shipping it.

Translations Pro: AI Integration

On the Pro side, I integrated AI-powered translations using laravel/ai. The provider abstraction is clean — users can switch between OpenAI and Anthropic without changing anything in their workflow. Cost estimation before batch translation was something I added after almost running up a $50 bill during testing.

Lessons from This Month

1. Rewrite Scope Always Grows

When I started the Translations v2 rewrite, I had a clear list of what to change. By the end, I'd also redesigned the database schema, rebuilt the import/export system, and added features that weren't in the original plan. Set your scope, then add 40%.

2. Tests Are Your Safety Net During Rewrites

The v2 test suite caught at least a dozen regressions that would have shipped to users. When you're rewriting something that people depend on, tests aren't optional — they're the only thing standing between you and angry GitHub issues.

3. Ship, Then Polish

I almost delayed the v2 launch to add more features. Glad I didn't. The feedback from real users has been more valuable than another month of polishing in isolation.

January Goals

  • Launch kit admin panel
  • Release Translations Pro AI translation to early access users
  • Start working on the kit documentation module search (Algolia/Meilisearch integration)

See you in the January recap.

Related articles