Project Details
Flowpamine: Project Management SaaS API (Laravel 13 Modular Monolith)
A Laravel 13 / PostgreSQL 17 project-management SaaS API built as a modular monolith, with an approval-gated LLM agent, a six-provider abstraction, and per-call cost telemetry.
ongoingLast updated Aug 4, 2026
Visit Web AppWhat It Does
- Exposes 120 documented endpoints across 55 tables for projects, tasks, notes, files, and collaboration.
- Turns unstructured WhatsApp conversations into structured work items, held behind human approval before anything is written.
- Tracks the cost of every LLM call and drops trivial chatter before it reaches a paid provider.
Architecture Highlights
- Modules are isolated by domain events, so a change inside one module does not ripple across the other seven.
- One FrankenPHP image runs four process roles (API, queue worker, scheduler, WebSocket), selected at runtime.
- GitHub Actions lints, tests, and builds the production image on every pull request.
- An Azure DevOps pipeline deploys a single codebase to eight white-label customer environments in parallel.
Key Features
Modular Monolith Design
- 8 bounded modules that communicate through domain events rather than reaching into each other
- Generated OpenAPI specification kept in step with the route surface
- 69 Pest test suites covering the module boundaries
Provider-Agnostic LLM Layer
- Ports-and-adapters abstraction over OpenAI, Anthropic, Azure OpenAI, Bedrock, Cohere, and Gemini
- Degrades to a deterministic heuristic driver when no API key is configured, so the feature never hard-fails
- Human-in-the-loop approval gate before any agent output becomes a task, note, or file
Durable Delivery
- Transactional outbox over Redis Streams consumer groups with a dead-letter stream
- Lease and claim semantics plus stale-message reconcilers to recover abandoned work
- Separate dispatch and execution retry budgets, sequenced by a documented timeout ladder from LLM call through job to queue worker
Cost Telemetry
- Per-call records of provider, model, latency, input and output tokens, and status
- Dedicated usage table with retention pruning
- Pre-flight filter that drops trivial chatter before it reaches a paid call
Tech Stack
Core
- Laravel 13
- PHP 8.3
- PostgreSQL 17
AI Providers
- OpenAI
- Anthropic
- Azure OpenAI
- Bedrock
- Cohere
- Gemini
Messaging & Runtime
- Redis Streams
- FrankenPHP
- WebSockets
Testing & Delivery
- Pest
- OpenAPI
- GitHub Actions
- Azure DevOps
- Docker
Performance & Product Notes
- The outbox and retry ladder keep agent output deliverable across LLM, job, and worker failures.
- Retention pruning keeps the usage table bounded as call volume grows.
- Pre-flight filtering cuts spend by keeping low-value messages out of paid inference entirely.
Sajjadur