OI
All work
2024–present★ Featured build

Veci CRM

A production multi-tenant CRM built from scratch for Veci Technologies — Laravel 13, domain-driven architecture across 20+ bounded contexts, Go microservices for import and email ingestion, live in production.

Role

Freelance Software Engineer

Capacity

Solo build · ongoing maintenance

Year

2024–present

Stack size

18 tools

Overview

Veci CRM is a full-featured, multi-tenant customer relationship management platform designed and built from scratch as a freelance engagement for Veci Technologies, which I continue to maintain. The platform is built on Laravel 13 with a domain-driven monorepo structure covering 20+ bounded contexts: Leads, Contacts, Organisations, Deals, Pipelines, Activities, Notes, Attachments, Custom Fields, Products, Quotes, Invoices, Automations, Email, Imports, Exports, Notifications, Audit, Comments, Files, Reports, Tags, API Keys, and Webhook Endpoints. Each domain follows a strict five-file structure — Actions, Queries, Models, Policies, Events — keeping business logic isolated and testable. Multi-tenancy is enforced through a BelongsToWorkspace trait and a global WorkspaceScope applied to every query, with ULID public IDs exposed to the client and integer PKs kept internal. The Inertia.js v3 + React 19 + TypeScript frontend uses shadcn/ui components and Tailwind CSS v4. Authentication uses Laravel Fortify with a five-role Spatie permissions system scoped per workspace. Two Go microservices handle the heavy-lifting data tasks: a CSV/XLSX importer worker and an email/reply ingestion service, both integrated into the Laravel queue via named channels. Laravel Horizon provides real-time queue monitoring across five named queues. The full stack runs in Docker Compose with PHP-FPM, Nginx, PostgreSQL, Redis, and Mailpit for local dev. The test suite uses Pest v4 with Larastan level-6 static analysis enforced in CI via GitHub Actions. Both staging and production environments are live and actively maintained.

Responsibilities

  • Designed the entire platform architecture from scratch: multi-tenant monorepo, domain-driven structure, Go microservices, and infrastructure.
  • Implemented workspace-scoped multi-tenancy with a BelongsToWorkspace trait, global WorkspaceScope, and ULID public IDs throughout the API surface.
  • Built 20+ domain modules (Leads, Contacts, Deals, Pipelines, Quotes, Invoices, Automations, etc.) each following a strict Actions/Queries/Policies/Events structure.
  • Developed a five-role Spatie permissions system per workspace with Laravel Fortify authentication, API key management, and webhook endpoints.
  • Built Go microservices for CSV/XLSX bulk import and email/reply ingestion, integrated into the Laravel queue via five named channels.
  • Set up Laravel Horizon for real-time queue monitoring, Pest v4 test suite, and Larastan level-6 static analysis enforced in CI.
  • Configured and deployed Docker Compose infrastructure (PHP-FPM, Nginx, PostgreSQL, Redis, Mailpit) and maintains both staging and production environments.

Highlights

  • Domain-driven architecture across 20+ bounded contexts — each domain fully isolated and independently testable
  • Workspace-scoped multi-tenancy enforced at the query layer with zero tenant data leakage
  • Go microservices for high-throughput CSV/XLSX import and email ingestion
  • Live in production at crm.vecitechnologies.net with active ongoing maintenance

Tech stack

Laravel 13PHPInertia.js v3React 19TypeScriptGoPostgreSQLRedisLaravel HorizonSpatie PermissionsLaravel FortifyTailwind CSS v4shadcn/uiPest v4LarastanDockerNginxGitHub Actions