A comprehensive open source ticketing ecosystem demonstrating the Eclipse Keyple middleware in real-world use cases. This project is provided by the Calypso Networks Association and serves as a foundation for building contactless card and NFC smartphone-based ticketing systems.
The Keyple Demo Ecosystem consists of three interconnected applications that simulate a complete public transportation ticketing workflow:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ RELOAD DEMO │────>│ VALIDATION DEMO │────>│ CONTROL DEMO │
│ │ │ │ │ │
│ Load contracts │ │ Validate entry │ │ Check validity │
│ onto cards │ │ to transport │ │ after use │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Reload Demo: Remote contract loading using distributed client/server architecture
- Validation Demo: Entry validation for transportation networks
- Control Demo: Post-validation card inspection and compliance checking
Standard Calypso contactless cards supporting:
- Secure sessions with SAM authentication
- Multiple contracts (1-4 depending on product type)
- Cryptographic security operations
- Full transaction traceability
Simple storage cards featuring:
- Basic read/write operations without SAM requirements
- Single contract storage
- Simplified validation procedures
- Note: This demo implementation is intentionally basic for demonstration purposes
Security Consideration: Storage Card implementations in this demo lack production-level security mechanisms. Production deployments should implement appropriate cryptographic protections, signature verification, and secure key management.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Mobile/Web │ │ Java Server │ │ SAM │
│ Clients │────>│ + Dashboard │────>│ (Security) │
│ │ │ │ │ │
│ User Interface │ │ Business Logic │ │ Cryptographic │
│ Card Interface │ │ Data Management │ │ Operations │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Client Applications:
- Android 7.0+ (Native and KMP)
- iOS 14+ (KMP)
- Windows Desktop (.NET 7.0)
- JVM Desktop (Kotlin Multiplatform)
Server Requirements:
- Java 8+ with PC/SC reader
- SAM (Security Access Module) for Calypso cards
- Web dashboard for monitoring
# Download latest server release
wget https://github.com/calypsonet/keyple-demo-ticketing/releases/latest
# Start server (requires PC/SC reader with SAM)
java -jar kdt-reloading-server-X.Y.Z-full.jar
# Access dashboard at http://localhost:8080
Use any client application's personalization feature to initialize cards with:
- Environment data (validity dates, application number)
- Clean contract slots
- Reset event logs and counters
- Load Contracts: Use Reload Demo to add Season Pass or Multi-trip tickets
- Validate Entry: Present card to Validation Demo terminal
- Control Check: Verify card status using Control Demo
- Famoco FX205 - Enterprise NFC terminal
- Coppernic C-One 2 - Rugged Android terminal
- Standard NFC Smartphones - Consumer devices
- PC/SC Readers - Desktop integration
- Bluebird EF501
- Flowbird Axio 2
Contact CNA for access to proprietary terminal plugins.
The ecosystem uses standardized data structures defined in the Common Library:
- Environment Record: Card metadata and validity information
- Event Log: Transaction history and validation events
- Contract Records: Transportation titles and their properties
- Counter Files: Usage tracking for multi-trip and stored value
See Common Library Documentation for detailed specifications.
- JDK 8+ for server components
- Android Studio for mobile development
- Node.js for web dashboard
- PC/SC compatible readers for testing
keyple-demo-ticketing/
├── README.md # This file
├── src/common/ # Shared data structures and utilities
├── src/reloading-remote/ # Remote reload clients and server
│ ├── server/ # Java server application
│ ├── client/
│ │ ├── keyple-mobile-android/ # Android native client
│ │ ├── pc-dotnet/ # .NET desktop client
│ │ └── interop-mobile-multiplatform/ # Kotlin Multiplatform client
├── src/validation/ # Android validation terminal
└── src/control/ # Android control terminal
# Build all components
./gradlew build
# Run tests
./gradlew test
# Start development server
./gradlew startServer
Compatible Calypso card AIDs:
A000000291FF9101
- Keyple Generic test card315449432E49434131
- CD Light/GTML Compatibility315449432E49434133
- Calypso LightA0000004040125090101
- Navigo IDF
Test cards available in the CNA Test Kit.
- Fork the repository
- Create a feature branch
- Follow the coding standards and documentation templates
- Submit a pull request with clear description
- Ensure all tests pass and documentation is updated
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.
- Documentation: keyple.org
- Community: Calypso Networks Association
- Issues: Use GitHub Issues for bug reports and feature requests
- Technical Support: Contact CNA
- Eclipse Keyple middleware - Core SDK and plugins
- Calypso Card Specification
- Keyple Distributed JSON API