Final Year Project · Academic → Production

CampusXpress —
a full marketplace,
built from zero.

A multi-vendor e-commerce marketplace for campus environments built as my Computer Science final year project at Babcock University and taken to production. Supports vendors, customers, admins, an affiliate network, AI-powered recommendations, and integrated payments. 50+ PHP files. 45+ database tables. Zero frameworks.

Role
Sole Developer & Architect
Context
FYP → Production System
Published
IJSRA Journal (2026)
Campus Locations
15 Global Campuses
Stack
PHP · MySQL · Python · JS
Integrations
Paystack · Recombee AI · PHPMailer

45+
Database tables across 10 relational tiers
50+
PHP files spanning customer, vendor & admin surfaces
28
Admin-configurable platform settings via the control panel
15
Global campus locations across 4 continents

What I Built

Six systems, one platform,
no framework crutch.

01 —
Customer Storefront & Shopping Flow
Full e-commerce customer journey browse, search, filter by category/price/rating/vendor, product detail pages with variant selection, dual-storage cart (session for guests, database for logged-in users), multi-step checkout, and order confirmation. Promo code system with percentage/fixed discounts, scope controls, and usage limits.
PHP Sessions MySQL Dual Cart Storage Promo Engine
02 —
Paystack Payment Integration
End-to-end payment processing Paystack-hosted checkout initiation, webhook callback handling, HMAC signature validation, order status updates on confirmation, and support for card, bank transfer, and cash-on-delivery flows. Race condition prevention on stock at checkout using MySQL transactions with FOR UPDATE locking.
Paystack API HMAC Verification MySQL Transactions Stock Locking
03 —
Multi-Vendor Ecosystem
Vendors register, complete KYC (ID documents, bank details), submit products for admin approval, manage inventory, handle orders, respond to reviews, and request payouts. Separate vendor session with its own dashboard, analytics, messaging, and settings isolated from the customer layer.
KYC Onboarding Product Variants Payout Ledger Vendor Analytics
04 —
Affiliate & Referral System
Vendors earn commissions by sharing referral links. Referral codes are captured via URL, stored in a 30-day HTTPOnly cookie, resolved at checkout, and commission entries written to a vendor ledger. Default 10% platform commission, configurable per deployment. Platform vendor excluded from earning to prevent self-referral abuse.
Cookie Attribution Ledger System Commission Calc Last-Click Model
05 —
AI Recommendations (Recombee)
Integrated Recombee's AI recommendation API to power personalized product suggestions and related-product sections. Built a graceful degradation wrapper if the SDK is missing or the API is unreachable, the page loads normally with no errors. Product views logged to train the model over time.
Recombee API View Logging Graceful Fallback Personalization
06 —
Admin Control Centre
26+ admin pages covering everything: product approval, vendor management, order management, dispute resolution, support tickets, payout processing, analytics, report export (PDF/CSV), security audit logs, 2FA enforcement, and 28 configurable platform settings. Full role-based access (super_admin / admin / moderator).
RBAC Security Audit Logs Report Export Dispute Resolution

Database Architecture

45+ tables across
10 relational tiers.

Designed from scratch with clean foreign key relationships, no ORM shortcuts. Every table serves a deliberate purpose.

Tier
Foundation
3 tables
Tables
campuses, brands, product_categories
Purpose
Base reference data. 15 global campuses, 7 product categories. No dependencies — everything else references these.
Tier
Users & Auth
3 tables
Tables
users, admin_users, admin_settings
Purpose
Unified user table with role enum (customer/vendor/admin). Admin privileges stored separately with permissions_json for granular RBAC.
Tier
Vendor Profiles
8 tables
Tables
vendors, vendor_settings, vendor_verifications, vendor_verification_documents, vendor_payout_accounts, vendor_ledger_entries, vendor_payouts, vendor_notifications
Purpose
Complete vendor lifecycle — KYC status, bank details, commission ledger (every credit and debit), payout history, per-vendor settings as key-value pairs.
Tier
Product Catalog
6 tables
Tables
products, product_variants, product_images, product_reviews, review_replies, product_vendors
Purpose
Variants support size/color/storage with individual price overrides and stock levels. Multi-image with sort order. Verified-purchase badge on reviews enforced at DB level.
Tier
Orders & Commerce
7 tables
Tables
orders, order_items, order_tracking, invoices, shopping_cart, wishlist, transactions
Purpose
Price-at-purchase snapshot stored on order_items (not live price) to prevent invoice discrepancies. order_tracking stores full status history as a timeline.
Tier
Promotions
2 tables
Tables
promo_codes, promo_code_usage
Purpose
Supports percentage and fixed discounts, scoped to global/category/vendor, with per-user and total usage caps, expiry dates, and minimum order amounts.
Tier
Support & Messaging
5 tables
Tables
conversations, messages, support_tickets, support_ticket_messages, disputes
Purpose
1:1 vendor-customer messaging via AJAX polling. Ticket system with internal staff notes (hidden from customers). Dispute resolution with evidence tracking.

System Architecture

How it all connects.

  CampusXpress — Data & Workflow Flow
Customer
browse · cart · checkout
process-checkout.php
stock lock · order create · affiliate resolve
Paystack API
hosted checkout · webhook
verify-payment.php
HMAC · order confirm
↕ every order feeds ↕
Vendor Dashboard
orders · payouts · analytics
Admin Panel
26+ management pages
Affiliate System
cookie · ledger · commission
Recombee AI
view logs · recommendations
↕ transactional email on every state change ↕
PHPMailer / SMTP
register · order · reset · payout
MySQL DB
45+ tables · FK integrity
SessionManager
HTTPOnly · Secure · SameSite

Engineering Challenges

Hard problems I solved.

Area
Race Conditions
The Problem
Two customers buying the last unit simultaneously could both succeed, causing overselling — a classic e-commerce concurrency problem.
My Solution
Wrapped checkout stock checks in a MySQL transaction with SELECT ... FOR UPDATE row-locking. If stock is insufficient mid-transaction, it rolls back and returns an error before any order is created.
Area
Cart Persistence
The Problem
Guest cart items stored in PHP session are lost on login unless handled — creating a frustrating UX where the cart empties mid-session.
My Solution
On login, session cart is automatically migrated to the shopping_cart database table, merged with any existing DB items, and the session cart is cleared. Seamless to the user.
Area
Payment Security
The Problem
Paystack callbacks could be spoofed a malicious actor could send a fake "payment successful" webhook to confirm unpaid orders.
My Solution
Implemented HMAC-SHA512 signature validation on every incoming webhook. The payload is hashed with the Paystack secret key server-side before any order status is updated. Invalid signatures return 403.
Area
AI Resilience
The Problem
A hard dependency on the Recombee AI API would cause page failures if the SDK was missing or the API was unreachable — unacceptable for a production system.
My Solution
Built RecommendationService.php as a graceful degradation wrapper. Checks for SDK availability first, wraps all API calls in try-catch, and returns empty arrays on failure. The page always loads.
Area
Affiliate Attribution
The Problem
Referral attribution had to survive across sessions, tab closes, and multiple page visits — a URL parameter alone is not enough.
My Solution
Referral code captured from URL on first visit and stored in a 30-day HTTPOnly, Secure, SameSite=Lax cookie. Checkout resolves the vendor from the cookie and creates a ledger entry one commission per order, platform vendor excluded.
Area
Price Integrity
The Problem
If invoice totals referenced live product prices, a price change after purchase would corrupt the order history and financial records.
My Solution
At checkout, price_at_purchase is snapshotted and stored directly on order_items. All financial calculations, invoices, and commission entries use this immutable snapshot never the live price.
Academic Recognition
CampusXpress was submitted as my Computer Science final year project at Babcock University and accepted for publication in the International Journal of Science and Research Archive (IJSRA), co-authored with Matuluko Oluwanifemi John. The paper covers the system architecture, AI recommendation integration, and multi-vendor commerce model.

Outcomes

What this system delivers.

🎓
Academic → Production
Started as a final year project, completed to production-grade quality with real orders processed, real vendors onboarded, and a journal paper published from the research.
🤖
AI-Native from Day One
Recombee AI recommendations integrated at the product and homepage level not bolted on later. The system learns from every product view to improve suggestion quality over time.
🌍
Global by Design
15 campus locations across Nigeria, Ghana, Kenya, South Africa, UK, USA, Canada, Australia, India, Germany, France, Italy, Spain, Brazil, and UAE registered in the database from launch.

About the Developer

I build systems that
work in the real world.

I'm Kodilichukwu Okeke, a full-stack developer and CS graduate (Babcock University, 2026) based in Lagos, Nigeria. CampusXpress is one of two production systems I've built from scratch the other being Elite Corporate Setup, a pan-African business compliance platform.

I'm comfortable across the full stack from database schema design and backend API architecture to frontend UX and third-party API integration. I think in systems: how data flows, where things can break, and how to build for the edge cases that matter.

I'm actively looking for web developer roles where I can bring this same end-to-end thinking to a product team. I work fast, I communicate clearly, and I don't need to be hand-held through complex problems.

Languages
PHP Python JavaScript SQL HTML/CSS
Backend & DB
MySQL / MariaDB PHPMailer / SMTP Session Management CSRF / Security
Integrations
Paystack Recombee AI Gemini AI reCAPTCHA
Other
Git XAMPP / Linux Bootstrap jQuery
Let's work
together — seriously.
Based in Lagos, Nigeria · Open to remote
Get in touch →