Skip to content

joris-r/Lespass

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,297 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Caution

La branche V2 est un propotype en ALPHA : Ne pas utiliser en production

Utilisez la branche main.


TiBillet

Billetterie, caisse, cashless, adhĂ©sion, monnaie locale — fabriquĂ©s en commun.

CoopĂ©rative Code Commun · Documentation · Budget contributif · Discord · 🇬🇧 English

Licence Django Python Tests unitaires Tests E2E


🇬🇧 English speakers: TiBillet is a federated, open-source toolkit for ticketing, POS, NFC cashless payments, memberships, and local currencies — built as a digital commons by the Code Commun Cooperative. Read more in English →


TiBillet, c'est quoi ?

TiBillet est un ensemble d'outils libres pour les lieux culturels, les festivals, les associations et les tiers-lieux : billetterie en ligne, caisse enregistreuse, cashless par carte NFC, gestion d'adhésions, monnaie locale et monnaie temps.

Mais TiBillet n'est pas qu'un logiciel. C'est un commun numérique, construit par et pour les gens qui s'en servent. Plusieurs centaines de lieux et organisations, plus d'une vingtaine en contribution active, une coopérative pensé comme un commun juridique, et l'idée simple que les outils qui font tourner nos lieux de vie ne devraient appartenir à personne d'autre qu'à ceux qui les utilisent.

Le principe : Un outil de crĂ©ation de fĂ©dĂ©ration a travers des agendas et billetteries, une caisse enregistreuse et carte NFC unique, valable dans tout le rĂ©seau. Pas de frais d'activation, pas de date d'expiration, pas de dark pattern. Vous rechargez quand vous voulez, vous dĂ©pensez oĂč vous voulez, vous vous faites rembourser quand vous voulez. Et la carte sert aussi de carte d'adhĂ©sion, de porte-monnaie local et/ou de monnaie temps.

Alternatives Ă  : Weezevent, HelloAsso, Cyclos, L'Addition, Ulule, Caisses et POS JVC...

Mais TiBillet va encore plus loin car pensĂ© pour crĂ©er des fĂ©dĂ©rations : Une billetterie peut se fĂ©dĂ©rer Ă  d'autres pour crĂ©er des agendas communs. Des caisses peuvent lire les mĂȘmes cartes NFC pour faire des monnaies locales. Des collectifs peuvent fĂ©dĂ©rĂ©r des producteurs pour crĂ©er une caisse sociale alimentaire.


Fonctionnalités

Module Description Détails
đŸŽ« Billetterie & Agenda ÉvĂ©nements, tarifs, rĂ©servations en ligne, QR codes, scan Ă  l'entrĂ©e → BaseBillet/
đŸȘ Caisse enregistreuse Point de vente tactile, grille d'articles, multi-moyens de paiement, conforme LNE → laboutik/
💳 Cashless NFC Carte sans contact, rechargement en ligne ou sur place, paiement fĂ©dĂ©rĂ© multi-lieux : Cashless de festival. → fedow_core/
đŸ€ AdhĂ©sions Cotisations en ligne ou sur place, vĂ©rification au scan, tarifs prĂ©fĂ©rentiels → BaseBillet/
đŸȘ™ Monnaie locale & temps Euros, monnaie cadeau, monnaie temps — plusieurs devises sur une seule carte → fedow_core/
📊 Rapports & comptabilitĂ© ClĂŽtures de caisse, export FEC, bilans billetterie, PDF et CSV → laboutik/
📩 Inventaire Stock par produit, alertes, journal de mouvements, mise Ă  jour temps rĂ©el → inventaire/
đŸ—łïž Budget contributif Initiatives, votes, financement participatif, co-rĂ©munĂ©ration transparente, suivi d'engagement bĂ©nĂ©voles. → crowds/
đŸ–šïž Impression thermique Tickets, reçus, clĂŽtures — Sunmi Cloud, LAN, imprimante interne, imprĂ©ssion de commande en cuisine → laboutik/
🌐 API sĂ©mantique Schema.org / JSON-LD, clĂ© API, endpoints REST → api_v2/

Documentation en cours d'écriture collaborative et disponible en français sur : https://tibillet.coop/

L'ancienne documentation EN/FR est toujours disponible ici : https://tibillet.github.io/documentation_v2/


En production, pour de vrai

TiBillet n'est pas un prototype. C'est un outil en production depuis 2018, nĂ© au Manapany Festival Ă  La RĂ©union, aujourd'hui dĂ©ployĂ© sur plusieurs dizaines de lieux — des cafĂ©s associatifs aux festivals de 15 000 personnes.

Quelques exemples de ce que TiBillet rend possible aujourd'hui :

  • 4 festivals Ă  Montpellier partagent la mĂȘme carte NFC pour 15 000 festivaliers. Une carte, quatre lieux, zĂ©ro bracelet jetable.
  • Un collectif citoyen en Normandie distribue 100 cartes pour de l'aide alimentaire solidaire (SĂ©curitĂ© Sociale de l'Alimentation). Chaque carte est crĂ©ditĂ©e de 100 €, peu importe ce que la personne a payĂ©. Pas de contrĂŽle, pas de case "prĂ©caire" Ă  cocher — juste de la dignitĂ©.
  • La Raffinerie Ă  La RĂ©union, une ancienne sucriĂšre reconvertie en tiers-lieu, utilise une monnaie temps : les heures passĂ©es sur les chantiers participatifs du mercredi sont comptabilisĂ©es sur la carte, Ă©changeables contre des services ou des boissons au bar associatif le soir.
  • Des bars associatifs vĂ©rifient l'adhĂ©sion automatiquement au scan NFC — fini le fichier Excel que personne ne consultait.

Démarrage rapide

TiBillet tourne dans Docker. Une seule commande pour lancer l'environnement de développement :

git clone https://github.com/TiBillet/TiBillet.git
cd TiBillet
cp env_example .env        # Configurer les variables d'environnement

# Lespass uniquement :
docker compose up -d
# Lespass + Laboutik
docker compose -f docker-compose-laboutik-V1.yml up -d

# pour les donnée de démo / dev
docker exec -ti lespass_django bash
./flush.sh # la premiÚre fois, ça installe toute les fixtures et lance le serveur
rsp # Si l'installation a déja été réalisé, lance le serveur de dev'

#idem pour Laboutik :
docker exec -ti laboutik_django bash
./flush.sh # la premiÚre fois, ça installe toute les fixtures et lance le serveur
rsp # Si l'installation a déja été réalisé, lance le serveur de dev'

L'application est accessible sur

  • https://lespass.tibillet.localhost
  • https://laboutik.tibillet.localhost

Prérequis : Docker, Docker Compose, et un reverse proxy Traefik (inclus dans le compose).

Pour les dĂ©tails d'installation, de configuration et de dĂ©ploiement en production : → Documentation complĂšte


Tests

618 tests pytest + 117 tests E2E Playwright, 100% verts.

# Tests unitaires et integration (pytest DB-only, ~3 min)
docker exec lespass_django poetry run pytest tests/pytest/ -v

# Tests End-to-End (Playwright Python, ~12 min)
# Prerequis : serveur Django ASGI via Traefik (alias `rsp` dans le pane byobu,
# lance `manage.py runserver` en mode daphne pour le support WebSocket).
docker exec \
  -e ADMIN_EMAIL=admin@admin.com \
  -e E2E_TEST_TOKEN='<voir .env>' \
  lespass_django poetry run pytest tests/e2e/ -v

Voir tests/TESTS_README.md pour la documentation complete (architecture, pieges, variables d'environnement).

Carte Stripe de test : 4242 4242 4242 4242, exp 12/42, CVC 424.


Architecture

TiBillet est en cours d'unification en mono-repo. Les trois services historiques (Lespass, LaBoutik, Fedow) deviennent un seul projet Django multi-tenant :

TiBillet (mono-repo)
├── BaseBillet/      Billetterie, adhĂ©sions, Ă©vĂ©nements
├── laboutik/        Caisse enregistreuse, POS
├── fedow_core/      Portefeuille fĂ©dĂ©rĂ©, tokens, multi-devises
├── crowds/          Budget contributif, financement participatif
├── inventaire/      Gestion de stock POS
├── api_v2/          API sĂ©mantique schema.org
├── Administration/  Admin Django (Unfold)
├── AuthBillet/      Authentification, SSO
├── PaiementStripe/  Paiements, webhooks Stripe
└── ...

Stack : Django 4.2, Python 3.11, PostgreSQL 13 (multi-tenant via django-tenants), Redis, Celery, HTMX + Bootstrap 5, Django Channels (WebSocket).

Pas de SPA, pas de framework JavaScript lourd. Le rendu est cĂŽtĂ© serveur. Les interactions dynamiques passent par HTMX. Le JavaScript est minimal (toasts et petites interactions). C'est un choix dĂ©libĂ©rĂ© : le code doit pouvoir ĂȘtre lu et modifiĂ© par des dĂ©veloppeur·euses non-expert·es qui rejoignent la coopĂ©rative.


Plus qu'un logiciel libre

TiBillet est sous licence AGPLv3. Ça garantit que le code restera libre — personne ne peut le verrouiller, le fermer, le privatiser.

Mais on pense que le logiciel libre, aussi génial soit-il, ne suffit pas. Un dépÎt Git avec une licence libre, c'est une ressource ouverte. Ce n'est pas encore un commun. Des tanks roulent sur Linux. Les plus grandes entreprises du monde construisent leur fortune sur du logiciel libre. La licence protÚge le code. Elle ne protÚge ni les usages, ni les gens.

Nous n'avons pas choisi de "faire un commun". On fabrique en commun, parce que TiBillet n'aurait jamais pu ĂȘtre construit autrement.

La monnaie temps de la Raffinerie, c'est une idĂ©e qui a Ă©mergĂ© des chantiers du mercredi matin — pas d'un cahier des charges. La SSA en Normandie, c'est un collectif citoyen qui a dit "on a besoin de ça" et qu'on a accompagnĂ© sur place. Le mode festival, c'est le retour de dix ans de bĂ©nĂ©voles derriĂšre des tireuses Ă  biĂšre Ă  2h du matin. Aucun de ces usages n'aurait Ă©tĂ© inventĂ© par une Ă©quipe de dĂ©veloppeurs seuls dans un bureau, ni par un modĂšle d'IA entraĂźnĂ© sur du code — parce que ces solutions viennent des gens qui vivent les problĂšmes, pas de ceux qui imaginent les rĂ©soudre.

On s'appuie sur les travaux d'Elinor Ostrom pour penser ce qu'on fait. Un commun, c'est trois choses indissociables :

  • Une ressource partagĂ©e — le logiciel, oui, mais surtout tout ce qu'il permet : l'agenda fĂ©dĂ©rĂ©, la carte partagĂ©e, les donnĂ©es qui restent chez vous.
  • Une communautĂ© vivante — les lieux qui s'en servent, qui remontent des besoins, qui testent, qui documentent. C'est le point de dĂ©part, pas un bonus.
  • Une gouvernance organisĂ©e — la coopĂ©rative Code Commun, structurĂ©e en SCIC avec trois collĂšges (animateur·ices, contributeur·ices, utilisateur·ices), oĂč chaque voix compte pareil.

« Un logiciel libre qui dort au fond d'une forge Git ne change pas le monde. Un commun vivant, partagĂ©, documentĂ© et soutenu, si. » — Charte Code Commun

Pour aller plus loin : Qu'est-ce qu'un commun numérique ? · Charte et valeurs


Contribuer

TiBillet ne fonctionne pas avec des "issues" et des "pull requests" dans le vide. On construit ensemble.

Le budget contributif

On met les sous sur la table — littĂ©ralement. Sur codecommun.tibillet.coop/contrib, vous trouverez les chantiers en cours, les budgets associĂ©s et les contributions de chacun·e. Vous choisissez une tĂąche, vous dĂ©cidez comment vous voulez ĂȘtre rĂ©munĂ©ré·e (ou pas — le bĂ©nĂ©volat est bienvenu aussi), et c'est validĂ© collectivement.

C'est ce qu'on appelle le budget contributif : pas de manager qui attribue les tùches, pas de hiérarchie qui décide des salaires. Chacun·e évalue ses besoins en transparence.

Comment on travaille

  • Sessions de pair Ă  pair — Tous les jeudis et vendredis, en visio, on code ensemble. Pas besoin d'ĂȘtre expert·e.
  • DĂ©placements sur le terrain — On ne construit pas depuis un bureau. On va dans les lieux, on installe, on forme, on Ă©coute les retours. C'est comme ça qu'Ă©mergent les vraies fonctionnalitĂ©s.
  • RĂ©unions mensuelles ouvertes — Le premier lundi de chaque mois, tout le monde est invitĂ©. On parle de ce qui marche, de ce qui coince, de ce qu'on veut construire ensuite.
  • Discord & Matrix — Pour le quotidien, les questions, les coups de main.

Par oĂč commencer

  1. Venez discuter sur Discord — on vous accueille, on vous oriente.
  2. Consultez les chantiers sur le budget contributif — il y a des tñches de tous niveaux, de la documentation à l'architecture Django.
  3. Lisez le GUIDELINES.md pour les conventions de code (FALC, HTMX, ViewSets, etc.).
  4. Proposez une idĂ©e — si un besoin revient dans 3-4 lieux, on s'y colle.

Le code suit le principe FALC (Facile À Lire et Comprendre) : noms de variables explicites, commentaires bilingues FR/EN, logique lisible de haut en bas, pas de magie. Parce qu'un commun numĂ©rique, ça implique que le code soit accessible Ă  celles et ceux qui veulent s'en emparer.


Qui fabrique TiBillet

TiBillet est portĂ© par la CoopĂ©rative Code Commun, une SCIC (SociĂ©tĂ© CoopĂ©rative d'IntĂ©rĂȘt Collectif) basĂ©e Ă  La RĂ©union.

Soutiens

  • LaurĂ©at France 2030 — Appel Ă  projet "Billetterie innovante" du ministĂšre de la Culture.
  • JetBrains — Licences open source.

Licence

AGPLv3 — Libre, et ça le restera.


Contact

About

Membership and Ticketing in cooperative and open network.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 59.1%
  • HTML 24.2%
  • CSS 12.3%
  • JavaScript 3.5%
  • Other 0.9%