Back to Portfolio

Cashworx

Technical Case Study & System Architecture

The Problem

Tax collection and service payments for the Nigerian government were historically fragmented, leading to revenue leakage and a poor user experience for citizens. The business goal was to centralize these disparate payment channels into a single, secure, and transparent platform.

My Role

Single-handedly architected and implemented the entire ecosystem: Laravel 11 API, Next.js Admin Dashboard, and Flutter Mobile Application.

Key Engineering Decisions

1Strategy-Based Payment Abstraction

Implemented a PaymentGatewayInterface and PaymentGatewayManager in the Laravel core. This decoupled business logic from specific providers, allowing for zero-downtime switching between processors.

2Feature-First Clean Architecture (Flutter)

Adopted a domain-driven approach using BLoC. By isolating business rules in a pure domain layer, I ensured the app could handle complex state transitions without UI regressions.

Architecture Deep-Dive

System Design

Strategy-based API architecture utilizing a decoupled PaymentGatewayManager. Built with Laravel 11 for strict API contracts and enterprise-grade reliability.

Storage Strategy

Relational modeling (PostgreSQL) optimized for multi-state tax logic and high-integrity financial auditing.

Auth & Security

Stateless JWT authentication paired with a deep RBAC system (Admin, Operator, Tax Accountant) and OAuth integration.

Scalability

Asynchronous queue-based processing for heavy tax calculations and OneSignal/FCM integration for high-priority notification broadcasting.

Outcome

"Successfully built and staged the full technical suite. The project reached a "ready-for-deployment" status with complete CI/CD pipelines and containerized environments."

What I Learned

Solidified the necessity of rigorous abstraction. Building a government-scale system solo taught me that clean architecture isn't just a best practice—it's a survival requirement for maintaining complex relational models over time.

Engineered with

LaravelNext.jsFlutterPostgreSQLRedisJWTDocker