SMSGang Backend Engineering & Technical Overview I built SMSGang as a full-stack digital services...SMSGang Backend Engineering & Technical Overview I built SMSGang as a full-stack digital services...
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
SMSGang Backend Engineering & Technical Overview
I built SMSGang as a full-stack digital services platform, taking primary ownership of the backend architecture, system design, third-party integrations, infrastructure, security, and production operations. My role went far beyond simply developing API endpoints; I designed the core systems that allow the platform to process payments, manage user balances, execute digital-service transactions, communicate with external providers, and operate reliably in production.
The backend was built primarily with Laravel and PHP, with a strong focus on scalability, maintainability, security, reliability, and clean separation of responsibilities. I designed the application around a structured API architecture, allowing the frontend and external clients to communicate with the platform securely while keeping the business logic centralized within the backend.
Core Backend Architecture
I designed and implemented the core Laravel backend, including the application's models, controllers, services, repositories where appropriate, middleware, validation, authentication, authorization, database relationships, API resources, queues, jobs, scheduled tasks, notifications, and integrations.
The system handles different categories of digital services, including mobile data, airtime, virtual/OTP numbers, bill payments, wallet operations, and other service-based transactions. Each service requires different business rules and external providers, so I structured the backend in a way that allows providers and services to be integrated without making the entire application tightly coupled to one provider.
I also designed the database architecture around important entities such as users, wallets, transactions, orders, services, providers, payment records, and related operational data. I paid particular attention to data consistency because financial operations require significantly more care than ordinary CRUD-based applications.
Wallet & Financial Transaction System
One of the most important parts of SMSGang is the wallet and transaction infrastructure. I designed the system to properly track user balances, deposits, debits, purchases, refunds, and service transactions.
I implemented transaction records and financial states so that every important wallet operation can be traced. Rather than treating a balance as just a number in the database, the backend maintains transaction history that makes it possible to understand where funds came from, what they were used for, and what happened when a transaction succeeded, failed, or was reversed.
I also handled issues around concurrency and race conditions, especially where multiple requests could potentially attempt to modify the same user's wallet at the same time. Database transactions, row-level locking where appropriate, validation, idempotency considerations, and controlled transaction processing are important parts of ensuring that users cannot accidentally be credited or debited incorrectly.
For payment processing, I integrated payment providers and implemented webhook/callback handling so that payment status is confirmed from the provider rather than relying solely on the frontend. This allows the backend to verify successful payments, update wallets, create transaction records, and safely process the resulting service purchase.
Payment Processing & Webhooks
I implemented payment flows that communicate with external payment providers such as Paystack, including payment initialization, verification, callbacks/webhooks, virtual-account-related flows, and transaction reconciliation.
The backend validates payment responses and processes them according to the actual transaction state. I also designed the system to avoid blindly trusting requests coming from the client, particularly around financial operations.
Webhook processing is handled carefully because providers can retry webhook requests or send duplicate notifications. I therefore considered idempotency and duplicate transaction protection when processing payment events so that the same payment cannot accidentally credit a user's wallet multiple times.
Third-Party API Integrations
A significant part of SMSGang involved integrating multiple external service providers.
The platform communicates with providers for services such as:
Mobile data
Airtime
Virtual/OTP numbers
SMS
Bill payments
Payment processing
Other digital services
I designed the integrations so that the application can communicate with external APIs while maintaining control over the internal transaction lifecycle.
This includes handling API authentication, request construction, response parsing, timeouts, failed requests, provider errors, unavailable services, retries, transaction states, and provider-specific response formats.
Because external APIs are not always reliable, the backend needs to distinguish between a request being accepted, successfully completed, failed, pending, or unavailable. I implemented the necessary logic to prevent external provider failures from corrupting the internal wallet or transaction state.
Queues, Jobs & Background Processing
I used Laravel Queues and Jobs to move resource-intensive or non-critical operations away from the main HTTP request lifecycle.
Instead of forcing a user to wait for every operation to finish synchronously, background jobs can handle tasks such as:
Processing service transactions
Sending notifications
Sending emails or SMS
Processing webhook-related operations
Updating transaction statuses
Provider retries
Reconciliation tasks
Other asynchronous operations
This improves API response times and allows the system to handle more requests without putting unnecessary load on the web server.
I also considered job failure handling, retries, delays, queue workers, and failed jobs, ensuring that background operations could be monitored and recovered when external services temporarily failed.
Cron Jobs & Laravel Scheduler
I implemented scheduled tasks using Laravel's scheduler and cron infrastructure for recurring backend operations.
These scheduled processes can be used for tasks such as:
Checking pending transactions
Reconciling provider transactions
Updating service statuses
Cleaning expired records
Processing scheduled operations
Retrying failed operations
Maintaining system data
Running periodic background processes
This allowed the application to perform operational tasks automatically rather than relying on manual intervention.
Redis & Caching
I also worked with Redis for caching and high-performance backend operations.
Caching is particularly useful for information that is requested frequently but does not need to be retrieved from the database on every request. This reduces database load and improves response times.
Redis can also support queue processing, temporary data, rate limiting, locks, and other high-performance operations.
For a platform like SMSGang, caching needs to be implemented carefully because financial information and transaction states should not be incorrectly served from stale cache. I therefore separate data that can safely be cached from data that must always be retrieved from the authoritative source.
Concurrency & Data Consistency
Handling concurrency is one of the areas where I focused heavily on backend engineering.
A digital wallet platform can receive multiple requests simultaneously from the same user or from external systems. For example, a user could initiate multiple purchases while a payment webhook is being processed at the same time.
I designed the backend with database transactions, validation, locking strategies, transaction states, and duplicate-operation protection to reduce the risk of inconsistent balances or duplicated transactions.
This is particularly important because a simple implementation that reads a balance, modifies it, and saves it can become unsafe when multiple requests execute simultaneously.
Authentication & API Security
I implemented secure authentication and authorization mechanisms for the platform and protected sensitive API endpoints using authentication middleware and token-based authentication.
I also implemented request validation, authorization checks, middleware, protected routes, secure environment configuration, and other backend security practices.
Security considerations were applied not only to authentication but also to financial operations, API access, webhooks, database operations, third-party credentials, and sensitive configuration.
I ensure that secrets and provider credentials are not hardcoded into the application and instead use environment-based configuration.
Database Engineering
I designed and maintained the application's relational database structure, including relationships between users, wallets, transactions, orders, services, providers, and other business entities.
I worked with migrations, indexes, foreign keys, constraints, relationships, query optimization, eager loading, and database transactions.
I also considered database performance as the amount of platform data grows, avoiding unnecessary queries and optimizing frequently accessed operations.
For critical financial operations, database integrity is treated as a priority because an incorrect database state can directly affect a user's funds.
API Design
I designed RESTful APIs that allow the frontend and other clients to interact with the backend.
The APIs include authentication, user management, wallet operations, payments, service purchases, transaction history, order management, service availability, and other platform functionality.
I also implemented proper validation and standardized API responses so that frontend clients can reliably understand successful requests, validation errors, authentication failures, transaction failures, and provider errors.
The API architecture also makes it possible for SMSGang's backend services to be consumed by other applications in the future.
Error Handling & Reliability
I built the backend with the understanding that external services can fail.
Payment providers can become temporarily unavailable. Data providers can return errors. Network requests can timeout. Webhooks can arrive multiple times. Queue jobs can fail. A user can close their browser while a transaction is still being processed.
Because of this, I designed the system around explicit transaction states and proper error handling rather than assuming every request will succeed.
I implemented mechanisms for handling failures, retries, pending transactions, provider responses, failed jobs, and unexpected exceptions while ensuring that the internal financial state remains consistent.
Production Infrastructure & Deployment
I also handled the infrastructure and deployment side of the project.
This includes configuring the production environment, server, web server, PHP runtime, database, queues, cron jobs, environment variables, SSL/HTTPS, deployment processes, logs, and application configuration.
I worked with technologies such as Linux/VPS infrastructure, Nginx, Docker, Git/GitHub, Redis, MySQL/PostgreSQL, PHP-FPM, and Laravel's production tooling.
I am comfortable taking a backend application from development through deployment and maintaining it after it becomes a live production system.
Monitoring, Maintenance & Continuous Improvement
After deployment, I continued maintaining the platform and handling production issues, debugging errors, improving performance, monitoring integrations, updating dependencies, fixing edge cases, and improving existing systems.
Building SMSGang taught me to think beyond simply making features work. I had to consider what happens when thousands of requests arrive, when two transactions happen simultaneously, when an external provider fails, when a webhook is duplicated, when a queue job crashes, when a payment is delayed, and when the database grows significantly.
Overall Engineering Approach
My approach to SMSGang was to build it as a production-grade backend rather than just a collection of API endpoints.
I was responsible for the architecture and implementation across the entire backend lifecycle: database design, API development, authentication, authorization, wallet infrastructure, payment processing, transaction management, third-party integrations, queues, jobs, cron scheduling, Redis caching, concurrency handling, error handling, security, deployment, infrastructure, monitoring, debugging, and ongoing maintenance.
The project gave me practical experience building and operating a real-world financial/digital-services platform where data consistency, security, reliability, scalability, and transaction correctness are critical.
Most importantly, I handled the technical challenges end-to-end. I was not only writing Laravel code; I was responsible for understanding how the entire system behaves in production and designing the backend to remain reliable even when users, payment providers, service providers, queues, APIs, and infrastructure are all operating simultaneously.
Post image
Back to feed
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started