$ cd ../projects

thos@portfolio:~$ cd ~/projects/meky && cat README.md

── Meky ──

projet personnel · September 20, 2026

[React Native] [Expo] [TypeScript] [NativeWind] [MMKV] [Android] [USSD]

Meky

A USSD code notebook for Android: save the operator codes you use every day, turn the parts that change into variables, and launch them from the dialer pre-filled, ready to call.

Why Meky exists

Everybody has that one USSD code — balance, transfer, airtime — typed from memory, wrong half the time, and retyped character by character each month. Saving them is only half the answer: the interesting codes are the ones with changing parts. *145*{NUMERO}*{MONTANT}# isn't a fixed code, it's a template. Meky makes the template first-class: you define the variables once, fill them at execution time, and the dialer opens with the complete formula.

Codes with variables

  • Templates, not copies: {NAME} placeholders in any code are detected automatically and typed by convention — {NUMERO} becomes a phone field, {MONTANT} a numeric field with the right keyboard, anything else free text.
  • Fill & launch: variables are substituted at execution, the code is sanitized to USSD-safe characters, and the dialer opens via ACTION_DIAL with the formula pre-filled — one tap on Call runs it. No CALL_PHONE permission, works on Android 8+.
  • Offline storage: everything lives in local MMKV storage. No account, no sync, no telemetry.

Fees & savings calculator

Discreetly tucked behind a calculator icon on the home screen, a withdrawal fees & savings calculator answers the real question about cash-out fees: should I withdraw the amount in one go, or split it?

It computes the optimal split of any amount against the withdrawal fee schedule (dynamic programming over fee-band tops) and shows the savings. For 101 000, one withdrawal costs 3 400 Ar — but 100 000 + 1 000 costs 2 000 Ar:

WithdrawalFees
101 000 (single)3 400 Ar
100 000 + 1 000 (split)2 000 Ar
Savings1 400 Ar

The fee schedule is generic — no operator or country branding — and versioned (updatedAt), so it can be adjusted and re-released when rates change.

Distribution

Meky ships as a versioned APK attached to GitHub Releases — installable without any app store — alongside a bilingual FR/EN landing page hosted on GitHub Pages. The landing follows the app's adaptive dark/light identity and points straight to the latest APK download.

Tech Stack

  • React Native + Expo (Expo Router)
  • TypeScript
  • NativeWind (Tailwind for React Native)
  • react-native-mmkv (storage)
  • expo-intent-launcher (dialer launch)
  • Jest (unit tests for parsing, fees, and launch logic)