Skip to content
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
Visit live product

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

  1. 01Client app calls a versioned REST API with policy-based authorisation
  2. 02Write commands validate, persist, then emit domain events
  3. 03Queue workers project events into reporting tables and billing runs
  4. 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.