FareBot : Lecteur NFC Open Source pour le transport en commun sous Android, iOS et Web
Qu'est‑ce que FareBot?
FareBot (github.com/codebutler/farebot) est une application open‑source, Kotlin Multiplatform qui vous permet de lire et d'inspecter les données stockées sur les cartes à puce sans contact des transports publics. Elle est écrite en Kotlin pur avec Compose Multiplatform et fonctionne sur
- Android – API NFC native
- iOS – CoreNFC
- macOS – lecteurs PC/SC ou PN533 USB (expérimental)
- Web – WebAssembly + WebUSB (expérimental)
L'application prend en charge une large gamme de standards de cartes (ISO 7816, CEPAS, FeliCa, DESFire, MIFARE Classic, MIFARE Ultralight, NFC‑V) et lit des cartes de plus de 80 systèmes de transport à travers l'Asie, l'Europe, l'Amérique du Nord et au-delà.
Pourquoi est‑ce important pour les développeurs
- Outils modernes – Utilise Gradle KTS, Kotlin 2.3.0, Compose, DI avec Koin, serialization Kotlin x, etc.
- Documentation complète – Le dépôt contient un README vivant, des commentaires dans le code, et un dev‑container alimenté par Claude Code pour l'expérimentation sécurisée.
- Ouvert aux contributions – Tout le code est libre (MIT/GPL‑free) et le processus de PR est simple.
Caractéristiques clés
| Caractéristique | Description |
|---|---|
| Découverte des cartes | Scanne les tags NFC et liste les types de cartes disponibles. |
| Dump complet de la carte | Lit tous les fichiers EF et présente les données brutes, horodatages, et le solde. |
| UI multi‑plateforme | UI Compose partagée entre mobile, macOS, et web. |
| Registre de systèmes extensible | Ajoutez de nouveaux systèmes de transport dans un seul fichier « registry ». |
| Démo WebAssembly | Construction web expérimentale qui lit les cartes via un lecteur USB PN533 sous Chrome/Edge. |
| Dev‑container | Environnement Docker préchargé avec Java 21, Gradle, et Claude Code. |
Cartes prises en charge (exemples marquants)
- Japon – Suica, Pasmo, Octopus, Edy
- Singapour – EZ‑Link, NETS FlashPay, Octopus
- Allemagne – VDV‑Bus, VVS
- Royaume‑Uni – Oyster, cartes TfL (support limité de MIFARE)
- États‑Unis – Clipper, Ventra, ORCA (DESFire)
La liste complète est documentée dans le README ; le dépôt gère même les particularités spécifiques aux cartes, comme les clés de chiffrement MIFARE Classic.
Démarrage rapide
- Clonez le dépôt
git clone https://github.com/codebutler/farebot.git cd farebot - Construction et exécution (Android)
make android-install # installe sur un appareil connecté via ADB - Construction et exécution (iOS)
make ios-install # installe sur un iPhone physique - Construire et servir le web
make web-run - Exécuter les tests
make test
Astuce : Le dev‑container (
.devcontainer/) vous offre un éditeur sandbox où vous pouvez exécuter Claude Code ou expérimenter avec le dépôt sans risque.
Flux de contributions
- Forkez le dépôt.
- Créez une branche feature.
- Ajoutez/modifiez le code; exécutez
make test. - Soumettez une pull request.
Tous les contributeurs sont remerciés dans la section Contributors. Le dépôt compte plus de 30 contributeurs et plus de 1 k★, témoignant d'une communauté dynamique.
Licence & communauté
FareBot est publié sous licence GPL‑3.0 – libre d'utilisation, modification, et redistribution, à condition que les œuvres dérivées restent sous la même licence. Le projet accueille les contributions via les PR GitHub, les issues, ou l'ajout de nouveaux adaptateurs de systèmes de transport.
Conclusion : Si vous créez une application de transport habilitée NFC, ou que vous souhaitez simplement découvrir comment un codebase Kotlin Multiplatform de production est structuré, FareBot est indispensable. Sa combinaison de support réel de cartes, de capacités web expérimentales, et d'un dépôt entièrement documenté en fait une référence open‑source exemplaire.