What I Actually Build
Backend systems for B2B and B2E platforms. The kind that handle thousands of transactions, serve complex business logic across multiple tenants, and need to stay running. Not MVPs that need a rewrite in six months.
I’ve built platforms serving 30,000+ daily active users. E-wire runs a full ISP customer lifecycle. Dadooo.ai powers AI content generation with 8 bounded contexts and 160+ migrations. The B2E White-Label Platform serves 6 organizations from one codebase, each thinking they have their own product. These systems run on infrastructure I manage, built with architectural decisions I can defend.
Architecture Before Code
I don’t scaffold a Laravel project and figure it out as I go. Every platform starts with data models, bounded contexts, API contracts, and infrastructure topology on paper. This takes a few days upfront and saves months of rework down the line.
For Dadooo.ai, this meant identifying 8 domain boundaries (AI, Text, Media, SocialMedia, Calendar, CashFlow, IdeaBank, Client) before writing a single migration. Each domain owns its data, its business rules, and its interfaces to the rest of the system. Six months into development, adding new features still takes days, not weeks. That’s the payoff.
Multi-Tenant PostgreSQL
Most B2B platforms need tenant isolation. I use schema-separated PostgreSQL databases. Each tenant’s data lives in its own schema. The middleware resolves the tenant from the subdomain, token, or session, then routes queries to the right schema. One codebase, completely isolated data.
The B2E White-Label Platform takes this further with white-labeled frontends per tenant, custom branding, and feature flags. Six organizations, six different products, one Laravel application. I’ve done this enough to know where the edge cases hide.
Separated Frontend and Backend
Laravel API and Vue 3 SPA live in separate repositories. The backend exposes versioned REST endpoints. The frontend consumes them. Each deploys independently into its own Docker container behind Nginx. Your frontend developer ships a UI fix without coordinating with me, and I deploy a new API version without rebuilding the client.
This isn’t theoretical. On Dadooo.ai, the Vue 3 SPA communicates with Laravel through typed API contracts and real-time WebSocket updates via Laravel Reverb. Frontend and backend move at their own pace.
Why These Tools
I don’t chase trends. I pick tools that perform under production load.
Laravel because it’s the fastest path to a well-structured backend. Eloquent handles multi-tenant queries without fighting the ORM. Horizon gives me queue visibility. Sanctum handles API auth without OAuth complexity when I don’t need it.
PostgreSQL because schema separation works natively, JSON columns handle semi-structured data when needed, and it doesn’t buckle under concurrent transactional load. When the platform needs full-text search at scale, I add Elasticsearch alongside it. Dadooo.ai runs both.
Vue 3 + TypeScript because Composition API maps cleanly to complex UI state, and TypeScript catches the contract mismatches between frontend and backend that would otherwise show up in production.
Docker on Hetzner because containers are reproducible and EU bare metal is a fraction of AWS pricing at scale. I’ve never had a client come back and say “I wish we were on a hyperscaler.”
What Ships With Every Platform
This isn’t “code complete” as the finish line. A production platform means:
- Automated tests: PHPUnit for domain logic, Pest for feature tests, integration tests against real databases
- CI/CD: push to main triggers tests, builds containers, deploys. For Dadooo.ai, this is fully automated. For systems with stricter constraints, it’s on-demand with reproducible scripts.
- Monitoring: Uptime Kuma for health checks, New Relic for APM, Datadog for infrastructure. I know something is wrong before users do.
- Documentation: architecture decisions, API endpoints, deployment procedures, and runbooks. Your next developer can understand the system without calling me.
- Security: token auth, input validation, rate limiting, OWASP basics. Not an afterthought.
Who This Is For
You have business logic that doesn’t fit into off-the-shelf tools. You’re coordinating between organizations, processing complex workflows, or building something your industry doesn’t have yet. You need it in production, handling real users, and you need it to last.
If you need a WordPress site, I’m not your person. If you need a system with real domain complexity that scales with your business, let’s talk.
Frequently Asked Questions
Why Laravel instead of Node.js, Go, or something else?
For the B2B platforms I build, Laravel is the fastest path to production with the least amount of custom infrastructure. Eloquent handles complex relational queries without fighting the ORM. Queues, events, scheduling, and caching are built in. The ecosystem (Horizon, Telescope, Sanctum) covers 80% of enterprise needs without custom code. I’ve used Go for specific performance-critical services, but for full-platform development with complex business logic, Laravel wins on productivity every time.
How long does it take to build a platform from scratch?
Depends entirely on the domain complexity. A focused B2B platform with 3-4 bounded contexts typically takes 3-5 months to reach a solid first production release. Something like Dadooo.ai with 8+ domains, AI integration, and multi-model support took longer. I’ll give you a realistic timeline after the architecture phase, not a guess before understanding the problem.
Can my team take over the codebase later?
That’s the point. I structure every project with Domain-Driven Design specifically so the next developer can understand it. Bounded contexts, typed interfaces, automated tests, and documentation. I’ve handed off multiple codebases to client teams who maintained and extended them without me. The architecture is designed for this.
Do you work with existing Laravel codebases or only build from scratch?
Both. I’ve inherited codebases at various stages of quality and either extended them or migrated them to a better architecture. If your existing system works and just needs new features, I’ll build on what you have. If it’s fighting you, we’ll discuss whether incremental refactoring or a migration makes more sense.
What’s the typical ongoing cost after launch?
Infrastructure on Hetzner runs between €50-200/month for most B2B platforms depending on traffic and data volume. That includes the server, database, Redis, and monitoring. I typically stay involved for maintenance and feature development on a monthly retainer, but the system runs independently. You’re not locked into me.