Track your meals and exercises with complete privacy. No cloud sync, no data collection, just pure functionality.
NutCracker is a privacy-first, offline-first calorie tracking app for Android. Built with modern Android technologies and designed to work seamlessly without an internet connection, NutCracker puts you in complete control of your nutrition and fitness data.
NutCracker is Free/Libre and Open Source Software (FLOSS), meaning it respects your freedom to use, study, share, and improve the software. The entire source code is available for inspection, modification, and redistribution under the AGPL-3.0 license, ensuring complete transparency and community ownership.
- Offline First: Your app should work when you need it most, even without internet connection
- Privacy by Design: Your data belongs to you. No tracking, no surveillance, no data collection
- Open Source: Transparency builds trust. All our code is open source and auditable
- Focused Utility: No bloat, no unnecessary features. Just fast, efficient software that works
- Community: Built by the community, for the community. No corporate interests or profit motives
- User Empowerment: Full control, no unnecessary limits. Our apps let you customize and optimize your experience as you see fit.
Embedded translations in 🇬🇧 English, 🇪🇸 Spanish (Spain), and 🇧🇷 Portuguese (Brazil) with additional languages available on Google Play Store with automatic translation.
- Calorie Tracking: Monitor your daily calorie intake with an intuitive circular progress indicator
- Macro Tracking: Track carbohydrates, protein, fat, fiber, and sodium
- TEF Bonus: See the thermic effect of food bonus for protein-rich meals
- Supplement Tracking: Keep track of the daily consumption of up to 5 supplements. No more worries about forgetting them.
- Barcode Scanning: Scan products barcodes to instantly get nutritional information, including NOVA and NUTRI score.
- Exercise Database: Access hundreds of preloaded exercises from an open-source database
- Progress Tracking: Monitor your exercise history and progress over time
- 100% Offline: All core functionality works without internet connection
- No Data Collection: We don't even have a server, your data stays on your device
- No Ads: Clean, distraction-free experience
- No Trackers: Zero tracking or analytics services
- Fast & Lightweight: Optimized for performance with minimal resource usage
Download NutCracker directly from the Google Play Store:
NutCracker will soon be available on F-Droid, the trusted catalog of FLOSS applications for Android. Stay tuned!
- Android 8.0 (API 26) or higher
NutCracker is part of the Offline Labs project, a community-driven initiative creating free, open source, ad-free alternatives for everyday apps.
We're always looking for more people to join us! Whether you're a developer, designer, tester, or just someone who cares about privacy, there's a place for you here.
- Code Development: Contribute to our open source projects
- Bug Reports: Help us make our apps more stable and reliable
- Documentation: Help improve documentation, write tutorials, or translate our apps
- Community: Join our discussions, share ideas, and help others
Visit offline-labs.com to learn more and get involved.
- Android Studio (latest stable version recommended)
- JDK 11 or higher
- Android SDK with API 26+ and build tools
- Git for cloning the repository
-
Clone the repository:
git clone https://github.com/off-lineLabs/nutcracker.git cd nutcracker -
Open in Android Studio:
- Launch Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned
nutcrackerdirectory - Wait for Gradle sync to complete
-
Build the project:
./gradlew assembleDebug
-
Install on device:
./gradlew installDebug
Or use ADB:
adb install app/build/outputs/apk/debug/app-debug.apk
-
Generate release APK:
./gradlew assembleRelease
The APK will be located at:
app/build/outputs/apk/release/app-release.apk
NutCracker uses git-based versioning:
- Version Code: Automatically generated from git commit count
- Version Name: Automatically generated from the latest git tag (e.g.,
v1.0.0)
NutCracker is built with modern Android development tools and best practices:
- Kotlin: Primary programming language
- Jetpack Compose: Modern declarative UI framework
- Material Design 3: Latest Material Design components and theming
- Room Database: Local SQLite database with type-safe queries
- Hilt: Dependency injection framework
- Kotlin Coroutines: Asynchronous programming
- StateFlow: Reactive state management
- ML Kit Barcode Scanning: Google's ML Kit for barcode recognition
- Retrofit: Type-safe HTTP client for API calls
- OkHttp: HTTP client with logging interceptor
- Coil: Image loading library for Compose
- Timber: Logging framework
- Open Food Facts: Food product database and nutritional information
- API:
https://world.openfoodfacts.org/ - Open source, collaborative database
- API:
- Free Exercise DB: Exercise database maintained by Wrkout
- Repository: https://github.com/wrkout/exercises.json on GitHub
- Comprehensive exercise library with instructions
nutcracker/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/offlinelabs/nutcracker/
│ │ │ │ ├── data/ # Data layer (Room, repositories, services)
│ │ │ │ ├── ui/ # UI layer (Compose screens, components)
│ │ │ │ ├── util/ # Utilities and helpers
│ │ │ │ └── MainActivity.kt # Main entry point
│ │ │ ├── res/ # Resources (strings, layouts, assets)
│ │ │ └── AndroidManifest.xml
│ │ └── test/ # Unit tests
│ └── build.gradle.kts # App-level build configuration
├── gradle/
│ └── libs.versions.toml # Dependency version catalog
├── build.gradle.kts # Project-level build configuration
└── settings.gradle.kts # Project settings
- MainActivity: Entry point, handles navigation and theme
- FoodLogApplication: Application class with dependency initialization
- AppDatabase: Room database with all entities and DAOs
- FoodLogRepository: Repository pattern for data access
- DashboardScreen: Main screen with calorie ring and meal list
- SettingsScreen: App settings and preferences
- AnalyticsScreen: Progress charts and analytics
- UnifiedCheckInDialog: Dialog for logging meals and exercises
We welcome contributions from the community! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following our coding standards
- Test thoroughly to ensure everything works
- Commit your changes:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
- Code Standards: Follow Kotlin coding conventions and Android best practices
- Documentation: Write clear, documented code with meaningful comments
- Testing: Test your changes thoroughly before submitting
- Commits: Keep commits focused and atomic with clear messages
- License: All contributions must comply with AGPL-3.0 license
Found a bug or have a feature request? Please open an issue on GitHub with:
- Clear description of the problem or feature
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Device/Android version information (if relevant)
- Be respectful and inclusive
- Help others learn and grow
- Share knowledge and experience
- Follow our code of conduct
For more information, visit the Offline Labs contribution guidelines.
NutCracker is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
This means:
- ✅ You can use, modify, and distribute the software
- ✅ You must make your modifications available under the same license
- ✅ You must include the original license and copyright notice
- ✅ If you modify the software and make it available over a network, you must provide the source code
In addition to the AGPL-3.0 license, this software is subject to the following restrictions (see LICENSE-exception.md):
- Rebranding Requirement: Modified versions must be clearly rebranded. Use of "NutCracker", "Offline Labs", or associated trademarks is prohibited without explicit permission.
- Ad Prohibition: Inclusion of advertising content is strictly forbidden.
- Data Brokering Prohibition: Collection, sale, or brokerage of user data is prohibited.
See the LICENSE file for the full license text and LICENSE-exception.md for additional restrictions.
The Terms of Use and Privacy Policy are available in the repository at app/src/main/res/raw/terms.html and are also accessible in-app (Settings → Legal Information).
- Terms of Use & Privacy Policy: app/src/main/res/raw/terms.html
- Community Discussions: GitHub Discussions
- Open Food Facts: world.openfoodfacts.org
- Free Exercise DB: https://github.com/wrkout/exercises.json
- Open Food Facts for providing the food product database
- Wrkout for maintaining the free exercise database
- All open source libraries and tools that make this project possible
No trackers. No data collection. No financial interests. Just privacy-first software that works.



