A modern, offline-first Android inventory management app built for small retail businesses. Track stock, scan barcodes, get low-stock alerts, and export reports β all from your phone.
Add screenshots here once available
- Register with name, email, and password (hashed with salt using
PasswordUtils) - Persistent login via
SharedPreferences - Change password from Settings with current password verification
- Secure logout that clears all session data
- 3-slide onboarding screen shown only on first launch
- Swipeable
ViewPager2slides with animated dot indicators - Skip or step through slides with Next / Get Started buttons
- Time-based greeting (Good Morning / Afternoon / Evening)
- Live stats: total items in stock, low stock count, total inventory value
- 7-day inventory value trend line chart (MPAndroidChart, cubic bezier)
- Recent activity feed from stock change logs
- Quick action cards: Add Item, View Inventory, Scan Barcode, Delete Item
- Bottom nav badges showing total item count and low stock count
- Full list of all inventory items with search and real-time filtering
- Category filter chips (dynamically generated from your data)
- Sort by: Name AβZ, Low stock first, Quantity (low/high), Price (low/high)
- Tap any item to edit it directly via
EditItemActivity - Bulk quantity adjustment: select multiple items, enter a delta (e.g.
+5or-2), confirm and apply - Export full inventory to CSV and share via any app
- Empty state UI when no items match filters
- Fields: Name, Category, SKU, Price, Quantity, Low Stock Threshold, Supplier, Description, Image
- SKU can be auto-filled from a barcode scan
- Image picker from device gallery
- All changes logged to
StockLogfor activity history
- Search and select items to delete
- Confirmation dialog before deletion
- Camera-based barcode scanning via ZXing (
zxing-android-embedded) - Portrait-locked scanner using
CaptureActivityPortrait - Scanned barcode auto-fills the SKU field in Add Item
- Camera permission handled at runtime
- Summary cards: total units, total inventory value, low stock count
- Category breakdown (units per category)
- Supplier breakdown (units per supplier)
- Recent activity log (last 8 stock events with timestamps)
- Pie chart: inventory distribution by category
- Bar chart: stock levels for top 8 items
- User profile card with avatar initial, name, and email
- Currency selector: INR βΉ, USD $, EUR β¬, GBP Β£, JPY Β₯ (persisted globally)
- Export inventory as CSV
- Backup full data (inventory + logs + snapshots) to a JSON file
- Restore from a JSON backup (with confirmation dialog)
- Change password
- Privacy Policy link
- Logout
- Background
WorkManagerjob runs every 24 hours - Sends a push notification listing items below their low stock threshold
- Notification includes a quick "Update Stock" action button
- Handles
POST_NOTIFICATIONSpermission for Android 13+
| Layer | Technology |
|---|---|
| Language | Java |
| Min SDK | 24 (Android 7.0) |
| Target SDK | 35 (Android 15) |
| Database | Room (SQLite) |
| Background Work | WorkManager |
| Charts | MPAndroidChart v3.1.0 |
| Barcode Scanning | ZXing Android Embedded 4.3.0 |
| UI Components | Material Design 3, ConstraintLayout, RecyclerView, ViewPager2 |
| Navigation | Bottom Navigation + Fragment transactions |
| Threading | Custom AppExecutor (single background thread) |
| Data Export | CSV via FileProvider, JSON backup/restore |
| Column | Type | Description |
|---|---|---|
id |
INTEGER (PK) | Auto-generated |
name |
TEXT | Item name |
category |
TEXT | Category label |
sku |
TEXT | Stock Keeping Unit / barcode |
price |
REAL | Unit price |
quantity |
INTEGER | Current stock count |
lowStockThreshold |
INTEGER | Alert threshold |
supplier |
TEXT | Supplier name |
description |
TEXT | Item notes |
imagePath |
TEXT | Local image file path |
Tracks every add, edit, delete, and bulk adjustment with item name, action type, detail, and timestamp.
Daily snapshots of total inventory value, used to render the 7-day trend chart on the dashboard.
app/src/main/java/com/example/v2/
βββ MainActivity.java # Bottom nav host, badge updates
βββ LoginActivity.java # Auth entry point, session check
βββ RegisterActivity.java # New user registration
βββ OnboardingActivity.java # First-launch onboarding slides
β
βββ DashboardFragment.java # Stats, trend chart, recent activity
βββ InventoryFragment.java # Item list, search, filter, bulk ops
βββ ReportsFragment.java # Charts and analytics
βββ SettingsFragment.java # Profile, currency, backup, logout
β
βββ AddItemActivity.java # Add new inventory item
βββ EditItemActivity.java # Edit existing item
βββ DeleteItemActivity.java # Delete item(s)
βββ ScanActivity.java # Barcode scanner
β
βββ InventoryItem.java # Room entity
βββ StockLog.java # Room entity β activity log
βββ ValueSnapshot.java # Room entity β daily value snapshot
β
βββ InventoryDao.java # DB queries for inventory
βββ StockLogDao.java # DB queries for logs
βββ ValueSnapshotDao.java # DB queries for snapshots
βββ InventoryDatabase.java # Room database singleton
β
βββ InventoryAdapter.java # RecyclerView adapter (search, sort, select)
βββ RecentActivityAdapter.java # Dashboard activity feed adapter
β
βββ InventoryAnalytics.java # Records daily value snapshots
βββ InventoryBackupManager.java # JSON backup & restore logic
βββ CsvExporter.java # CSV export via FileProvider
βββ CurrencyFormatter.java # Currency symbol formatting
βββ PasswordUtils.java # Password hashing & verification
βββ AppExecutor.java # Background thread executor
βββ LowStockWorker.java # WorkManager low stock notifier
βββ CaptureActivityPortrait.java # Portrait barcode scanner activity
- Android Studio Hedgehog or newer
- Android device or emulator running API 24+
- JDK 11
git clone https://github.com/Varadha9/MrManager-RetailApp.git
cd MrManager-RetailApp- Open the project in Android Studio
- Let Gradle sync complete
- Run on a device or emulator (
Shift+F10)
./gradlew assembleReleaseOr use the included build-release.bat on Windows.
β οΈ Configure your keystore inapp/build.gradle.ktsundersigningConfigsbefore publishing.
# UI
androidx.appcompat 1.7.0
com.google.android.material 1.11.0
androidx.constraintlayout 2.2.1
androidx.recyclerview 1.3.2
androidx.viewpager2 1.1.0
androidx.cardview 1.0.0
# Database
androidx.room 2.6.1
# Background
androidx.work 2.9.0
# Charts
com.github.PhilJay:MPAndroidChart v3.1.0
# Barcode
com.journeyapps:zxing-android-embedded 4.3.0| Permission | Purpose |
|---|---|
CAMERA |
Barcode scanning |
READ_MEDIA_IMAGES |
Item image picker (API 33+) |
READ_EXTERNAL_STORAGE |
Item image picker (API β€ 32) |
POST_NOTIFICATIONS |
Low stock push notifications (API 33+) |
- Passwords are hashed (not stored in plain text) using
PasswordUtils - No cleartext HTTP traffic (
android:usesCleartextTraffic="false") - CSV and JSON files are shared via
FileProvider(no direct file URI exposure) - All activities except
LoginActivityareexported="false"
- Cloud sync / multi-device support
- Multiple user accounts
- Sales tracking and profit reports
- Item reorder reminders
- Dark mode support
- Tablet / large screen layout
This project is for personal and educational use. All rights reserved Β© Varadha9.
Varadha β GitHub