Table of Contents
Bottlr is a simple, lightweight tool for managing your liquor inventory. Whether you're a personal collector, a bartender, or a manager, Bottlr has the cataloguing and inventory tools you'll need to manage your collection, regardless of size.
- Bottle Cataloguing: Easily add, edit, and manage your liquor bottles with images and detailed information
- Cocktail Recipes: Create and manage your cocktail recipes
- Cloud Storage: Remotely store your inventory data with Firebase and Google SSO
- Social Media Sharing: Share your favorite bottles on social media platforms
- Google Shopping Integration: One-click search to find listings for your bottles
- Inventory Search: Quickly find specific bottles or categories within your inventory
- Kotlin - Primary language
- Android SDK 35 - Target API level
- Jetpack Components:
- Room - Local database
- Navigation Component - Fragment navigation
- ViewModel & LiveData - UI state management
- Hilt - Dependency injection
- Firebase - Authentication, Firestore, Cloud Storage
- Glide - Image loading
- Espresso - UI testing
- MockK - Unit testing
Bottlr uses MVVM (Model-View-ViewModel) architecture with the following structure:
app/src/main/kotlin/com/bottlr/app/
├── data/
│ ├── local/
│ │ ├── dao/ # Room DAOs
│ │ └── entities/ # Room entities
│ └── repository/ # Data repositories
├── di/ # Hilt dependency injection modules
└── ui/
├── details/ # Bottle details screen
├── editor/ # Add/edit bottle screen
├── gallery/ # Bottle gallery screen
├── home/ # Home screen
├── search/ # Search functionality
└── settings/ # Settings & Firebase sync
- Android Studio Hedgehog or newer
- Android SDK 35
- JDK 17
- Android device or emulator running Android 10.0+ (API 29+)
- Docker (for running Firebase integration tests)
-
Clone the repo
git clone https://github.com/Diagoras/Bottlr.git
-
Open in Android Studio
-
Replace
app/google-services.jsonwith your Firebase configuration file -
Build and run
./gradlew assembleDebug
# Create signing.properties with your keystore details
# Then build the release AAB for Play Store:
./gradlew bundleReleaseThe signed AAB will be at app/build/outputs/bundle/release/app-release.aab
Bottlr has comprehensive test coverage:
./gradlew testTests for ViewModels, Repositories, and business logic.
./gradlew connectedDebugAndroidTestIncludes:
- DAO Tests: Room database operations
- UI Flow Tests: Add, view, edit bottle workflows
- Photo Flow Tests: Camera and gallery integration
- Navigation Tests: Screen navigation
- Firebase Sync Tests: Cloud sync and data erasure
- Smoke Tests: App startup verification
Firebase integration tests run against local emulators via Docker. Docker must be installed for these tests to work.
The emulators start automatically when running instrumented tests and stop when tests complete:
# Docker will be started/stopped automatically
./gradlew connectedDebugAndroidTest
# Or manually manage emulators:
./gradlew startFirebaseEmulators # Start Docker container
./gradlew stopFirebaseEmulators # Stop Docker containerFirebase Emulator UI is available at http://localhost:4000 while tests run.
| Action | How To |
|---|---|
| Add a Bottle | Tap the "+" FAB from the gallery |
| Edit a Bottle | Open bottle details, tap the edit button |
| Search | Tap the search icon in the gallery |
| Share | Tap share icon from bottle details |
| Buy | Tap shopping icon to search Google |
| Cloud Sync | Go to Settings, sign in with Google |
| Field | Description |
|---|---|
| Name | Specific name of your bottle (required) |
| Distillery | Manufacturer of the bottle |
| Region | Where the spirit is from |
| Type | Spirit type (Tequila, Scotch, Vodka, etc.) |
| Age | How long the spirit was aged |
| ABV | Alcohol By Volume percentage |
| Rating | Your rating from 1-10 |
| Notes | Personal tasting notes |
| Keywords | Comma-separated tags for search |
- NFC Tagging - Scan and save bottle data to NFC tags
- Location Tracking - Save where you found a bottle
- Cocktail Book - Track what you can make with your inventory
- Personalized Suggestions - Recommendations based on your collection
- Database Lookup - Search pre-populated bottle database
- Cost-Per-Pour Calculator - Pricing for cocktails and pours
Distributed under the MIT License. See LICENSE.txt for more information.
Project Link: https://github.com/Diagoras/Bottlr
