Mobile app · Gifts and delivery

Minguili

The project

Minguili is a Cameroonian platform for giving something to someone: flower and money bouquets, surprise baskets, beauty care at home, and express delivery. I worked on the three parts of the product: the mobile app, the API behind it and the back office used by the team.

Period
April – June 2025
My role
Software Engineer: the Expo / React Native mobile app, the NestJS API and the React back office.
Result
Published on Google Play.

What matters in the product

  • Prices computed on the server

    The app never sends a price. The official quote comes from the API, so the final amount can be trusted.

  • Passwordless sign-in

    A one-time code sent by email, valid for 10 minutes, with a limit on attempts.

  • Secure sessions

    A 15-minute access token kept in memory, a refresh token in the phone’s secure storage, rotated on every use.

  • Verified payments

    CinetPay payments: authenticated webhook, status re-read at the source, idempotent processing.

  • Built for slow connections

    Persistent catalogue cache, optimised and preloaded images, a session that opens without waiting for the network.

  • Two languages

    French by default, English available, and reduced motion respected.

Three parts, one product

  1. Mobile app

    Expo and React Native for Android and iOS: Surprise, Beauty and Express shops, order history and a delivery courier area.

    • Expo
    • TypeScript
    • React
  2. API

    NestJS and PostgreSQL, secure by default (roles, validation, rate limiting), documented with Swagger and deployed on Vercel.

    • NestJS
    • PostgreSQL
    • TypeScript
    • Vercel
  3. Back office

    React and Tailwind dashboard for administrators: orders, catalogue, users. About 80 KB of JavaScript on first load.

    • React
    • Tailwind CSS
    • TypeScript
    • Vercel

The app

Screens from the published app.

  • Minguili, 1/9
  • Minguili, 2/9
  • Minguili, 3/9
  • Minguili, 4/9
  • Minguili, 5/9
  • Minguili, 6/9
  • Minguili, 7/9
  • Minguili, 8/9
  • Minguili, 9/9