SparkIt
Private for nowSolanaSpark, an on-chain identity platform. July to August 2025.
My contribution
197 of 242 commits on the web application, and the whole of the workers service, 33 commits out of 33. Two other developers contributed to the web application.
What I built
- Minting flow for an identity NFT on Solana: the transaction is built server side, signed in the browser through the wallet adapter, then confirmed and recorded.
- Wallet connection with Phantom, Solflare and Backpack, with a guard that keeps the connected wallet and the authenticated account in step.
- Authentication with Privy and JWT verification on the protected routes, combined with GitHub and X account linking through OAuth.
- Score interface: leaderboard, radar chart of the score attributes, referral section and public profile sharing.
- Access control by invitation code, an admin area, CSRF tokens and security headers.
The hard part
The score is computed from several external sources and none of them answers quickly. I moved that work out of the request cycle into four asynchronous Python workers behind a Redis queue, one per source, writing to PostgreSQL. The interface had to stay usable while a score was still being computed, so each source carries its own pending, done and failed state instead of one global spinner. Halfway through, the data layer also moved from Supabase to PostgreSQL on Railway.
Stack
Next.js 13 App Router, TypeScript, Tailwind, shadcn/ui, Solana web3.js, wallet adapter, Anchor, Privy, PostgreSQL, Redis, Python
Mint flow
Landing, v1
Landing, v2
Promo
Click to open the player