A mobile-first cryptocurrency wallet and food tracking application for CalorieToken on the XRP Ledger, built with KivyMD.
Latest Update (2025-11-18 โ v1.1.1): Repository hardening, public-safe documentation index, UX layout consistency, security enhancements. See CHANGELOG. Pending merge from branch
chore/repo-hardening.
This software ("CalorieApp") is a preโrelease beta operating solely on the XRP Ledger Testnet. By accessing, cloning, building, or using any portion of this repository you acknowledge and agree to the following clauses:
- Experimental Status: All features (wallets, tokens, NFT, DEX, food tracking, UI components) are experimental and subject to modification, suspension, or removal without notice prior to any mainnet launch.
- No Real Value: Testnet XRP and any Testnet units or representations of CalorieToken ($CAL) have no monetary, redeemable, or transferable realโworld value.
- No Advice: Nothing in the code, documentation, interfaces, commit history, issues, or generated outputs constitutes financial, investment, legal, medical, nutritional, or tax advice. Do your own due diligence.
- No Solicitation: This repository does not solicit investment, purchase of tokens, securities, or any regulated financial instruments.
- Risk Acceptance: You accept all risks associated with running beta code including potential data loss, malfunction, incorrect balances, performance issues, or security defects.
- No Warranty: Provided "AS IS" without warranties of any kind (express or implied), including but not limited to merchantability, fitness for a particular purpose, nonโinfringement, accuracy, reliability, or availability.
- Limitation of Liability: CalorieToken, contributors, maintainers, and affiliates shall not be liable for any direct, indirect, incidental, consequential, special, exemplary, or punitive damages arising out of or in connection with use of or inability to use this beta software.
- Intellectual Property: CalorieTokenยฎ trademarks, logos, and brand assets are protected. See
docs/TRADEMARK.mdfor permitted usage. No license to brand assets is granted beyond the repositoryโs stated custom dual license. - Data Handling: The current beta architecture stores sensitive wallet materials locally (encrypted). You are responsible for safeguarding keys, mnemonics, passwords, and exported data. No cloud custody is provided.
- Security Posture: While reasonable hardening steps are taken, the software has not undergone formal thirdโparty security audits. Treat all cryptographic operations as provisional.
- ForwardโLooking Statements: Roadmap items, planned features, scaling targets, or performance goals are forwardโlooking and inherently uncertain.
- Jurisdiction: Usage is subject to applicable laws in your jurisdiction. If local regulations restrict interaction with beta blockchain software, you must discontinue use.
- Contribution Disclosure: Pull requests, issues, or discussions may become publicly visible. Do not submit proprietary, confidential, or sensitive personal data.
- Licensing: Code usage is governed by the Custom Dual License (personal/educational permitted; commercial/public distribution requires written permission). See
LICENSE. - Monitoring: Public transparency of development is provided; you can review ongoing commits, branches, and releases at: https://github.com/CalorieToken/CalorieAppTestnet
If you disagree with any clause, do not use, clone, build, or distribute this software.
Contact (Licensing / Compliance / Security): info@calorietoken.net
Official CalorieToken XRPL Token:
- Currency: Calorie
- Ticker: $CAL
- Issuer:
rNqGa93B8ewQP9mUwpwqA19SApbf62U7PY - Network: XRP Ledger Mainnet (Testnet for development)
- Website: calorietoken.net
- Whitepaper: Read here
"Aiming to be the world's food token"
CalorieToken targets the worldwide food & beverage industry with blockchain-based payment solutions.
Learn More:
- Official Documentation Index
- Trademark Guidelines - Usage policies
- CalorieToken Website - Official resources
| Area | Implemented | Notes |
|---|---|---|
| MultiโWallet XRPL | โ | Create/import; encrypted storage |
| Mnemonic (BIP39) | โ | 12โword generation, verify, import |
| Token Support | โ | Generic framework + trustlines |
| Transactions | โ | XRP & tokens; visual history indicators |
| Offline Mode | โ | Deterministic tours/testing |
| MultiโServer Failover | โ | Rotating endpoints, graceful degradation |
| NFT Screens | โณ | Mint flow refinement pending |
| DEX Trading | โณ | Offer & market UI polishing |
| Food Tracking | โ | Nutrition logging baseline |
| Responsive System | โ | Size classes, lazy recompute, overlay (withheld) |
| Social Assets | โ | Dynamic image generator (edgeโtoโedge typography) |
| Accessibility | ๐ง | Contrast audit scheduled |
| Performance Profiling | ๐ง | Planned instrumentation |
| CalorieDB Sync | ๐ | Deferred (isolated) |
| WalletConnect | ๐ | Phase 1 design queued |
| Web3 Browser | ๐ | Deferred (flagged) |
Legend: โ Complete ยท โณ Partial ยท ๐ง In Progress ยท ๐ Planned
- Frontend: KivyMD 2.0.dev (master)
- Backend: Python 3.12
- Blockchain: XRPL (XRP Ledger) Testnet
- Mnemonic: BIP39 for 12-word recovery phrases
- Networking: httpx with async support
- Encryption: cryptography library
- Data Storage: shelve (encrypted)
CalorieAppTestnet/
โโโ README.md # You are here
โโโ LICENSE # Custom dual license
โโโ main.py # Application entry point
โโโ requirements.txt # Python dependencies
โโโ setup.py # Package configuration
โโโ buildozer.spec # Android build config
โโโ
โโโ .github/ # CI/CD workflows
โโโ assets/ # Images and resources
โโโ docs/ # ๐ All documentation
โ โโโ QUICK_START.md
โ โโโ CONTRIBUTING.md
โ โโโ CHANGELOG.md
โ โโโ TODO.md
โ โโโ ... (guides & references)
โโโ scripts/ # ๐ง Build & utility scripts
โ โโโ ux_tour.py
โ โโโ build_apk.bat
โ โโโ run.py
โโโ src/ # ๐ป Source code
โ โโโ VERSION.py
โ โโโ core/
โ โโโ screens/
โ โโโ utils/
โโโ tests/ # ๐งช Unit tests
Note: We follow industry best practices with a clean root directory. Additional internal references are intentionally withheld until stable release.
The UI is organized into maintainable, screen-focused KV files with a clear loading order. This approach improves iteration speed and keeps layouts consistent without exposing internal file structure. The modernized setup enables:
- Cleaner diffs and easier collaboration
- Reduced duplication and warnings
- Faster targeted layout updates
The app features an intelligent navigation system that creates navigation drawers only for screens that need them:
Screens WITH Navigation Drawers:
- Wallet Screen
- Settings Screen
- Food Tracking Screen
- DEX Trading Screen
- NFT Minting Screen
Screens WITHOUT Navigation Drawers:
- Login Screen
- Transaction Screens (Send XRP, Send Tokens)
- Setup/Import Screens
- Intro/First Use Screens
- Mnemonic Display/Verify Screens
Robust connectivity with automatic failover:
- Primary:
https://testnet.xrpl-labs.com - Backup:
https://s.altnet.rippletest.net:51234 - Backup:
https://testnet.xrplapi.com - Backup:
https://xrplcluster.com
Lightweight in-memory caching for select XRPL requests (e.g. ServerInfo) reduces redundant network calls and stabilizes performance under intermittent connectivity. Cache entries automatically expire after a short TTL.
The following planned features are isolated under feature flags and excluded from the active beta build:
- Web3 Browser Screen (
ENABLE_WEB3_BROWSER=False): Future in-app browsing / WalletConnect surface. - CalorieDB Sync Layer (
ENABLE_CALORIE_DB=False): Planned decentralized product scan indexing (IPFS + BigchainDB). - XRPL โ CalorieDB Sync Service (
ENABLE_CALORIE_DB=False): Real-time bidirectional sync deferred; heavy integration code isolated.
They reside in src/_deferred/ and can be re-enabled via flags once scoped for a release milestone.
Runtime/build commands have been deliberately removed (v1.1.2) to prevent distribution of unfinished work. Request internal access: info@calorietoken.net.
- Launch the app
- Choose to create a new wallet or import existing keys
- Set up your secure password
- Your wallet is ready to use!
- Navigate to the Wallet screen
- Click "Send XRP" or token buttons
- Enter recipient address and amount
- Confirm transaction
- Access the Food Tracker from the navigation menu
- Log your meals and track calories
- Monitor your daily nutrition goals
CalorieAppTestnet/
โโโ main.py # Application entry point
โโโ run.py # Alternative run script
โโโ buildozer.spec # Android build configuration
โโโ requirements.txt # Python dependencies
โโโ src/
โ โโโ core/
โ โ โโโ app.py # Main application class
โ โ โโโ kv/ # Modular KV layout files (replaces monolithic .kv)
โ โโโ screens/ # All screen implementations
โ โ โโโ WalletScreen.py
โ โ โโโ SendXRPScreen.py
โ โ โโโ SendTestTokenScreen.py
โ โ โโโ MnemonicDisplayScreen.py
โ โ โโโ ... (25+ screens)
โ โโโ utils/ # Utility modules
โ โโโ xrpl_client_manager.py # XRPL connectivity
โ โโโ conditional_navigation.py # Navigation system
โ โโโ mnemonic_manager.py # BIP39 mnemonic handling
โ โโโ password_field_utils.py # UI utilities
โ โโโ robust_transaction.py # Transaction handling
โ โโโ token_config.py # Token configuration
โโโ assets/ # App assets and images
โ โโโ images/ # Logo and UI images
โโโ config/ # Configuration files
โโโ scripts/ # Utility scripts
โโโ docs/ # Documentation
XRPLClientManager: Handles XRPL connectivity with automatic failoverConditionalNavigationDrawer: Intelligent navigation systemPasswordFieldWithToggle: Enhanced password input with visibility togglerobust_submit_and_wait: Transaction submission with retry logic
During active development and automated UX tours we often want a consistent, phone-sized viewport while still preserving full adaptive behavior for tablets and desktops in production.
Environment overrides (all optional):
| Variable | Example | Purpose |
|---|---|---|
DEV_PHONE_VIEWPORT |
390x844 |
Forces window size (if APP_FORCE_WIDTH/HEIGHT not set) to a modern phone logical resolution (portrait enforced). |
FORCE_SIZE_CLASS |
sm / phone |
Pins responsive size class regardless of window width (use phone as alias for sm). |
TOUR_FORCE_PHONE |
1 |
In UX tour runs auto-sets DEV_PHONE_VIEWPORT=390x844 and FORCE_SIZE_CLASS=sm if unset. |
TOUR_PHONE_WIDTH / TOUR_PHONE_HEIGHT |
414 / 896 |
Fine-grained control for UX tour window size when TOUR_FORCE_PHONE is enabled. |
Example (PowerShell):
$env:DEV_PHONE_VIEWPORT="390x844"; $env:FORCE_SIZE_CLASS="sm"; python -B scripts/complete_ux_tour.pyProduction builds simply omit these variables and the app reverts to automatic breakpoint detection (xs, sm, md, lg, xl). The responsive system caches scaling factors to minimize recomputation while keeping layout adjustments correct on window resize.
Breakpoints remain unchanged ensuring cross-platform compatibility; overrides are strictly opt-in for development convenience.
Activation mechanics exist but invocation commands are withheld pre-release. Overlay shows breakpoint class, scaling factors, and dimensions when enabled internally.
This displays a small badge in the top-right corner showing:
- Current size class (xs/sm/md/lg/xl)
- Lock icon (๐) when
FORCE_SIZE_CLASSis active - DP and font scale factors
- Current window dimensions
The overlay updates in real-time during window resizes and is automatically removed in production (when DEBUG_RESPONSIVE is unset).
Automated UX validation runs are supported to help catch regressions across device sizes. Details of internal test tooling are intentionally minimized here for security and competitive reasons. See docs/UX_TOUR_GUIDE.md for a public overview of the process.
We use an automated UX tour to validate major screens and flows and to generate visual reports for review. High-level, public-safe documentation is available here:
Implementation details and internal scripts are withheld to protect the projectโs integrity until formal release.
See also:
- Project Status - Current development state
- Changelog - Version history
- Roadmap - Future plans
- KivyMD Documentation: https://kivymd.readthedocs.io/
- Kivy Documentation: https://kivy.org/doc/stable/
- Material Design 3: https://m3.material.io/
Internal test cycles include navigation, XRPL connectivity/failover simulation, wallet creation/import flows, transaction lifecycle validation, performance sampling, and offline mode handling. Detailed invocation steps are withheld until stable release.
We welcome contributions! Please read our Contributing Guide for:
- Code style guidelines
- Development setup
- Testing requirements
- Pull request process
This project is licensed under a Custom Dual License - see the LICENSE file for details.
Summary:
- Personal Use: Permitted for educational, research, and non-commercial purposes
- Commercial/Public Use: Requires explicit written permission from CalorieToken
Contact for commercial licensing: info@calorietoken.net
Trademark Notice: CalorieTokenยฎ and related branding are registered trademarks. See TRADEMARK.md.
This application uses the XRPL Testnet for development and testing. Testnet XRP has no real-world value and is used solely for testing purposes.
- CalorieToken Website
- Whitepaper
- Twitter/X
- Telegram Community
- Discord Developers
- All Links (Linktree)
For App/Development Issues:
- Open an issue on GitHub
- Check the documentation
- Join Discord Developers Server
For CalorieToken Project:
- Email: info@calorietoken.net
- Telegram: Community Chat
- Twitter: @CalorieToken
Built with โค๏ธ for CalorieToken and the XRPL community
CalorieTokenยฎ | Chamber of Commerce KVK: 84216352
Trademark registered with EUIPO | See TRADEMARK.md for usage guidelines