Skip to main content
  • E-commerce
  • Back office
  • Online payments

Africa Toner

Sector
Retail
Delivered as
  • Website
  • Back office
Year
2025

“Vos cartouches, livrées demain.”

(The project)

A complete online store for compatible printer toners in Morocco: catalogue, cart, Stripe and PayPal checkout, a full back-office and a guided printer-to-toner finder, built as one Laravel and React application.

(Context)

A complete store, end to end.

Africa Toner sells compatible toners to consumers and professionals. Customers browse and compare products, manage a cart, pay with Stripe or PayPal, track their orders and request toners that are not listed yet.

Behind the storefront sits a full administration area for products, brands, orders, users and toner requests, alongside the printer finder. Everything runs in one Laravel 13 application rendering React 19 through Inertia.

(Key figures)

payment gateways
2
back-office modules
6
one-click sign-in
Google
delivery pricing
Per city

(The ecosystem)

What we delivered

The decisions that shaped it

  1. One application, no separate API

    Laravel controllers render React pages through Inertia.js, so there is no second REST API to maintain. Named routes are shared with the browser.

    Monolith by design

  2. Routing separated by role

    Public pages, customer areas (checkout, orders, profile), guest sign-in and the administration each sit behind their own middleware.

    Access control

  3. Two payment gateways

    Stripe and PayPal are both wired into checkout, giving customers a choice while one order flow runs behind them.

    Flexible payments

  4. Hybrid client state

    Redux Toolkit holds interface and cart state, React Query handles server data, and hashed identifiers keep sequential IDs out of URLs.

    Pragmatic state

(How it works)

The order pipeline

  1. Catalogue to cart

    Customers filter the catalogue with instant search and brand or printer facets, compare products and add them to a persistent cart.

  2. Checkout

    Checkout collects the address and delivery city, priced per city, and routes payment through Stripe or PayPal.

  3. Order and back-office

    An order is created with an obfuscated reference, and the team manages products, brands, orders, users and requests from the dashboard.

Captures of the delivered build, grouped by product. Select one to see it at full size.

Technology

Back end
  • Laravel 13
  • PHP 8.3
  • Inertia.js 3
Front end
  • React 19
  • MUI
  • Tailwind CSS 4
  • Vite 8
State
  • Redux Toolkit
  • React Query
  • axios
Payments
  • Stripe
  • PayPal
  • Google OAuth

(Next project)

Badging SaaS

Events, 2025

Your project could be the next system we build.