Victor Ohiri
Corda
Un service de mise en relation que je construis : un site vitrine et une application avec un tableau de bord pour chaque rôle.
- Rôle
- Fondateur, conception et développement
- Ma part
- Chaque décision de conception et de technique était la mienne.
- Technologies
- HTML, CSS, JavaScript, Canvas 2D, Next.js, TypeScript, Supabase
- Ailleurs
- Visiter le site en ligne
01 / 08
L’idée
Dites ce dont vous avez besoin et soyez mis en relation avec une vraie personne qui peut vous aider.
02 / 08
Le problème
C’est mon entreprise, j’ai donc écrit le cahier des charges. Un client envoie une demande, un administrateur affecte un professionnel, le professionnel traite la demande.
Deux questions en ont façonné l’essentiel : comment encaisser un paiement sur un site sans serveur, et comment garder privées les demandes de chacun dès qu’il y a des comptes.

03 / 08
L’approche
Deux parties qui n’en font qu’une : huit pages statiques qui expliquent l’idée et recueillent les demandes, et une application qui gère les comptes.
04 / 08
Les décisions
J’ai gardé le site vitrine statique : du HTML, du CSS et du JavaScript simples, sans étape de build ni serveur, toutes les pages partageant une seule feuille de style et un seul script.
Les paiements passent par les liens de paiement hébergés de Flutterwave : les données de carte ne touchent jamais le site et aucun script ni exception de politique de sécurité n’est nécessaire, chaque bouton de paiement n’étant qu’un lien.
Tant qu’il n’existe pas de vrai lien de paiement, un bouton reste cliquable mais annonce que le service arrive bientôt et renvoie vers WhatsApp, et un lien de test oublié compte comme non défini : rien de cassé ne peut donc passer en ligne par erreur.
Les deux premières demandes d’un client sont gratuites. Les formules hébergées de Flutterwave n’ont pas d’essai gratuit et le site n’a pas de comptes sur lesquels compter, donc le décompte est gardé dans le navigateur du visiteur. Il repart de zéro si la personne efface ses données ou change d’appareil, et chaque demande arrive quand même dans ma boîte de réception : je peux donc honorer ou ajuster l’offre moi-même.
Les professionnels s’inscrivent gratuitement pour de bon ; Pro coûte ₦7 500 par mois ; après les deux premières, un client paie un forfait de ₦1 500 par demande.
Dans l’application, la frontière de sécurité est la base de données, pas la page : les règles d’accès sont des politiques de sécurité au niveau des lignes, de sorte qu’un client ne peut pas lire la demande d’un autre, même si une requête de la page était erronée.
Le rôle choisi à l’inscription est copié dans un profil par un déclencheur, et le formulaire ne propose que client et professionnel. Une option administrateur permettrait à n’importe qui de la revendiquer, car les données du formulaire viennent d’un navigateur que personne n’a vérifié : je crée donc les administrateurs à la main.
Un client ne peut modifier sa propre demande que tant qu’elle est en attente, pour l’annuler ; la politique l’empêche de la marquer comme terminée ou de la confier à quelqu’un d’autre.
Les redirections par rôle consultent le rôle à chaque requête vers un tableau de bord. C’est acceptable à cette taille ; si cela ralentit, l’étape suivante est de faire porter le rôle par le jeton de connexion.
05 / 08
Le design
Un fond noir, une encre blanche et des lueurs discrètes. Le site vitrine est en niveaux de gris, et son image est un globe de points blancs.

06 / 08
La réalisation
Du HTML, du CSS et du JavaScript simples pour le site ; Next.js et Supabase pour l’application.
Le globe est un canvas 2D sans aucune bibliothèque. Dans l’application, les règles d’accès sont dans la base de données, pas dans l’interface.
Le site vitrine a demandé 44 commits en onze jours, du 4 au 15 septembre 2026 ; l’application est une première tranche de sept commits, les 14 et 15 septembre.
L’application propose l’inscription avec un rôle, la connexion par mot de passe ou par lien magique (Google une fois activé), la réinitialisation du mot de passe, et un tableau de bord des demandes pour les clients, les professionnels et les administrateurs.
- Site
- 8 pages statiques, HTML, CSS et JavaScript simples
- Globe
- Canvas 2D, aucune bibliothèque
- Application
- Next.js 14, TypeScript, Supabase
- Connexion
- Mot de passe, lien magique ; Google lorsqu’il est activé
- Rôles
- Client, professionnel, administrateur
- Code source
- Dépôts privés



07 / 08
Les détails
Les trois étapes s’illuminent sous le pointeur. La FAQ n’ouvre qu’une réponse à la fois.
08 / 08
État actuel
Le site vitrine est construit. Les paiements ne sont pas encore activés. L’application est une première tranche : l’inscription et un tableau de bord pour chaque rôle.
Les tableaux de bord affichent des données fictives pour l’instant. Ce qu’il faut pour passer en ligne, c’est à moi de le faire : créer les deux liens de paiement et les points de réception des formulaires, et brancher de vraies données derrière les tableaux de bord.

Projet suivant Portfolio, version précédente, 2026

Z3N





