- Hackathon
- IoT
- Blockchain
Grab&Surf
Une location de planches de surf sans personne sur la plage, où c'est la planche elle-même qui garde la preuve de tout ce qui s'est passé.
- Contexte
- Hackathon SHAKA Festival, 6 heures
- Rôle
- Lead et développeur
- Équipe
- 2 développeurs, 2 équipiers pitch et démo
- Défi
- Green Wave, pour Notox


Le défi
La planche qui se souvient.
Au hackathon SHAKA Festival, le défi Green Wave demandait un service de location de planches de surf en liège Notox sans personne sur place. Les contraintes : pas de serrure, pas de casier, pas d'application native, seulement QR code, web et SMS ; une balise BLE passive par planche et un Raspberry Pi par station. Départs et retours sont détectés, jamais déclarés.
J'ai pris le lead de l'équipe : mise en place du projet, coordination et développement, aux côtés d'un autre développeur et de deux équipiers chargés du pitch et de la démo.
Notre idée : chaque planche est un NFT sur Avalanche avec un carnet de vie infalsifiable (mise en service, départs, retours, réparations, inspections). Il dissuade le vol, tranche les litiges de caution et rassure les partenaires. La blockchain est l'infrastructure, pas le produit : l'usager ne voit jamais de wallet, de signature ni de frais, c'est le serveur qui écrit.
Ce que nous avons construit
Quatre acteurs, une même histoire
- 01
Client
Inscription unique par téléphone et carte, location en deux gestes depuis le QR du rack, reçu par SMS, photos de retour guidées.
- 02
Exploitant
Planches et stations en temps réel, alertes, missions du jour, validation des diagnostics de casse et de la caution.
- 03
Propriétaire
Impression des QR, grille des forfaits de réparation, validation des parrainages de planches.
- 04
Partenaire
Packs d'heures à distribuer en codes, suivi d'un usage agrégé et vérifiable, sans aucun nom.
Architecture
De la balise au carnet de vie
Les départs et retours partent de la plage ; la location n'attend jamais la blockchain.
1 · Sur la plage
- Balises BLEUne par planche, passive
- Raspberry PiUn par station
2 · Station
- station.pyJournal sur disque, reprise, alarme
3 · Serveur
- FastAPIRègles métier pures, un routeur par domaine
- SQLiteVia SQLAlchemy
4 · Services
- AvalancheFile d'attente, envois par lots
- SMS, paiement, IA photoChacun avec une version simulée
5 · Interfaces
- Page clientOuverte par QR code, sans app
- Tableaux de bordExploitant, propriétaire, partenaire
- Passeport publicHistoire de la planche
Zoom technique
Détecté, jamais déclaré
Les balises BLE sont captées par le Raspberry Pi de chaque station, qui transmet départs et retours au backend FastAPI. Le prix se calcule sur l'heure de l'événement, pas sur l'heure de réception, et la location n'attend jamais la blockchain : les écritures partent dans une file d'attente.
Au retour, six photos guidées servent de preuve. Claude Vision propose un diagnostic, l'exploitant décide, et seule l'empreinte de la photo est inscrite sur la chaîne.
- 1Inscription uniqueTéléphone, code SMS et empreinte de carte de 300 €
- 2Départ détectéLa station repère la planche, le compteur démarre
- 3Retour détectéPlanche raccrochée, prix prélevé, reçu par SMS
- 4Photos de retourDiagnostic proposé par l'IA, validé par l'exploitant
Robustesse
Ce qui casse, et ce qui se passe alors
Une détection radio imparfaite
La détection BLE est le premier point faible : un faux départ peut toujours arriver.
Notre réponse
Une erreur se corrige par un nouvel événement de correction, elle ne s'efface jamais.
Une coupure réseau
Une station peut perdre la connexion en pleine journée de location.
Notre réponse
La station écrit ses événements sur disque et les renvoie dans l'ordre ; les doublons sont ignorés.
Une blockchain indisponible
La chaîne peut être lente ou inaccessible au moment d'un retour.
Notre réponse
File d'attente sur disque, envois par lots : la location continue sans attendre la chaîne.


Règles métier
Tout tient dans un fichier de configuration
- Tarif
- 0,20 € la minute, forfait journée de 30 € par 24 h, jamais au-dessus de la caution.
- Caution
- Empreinte de carte de 300 €, jamais débitée sauf non-retour confirmé par l'exploitant.
- Photo de retour
- 1 € offert sur la prochaine session si le QR photographié est bien celui de la planche.
- Parrainage
- 2 € pour le filleul, 2 € pour le parrain après la première location, 10 parrainages maximum.
- Vol
- Une planche sortie sans location déclenche l'alarme sonore de la station et une alerte exploitant.

Décisions techniques
Les choix, et pourquoi
- NFT ERC-721 sur Avalanche
- Un jeton par planche pour un carnet de vie public et vérifiable, pour quelques millionièmes d'AVAX par événement sur le testnet.
- Rien de personnel on-chain
- Planche, station, type d'événement, heure et empreintes ; jamais de téléphone, de nom, de carte ni de montant.
- Règles métier pures
- Prix, flotte, cagnotte et réparations sans réseau, base ni horloge système : testables isolément.
- Services simulables
- Sans clé ou sans réseau, la chaîne, l'IA photo et les SMS passent en simulation, clairement affichée, pour une démo fiable.
- Rafraîchissement toutes les 2 s
- Plus simple que des WebSockets à construire et à fiabiliser en six heures.
Modèle économique
Les offres imaginées pour Notox
- 01
Parc durable financé
Une commune ou un partenaire finance 10 planches sur 10 ans ; Notox fournit le rack, les planches, la réparation et le remplacement.
- 02
Rack mobile pour les écoles
Le moniteur reste dans l'eau avec ses élèves pendant que les planches se louent seules : le loueur local devient client.
- 03
Packs d'heures
Pour les entreprises, mutuelles et mairies, avec un suivi vérifiable pour leur rapport RSE.
- 04
Parrainage de planches
Un sponsor et un artiste local mis en avant sur le passeport public de la planche.
Stack
Les outils du projet
- Python
- FastAPI
- SQLAlchemy
- SQLite
- React
- Vite
- Tailwind CSS
- shadcn/ui
- Solidity
- Avalanche
- web3.py
- Claude Vision
- Twilio
- Raspberry Pi
- BLE
- GitHub Actions