![WARNING] This is Work-In-Progress project. Expect bugs.
Also it's build in cooperation with Claude Code and is only partially verified.
A Kotlin Multiplatform mobile application for reading and writing NFC tags on 3D printing filament spools using the OpenPrintTag standard.
OpenPrintTag is an open-source universal NFC standard for 3D printing filament spools, created by Prusa Research. It enables automatic filament detection and eliminates proprietary "smart spool" ecosystems through one interoperable standard.
- Universal Compatibility: One open standard that works across all brands and ecosystems
- Material Recognition: Automatically detect filament type, brand, and properties
- Live Tracking: Monitor remaining filament amounts in real-time
- Inventory Management: Track and log custom data for your filament collection
- Reusable Tags: Transfer tags between spools without vendor lock-in
- Offline Operation: No cloud dependency required
- Cost-Effective: Uses inexpensive NFC tags
This mobile app allows (when ready) users to:
- Scan NFC tags on filament spools to read material data
- Configure and write filament information to NFC tags
- Manage material classification (PLA, PETG, ABS, etc.)
- Set temperature profiles (print, preheat, bed temperatures)
- Track weight and material properties
- Store certifications and material tags
- Generate compliant OpenPrintTag NFC data
- Kotlin Multiplatform: Share code across Android, iOS, and Desktop
- Compose Multiplatform: Modern declarative UI framework
- Target Platforms:
- Android (Primary target)
- iOS (Arm64 & Simulator)
- Desktop/JVM (Development and testing)
openprinttag-mobile/
├── composeApp/
│ └── src/
│ ├── commonMain/kotlin/ # Shared code for all platforms
│ │ ├── model/ # Data models (TagState, CountryCode, etc.)
│ │ ├── ui/ # UI components and theme
│ │ ├── App.kt # Main app entry point
│ │ └── TagInfoViewModel.kt # State management
│ ├── androidMain/kotlin/ # Android-specific code
│ ├── iosMain/kotlin/ # iOS-specific code
│ └── jvmMain/kotlin/ # Desktop-specific code
├── iosApp/ # iOS app wrapper
└── build.gradle.kts
- JDK 17 or higher
- Android Studio or IntelliJ IDEA with Kotlin Multiplatform plugin
- For iOS: Xcode (macOS only)
Build and run the Android app:
# macOS/Linux
./gradlew :composeApp:assembleDebug
# Windows
.\gradlew.bat :composeApp:assembleDebugOr use the run configuration in Android Studio.
Run the desktop version for development and testing:
# macOS/Linux
./gradlew :composeApp:run
# Windows
.\gradlew.bat :composeApp:runOpen the /iosApp directory in Xcode and run from there, or use the run configuration in IntelliJ IDEA.
- Material classification selection (PLA, PETG, ABS, etc.)
- Basic information input (brand, material name, color, density)
- Temperature settings configuration
- Weight tracking
- Material properties and certifications
- NFC URL options
- Data validation and verification
- Desktop preview/testing support
- NFC tag reading functionality
- NFC tag writing functionality
- Filament inventory management
- QR code generation
- Material database integration
- Multilingual support
Contributions are welcome! This project follows the OpenPrintTag open-source initiative.
- Follow Kotlin coding conventions
- Use Compose best practices for UI components
- Keep platform-specific code minimal (in platform folders)
- Test on multiple platforms when possible
This app implements the OpenPrintTag specification. For more information:
- Official website: openprinttag.org
- Specification: Check the official OpenPrintTag documentation
This project is open-source. Please check the LICENSE file for details.
- Prusa Research for creating the OpenPrintTag standard
- The open-source 3D printing community