Mobile Inventory Management App
An Android mobile application with SQLite database integration, user authentication, and SMS notifications for tracking inventory items with real-time updates and permission handling
Tech Stack
Context
The Problem
Small businesses and individuals need mobile-first inventory management tools that work offline, support quick data entry, and send alerts for low stock levels. Traditional desktop solutions lack the accessibility and real-time notification capabilities required for mobile workflows.
Constraints
- Android platform with SQLite for local data persistence
- User authentication with login and account creation
- CRUD operations for inventory items in grid format
- Runtime permission handling for SMS notifications
- Responsive UI supporting different screen sizes
- Offline-first architecture without requiring internet connectivity
Stakes
Academic project for CS-360 (Mobile Architecture and Programming) demonstrating Android development, database management, permissions, and mobile UI/UX design
My Role
Title
Android Developer
Team
Academic Project (Individual)
Ownership
Complete development of Android app: UI design, SQLite schema, authentication logic, CRUD operations, SMS integration, and permission handling
Approach & Key Decisions
Built a native Android app using Java and Android Studio with SQLite for offline data storage, implementing user authentication, RecyclerView with custom adapter for inventory grid display, runtime SMS permissions, and material design components for modern UI.
SQLite database for local inventory storage
SQLite provides fast, reliable offline data persistence without requiring server infrastructure, ensuring the app works without internet connectivity and reduces latency for CRUD operations.
Java with Android SDK for native app development
Java offers mature Android tooling, extensive documentation, and better stability compared to newer frameworks, making it ideal for academic projects requiring robust functionality.
RecyclerView with custom adapter for inventory grid
RecyclerView efficiently handles large datasets with view recycling, reducing memory overhead and providing smooth scrolling for inventory lists compared to ListView.
Runtime permission requests for SMS functionality
Android 6.0+ requires runtime permissions for dangerous permissions like SMS. Implementing proper permission handling ensures compliance with Android security model and better user experience.
Material Design components for consistent UI
Material Design provides familiar, accessible UI patterns with proper touch targets, ripple effects, and elevation, creating professional-looking interfaces that follow Android guidelines.
Modular database helper class for CRUD abstraction
Separating database logic into a helper class with methods for create, read, update, delete operations improves code maintainability and enables independent testing of database functionality.
Alternatives Considered
Considered using Room persistence library for more modern database abstraction but chose raw SQLiteOpenHelper to demonstrate fundamental understanding of Android database operations
Challenges & Solutions
⚠Challenge
Implementing secure user authentication without backend server
✓Solution
Built local authentication system using SQLite to store hashed passwords with salting, validating credentials on login, and maintaining session state with SharedPreferences for persistent login across app restarts.
⚠Challenge
Handling dynamic runtime permissions for SMS without disrupting user flow
✓Solution
Implemented permission request flow that checks for SMS permission before sending notifications, displays rationale dialog if previously denied, and gracefully handles both grant and deny scenarios with appropriate fallback behavior.
⚠Challenge
Displaying inventory items in responsive grid with add/edit/delete actions
✓Solution
Used RecyclerView with GridLayoutManager for flexible column counts based on screen size, implemented custom ViewHolder with onClickListeners for edit/delete, and added FloatingActionButton for adding new items.
⚠Challenge
Maintaining data consistency during concurrent CRUD operations
✓Solution
Implemented database transactions for atomic updates, used SQLite constraints (UNIQUE, NOT NULL) for data validation, and added proper error handling with rollback logic to prevent data corruption.
⚠Challenge
Creating intuitive UI for both beginners and experienced users
✓Solution
Designed clean interface with large touch targets, clear labels, confirmation dialogs for destructive actions (delete), and visual feedback (Snackbars) for all user actions to ensure discoverability and prevent errors.
Outcomes & Impact
Android Development Proficiency
Demonstrated mastery of Android SDK, SQLite database management, and mobile UI/UX design principles
Database Operations
Full CRUD functionality with SQLite including user authentication, inventory management, and data validation
Permission Handling
Runtime permission requests for SMS with proper rationale dialogs and graceful handling of grant/deny scenarios
User Interface
Material Design components with RecyclerView grid, FloatingActionButton, dialogs, and responsive layouts for different screen sizes
Offline Capability
Fully functional without internet connectivity, leveraging local SQLite storage for all data operations
SMS Notifications
Automated alerts for low inventory levels sent via SMS when user grants permission