All projects
SaaS Platform
Softedin
Software studio operating system
A delivery platform that turns a services business into a repeatable, measurable machine - pipeline, scoping, sprint delivery and invoicing in one system.
- Laravel
- Vue
- MySQL
- Redis
- AWS
- Stripe
The problem
Delivery knowledge lived in people's heads. Estimates drifted, margins were discovered after the fact, and no two projects were run the same way.
Business challenge
Standardise delivery without slowing senior engineers down, and make margin visible while the project is still running.
Research
Six weeks shadowing project managers and engineers across twelve concurrent engagements, mapping every place a decision left the system.
Planning
One modular monolith, domain boundaries drawn around Sales, Delivery and Finance, with events between them so reporting never blocks delivery.
Architecture
- Laravel modular monolith with strict domain boundaries
- Redis-backed queues for exports, notifications and invoicing runs
- Read models rebuilt from a domain event log for margin reporting
- Stripe billing with webhook reconciliation and idempotency keys
Database design
MySQL with a normalised core (accounts, engagements, sprints, time entries) plus denormalised reporting tables rebuilt nightly and on-event.
API flow
- 01Client app calls a versioned REST API with policy-based authorisation
- 02Write commands validate, persist, then emit domain events
- 03Queue workers project events into reporting tables and billing runs
- 04Webhooks reconcile Stripe state back into the invoice ledger
Implementation
- Shipped Sales and Scoping first so the sales team funded the rest
- Backfilled three years of historical projects for real benchmarks
- Rolled out per-team with feature flags rather than a big-bang launch
Key features
- Scoping workspace with reusable estimate templates
- Live margin tracking per engagement
- Sprint delivery board with client-visible status
- Automated invoicing and Stripe reconciliation
Performance
- p95 dashboard load under 400ms on 3M+ time entries
- Nightly reporting rebuild reduced from 42 minutes to 4
Lessons learned
- Reporting is a product, not a query. Give it its own data model early.
- Feature flags per team beat a launch date every single time.
Taking on 2 new partnerships for Q4
Let's talk about what you're building
Thirty minutes, no pitch deck. Bring the problem - you'll leave with an honest read on scope, risk and the fastest credible path to launch.