An Android app for tracking your annual taco consumption with detailed ingredient tracking, favorites, and statistics.
- 📝 Log Meals - Track tacos by meal type (Breakfast, Lunch, Dinner, Snack)
- 🥙 Ingredient Tracking - Multi-select ingredients for each taco
- ⭐ Favorites - Save frequently eaten meals as templates for quick entry
- 📊 Statistics - View your taco consumption patterns
- 📍 Location Tracking - Remember where you ate your tacos
- 📝 Notes - Add custom notes to any meal
- 🔍 Search History - Filter meals by location, ingredient, or meal type
- 💾 CSV Export - Backup your data via Share to Google Drive or Save to Device
- 🎉 Milestones - Celebrate taco achievements with fun facts
- 📷 Photo Attachments - Attach a photo from camera or gallery to any meal
- 📤 Stats Sharing - Generate and share a taco stats infographic
- 🏅 Achievement/Medal System - Earn Bronze through Platinum medals across multiple tracks
- Language: Kotlin
- UI: Jetpack Compose with Material 3
- Architecture: MVVM (ViewModel + Repository pattern)
- Database: Room (SQLite)
- Navigation: Jetpack Navigation Compose
- Async: Kotlin Coroutines + Flow
- Dependency Injection: Manual (AppContainer pattern)
- Image Loading: Coil
- Preferences: DataStore
meal_logs
- Stores each meal instance with timestamp, type, location, and notes
- Foreign key parent for tacos
tacos
- Individual taco records linked to meals
- Bridge between meals and ingredients
ingredients
- Master list of all ingredients (with unique names)
- Reused across multiple tacos
taco_ingredients
- Many-to-many junction table
- Links tacos to their ingredients
favorite_meals
- Stores favorite meal templates
- JSON-serialized taco types for quick re-entry
achievement_medals
- Tracks per-track medal tiers (Bronze–Platinum) with unlock timestamps
meal_logs (1) ──< (N) tacos (N) ──< (N) ingredients
via taco_ingredients
favorite_meals (standalone templates)
- Android Studio Meerkat or newer (AGP 9.1.0 requires a recent version)
- Android SDK 36
- Minimum SDK: 26 (Android 8.0+)
- Kotlin 2.3.10
-
Clone the repository
git clone https://github.com/TomAguero/TacoTracker.git
-
Open in Android Studio
-
Sync Gradle files
-
Run on device or emulator (Android 8.0+)
- Debug: Development build with debugging enabled
- Release: Optimized production build
app/src/main/java/com/dinorawrger/tacologger/
├── data/
│ ├── *Entity.kt # Room database entities
│ ├── *Dao.kt # Database access objects
│ ├── *Repository.kt # Data layer abstractions
│ ├── Migrations.kt # Database migrations
│ ├── SettingsDataStore.kt
│ └── StatsShareData.kt
├── di/
│ └── AppContainer.kt # Manual dependency wiring
├── ui/
│ ├── *Screen.kt # Composable screens
│ ├── TacoLogViewModel.kt # Main ViewModel
│ ├── SharedComposables.kt
│ ├── WhatsNewDialog.kt
│ ├── StatsInfographic.kt
│ └── theme/
├── MainActivity.kt
└── TacoTrackerApp.kt # Application class
Current version: 8
- v1 → v2: Added
notescolumn tomeal_logs - v2 → v3: Split tacos into normalized structure (
tacos,ingredients,taco_ingredientsjunction table) - v3 → v4: Added
favorite_mealstable - v4 → v5: Added
ratingcolumn totacos - v5 → v6: Added
achievementstable - v6 → v7: Replaced
achievementswithachievement_medalstable (tiered Bronze–Platinum medal system) - v7 → v8: Added
photoUricolumn tomeal_logsfor photo attachments
This is a personal project, but suggestions and bug reports are welcome via GitHub issues.
[Add your license here - e.g., MIT, Apache 2.0, or "All Rights Reserved"]
Tom Aguero
Built with ❤️ and 🌮