SparkIt
En privé pour le momentSolanaSpark, une plateforme d'identité on-chain. De juillet à août 2025.
Ma contribution
197 des 242 commits de l'application web, et la totalité du service de workers, 33 commits sur 33. Deux autres développeurs ont contribué à l'application web.
Ce que j'ai développé
- Parcours de mint d'un NFT d'identité sur Solana : la transaction est construite côté serveur, signée dans le navigateur via le wallet adapter, puis confirmée et enregistrée.
- Connexion de wallet avec Phantom, Solflare et Backpack, avec un garde-fou qui maintient le wallet connecté et le compte authentifié en cohérence.
- Authentification Privy et vérification du JWT sur les routes protégées, avec rattachement des comptes GitHub et X en OAuth.
- Interface de score : classement, graphique radar des attributs, section de parrainage et partage public du profil.
- Accès par code d'invitation, espace d'administration, jetons CSRF et en-têtes de sécurité.
La difficulté
Le score se calcule à partir de plusieurs sources externes, dont aucune ne répond vite. J'ai sorti ce travail du cycle de requête vers quatre workers Python asynchrones derrière une file Redis, un par source, qui écrivent dans PostgreSQL. L'interface devait rester utilisable pendant qu'un score se calculait : chaque source porte donc son propre état en attente, terminé ou en échec, plutôt qu'un unique indicateur global. En cours de route, la couche de données est aussi passée de Supabase à PostgreSQL sur Railway.
Stack
Next.js 13 App Router, TypeScript, Tailwind, shadcn/ui, Solana web3.js, wallet adapter, Anchor, Privy, PostgreSQL, Redis, Python
Parcours de mint
Landing, v1
Landing, v2
Promo
Cliquez pour ouvrir le lecteur