Coast Systems

"Mandenkan Money" : Maitrise le CFA dans le marché ouest africain

Construire une “calculatrice linguistique” : faire le lien entre la numération en base 10 et les devises en base 5 des langues mandingues

app

En tant que développeur, j’ai toujours été fasciné par la capacité du logiciel à résoudre des frictions culturelles du monde réel. Récemment, je me suis attaqué à un défi unique : les calculs "au marché" en Afrique de l’ouest.

En Côte d’Ivoire, au Mali et dans d’autres pays d’Afrique de l’Ouest, les prix sont affichés en Francs CFA (Base 10). Pourtant, au cœur du marché, on parle en Dɔrɔmɛ ou en Dari — un système basé sur des unités de 5 CFA. J’ai conçu Mandenkan Money pour servir de traducteur en temps réel entre ces deux mondes, au profit des apprenants de langues locales (comme moi-même).

Voici un aperçu des coulisses techniques.

Le Stack Technique : Svelte 5 & Runes

Svelte 5 était idéal pour ce projet avec son nouveau système de "Runes" ($state, $derived). C’est un système parfait pour une logique réactive à haute fréquence.

Dans une application de conversion monétaire, l’état est une cible mouvante. Lorsqu’un utilisateur tape "110", l’application doit (à chaque frappe) :

  • Valider que le montant existe ou non en monnaie physique (multiples de 5).

  • Déconstruire un nombre valide en composants linguistiques (110 CFA = 22 unités).

  • Composer la chaîne en Dioula ou Bambara (22 = Mugan ni fila).

L’utilisation des runes $derived m’a permis de chaîner ces dépendances proprement. La "Source de Vérité" est une constante unique : CFA_BASE_UNIT = 5. Tout le reste — le détail du calcul, le texte en Dioula, et même les couleurs de validation de l’interface — découle automatiquement de cette unité de base.

// La "Source de Vérité" du marché
const CFA_BASE_UNIT = 5;

// État réactif (Runes Svelte 5)
let priceCfa = $state(null);
let priceInputFocused = $state(false);

// Chaîne de dépendance : La logique découle automatiquement de la saisie
const isMultipleOf5 = $derived(priceCfa !== null && priceCfa % CFA_BASE_UNIT === 0);

// Couleurs de validation dérivées du focus et de la validité
const priceWarning = $derived(priceInputFocused && !isMultipleOf5 && priceCfa > 0);
const priceError = $derived(!priceInputFocused && priceCfa > 0 && !isMultipleOf5);

// La sortie linguistique finale se déclenche selon la validation
const priceText = $derived(isMultipleOf5 ? formatOutput(priceCfa) : "");

// Détail du calcul : (unités) * 5 = CFA
const priceMath = $derived(isMultipleOf5 ? formatMath(priceCfa) : "");

UX for the "apprentice" at the Market"

L’une des fonctionnalités utiles est le détail du calcul "sans complexe".

Au marché d’Adjamé, un marchand dit "kɛmɛ" (100 unités) et vous lui donnez 500 CFA. Pour un apprenant, ce saut de 5 pour 1 est un véritable obstacle mental surtout avec un chiffre com 1250. L’application expose le calcul directement dans l’interface, ce qui est extrêmement utile pour un apprenti linguiste :

maths
Prix Maths Linguistiques

1250 CFA

(200 + 50) × 5 = 1250

dɔrɔmɛ kɛmɛ fila ni bi looru

J’ai également crée un système de validation de type "Feu Tricolore". Comme il est impossible d’avoir 11 CFA dans le monde réel, la ligne de saisie devient orange pendant la frappe et passe au vert dès que vous atteignez un multiple de 5 valide. Cela transforme l’acte de taper en une mini-leçon d’économie de marché.

traffic light 1 traffic light 2 traffic light 3 traffic light 4

Au-delà du Code : Une mission avec Mandenkan.com

Ce projet est plus qu’un simple utilitaire ; c’est un compagnon pour les cours proposés sur Mandenkan.com. Nous pensons que la technologie doit rendre les langues africaines plus accessibles, et non les remplacer.

En numérisant le système de comptage en base 10 et le système monétaire quinaire (base 5) du monde Mandingue, nous aidons une nouvelle génération d’apprenants à naviguer dans les marchés d’Abidjan et de Bamako avec confiance.

NOTE
Note
L’application vous permet de choisir la variante du mandenkan de votre préférence : le bambara ou le dioula.

Et en bonus, vous bénéficiez d’une salutation calculée en temps réel selon l’heure de la journée !

salutation

Essayez-le !

L’application est une PWA (Progressive Web App), ce qui signifie qu’elle fonctionne hors ligne une fois chargée — idéal pour naviguer au cœur du marché là où la 4G est un luxe.

Pour les utilisateurs Android : Cliquez simplement sur 'Installer l’application' lorsqu’on vous le propose, et elle sera fonctionnelle sans connexion de données.

Pour les utilisateurs iOS : C’est à peine plus compliqué. Apple prend en charge les PWA, mais comme elles n’utilisent pas l’App Store, leur installation est plus discrète par conception. Vous devez "Partager" l’application vers votre écran d’accueil. Cliquez sur le bouton 'Partager' et choisissez 'Sur l’écran d’accueil'. L’application sera alors installée et disponible hors ligne.

Découvrez l’application ici : Mandenkan Money

Et profitez-en pour passer au niveau supérieur en Dioula ou en Bambara : Mandenkan.com