0%
Aymen
Retour aux projets
WebLivré2026

Thiqaty

Plateforme de séquestre et de dépôt : transactions protégées entre acheteurs et vendeurs, commissions configurables et paiement par carte CIB / Edahabia.

Mon rôle
Ingénieur Full Stack
Période
avr. 2026 — juin 2026
Statut
Livré
Thiqaty
Aperçu

Thiqaty est une place de marché sous séquestre entre acheteurs et vendeurs : plutôt que de payer directement le vendeur, l'acheteur confie ses fonds à la plateforme le temps de la transaction, et la plateforme prélève des commissions configurables par les administrateurs — une commission de séquestre et une commission de dépôt distinctes. Les paiements passent par Chargily, qui accepte les cartes CIB et Edahabia.

Le backend est un service Fastify + TypeScript sur PostgreSQL avec Drizzle comme ORM ; les migrations de schéma s'appliquent automatiquement au démarrage du conteneur, ce qui évite tout décalage entre le code déployé et la base. L'authentification est exclusivement par cookie, sur le modèle Sanctum pour SPA, et un tableau de bord d'administration séparé, construit avec Vite, reprend l'architecture du client.

Le défi

Le problème à résoudre

Le commerce en ligne entre inconnus repose sur une confiance qui fait souvent défaut : l'acheteur paie en espérant recevoir, le vendeur expédie en espérant être payé. La plateforme devait se placer au milieu — conserver les fonds de l'acheteur jusqu'à la conclusion de la transaction, facturer cette garantie via deux commissions distinctes réglables par les administrateurs, et accepter les paiements par carte CIB et Edahabia. Elle devait aussi amener la contrepartie sur la plateforme sans friction, une transaction n'existant que lorsque les deux parties ont un compte.

Tarifs
Tarifs
La solution

Comment cela a été construit

Le cœur du système retient les fonds et applique un double modèle de commission — commission de séquestre et commission de dépôt — toutes deux configurables par les administrateurs plutôt que codées en dur, ce qui permet d'ajuster la tarification sans redéploiement. L'intégration Chargily tourne en clés de production et traite les paiements CIB et Edahabia. Pour faire entrer la seconde partie dans la transaction, les invitations par e-mail contiennent un lien d'acceptation qui rattache automatiquement l'invité dès son inscription — aucun rapprochement manuel.

La pile technique : Fastify + TypeScript sur PostgreSQL avec Drizzle ; les migrations s'appliquent d'elles-mêmes au démarrage du conteneur, supprimant le cas d'échec « code déployé en avance sur le schéma ». L'authentification est exclusivement par cookie, au format Sanctum pour SPA, sans jeton exposé au JavaScript côté client. L'administration se fait dans un tableau de bord Vite séparé qui reflète l'architecture du client.

Fonctionnalités clés

Ce que ça fait

🔒

Fonds sous séquestre

La plateforme conserve les fonds de l'acheteur pendant toute la transaction : aucune des deux parties n'a besoin de faire aveuglément confiance à l'autre.

⚖️

Double commission configurable

Deux frais distincts — commission de séquestre et commission de dépôt — ajustables par les administrateurs, sans modification du code.

💳

Paiements CIB et Edahabia

Intégration Chargily en clés de production, acceptant les paiements CIB et Edahabia.

✉️

Invitations auto-rattachées

Les invitations par e-mail portent un lien d'acceptation ; l'invité est rattaché automatiquement à la transaction dès son inscription.

🍪

Auth SPA par cookie

Sessions au format Sanctum portées exclusivement par cookie : aucun jeton stocké dans le JavaScript client.

🖥️

Tableau de bord miroir

Une application Vite séparée pour les opérateurs, qui réutilise l'architecture et les conventions du client.

Technologies utilisées

Construit avec

Frontend

TypeScript

Les flux d'argent et le calcul des commissions ne tolèrent aucune ambiguïté de types ; TypeScript impose les contrats de bout en bout, des requêtes Drizzle aux handlers de routes.

React.js

Le client et le tableau de bord d'administration Vite sont tous deux des applications React : un seul jeu de conventions de composants sert les deux surfaces.

Next.js

Le client destiné aux acheteurs et vendeurs tourne sur Next.js, dont le routage et l'outillage s'accordent avec le modèle de sessions par cookie au format Sanctum.

Backend

Fastify

Fastify apporte à l'API de séquestre un routage piloté par schémas et une validation explicite des requêtes avec une faible surcharge — les bons réglages pour une API qui déplace de l'argent.

Données

PostgreSQL

Les soldes sous séquestre et les commissions exigent une intégrité relationnelle et transactionnelle — PostgreSQL la fournit, avec des migrations Drizzle appliquées automatiquement au démarrage du conteneur.

Infrastructure

Docker

Le déploiement en conteneurs rend possible l'application des migrations au démarrage : chaque conteneur met le schéma à jour avant de servir la moindre requête.