A local-first Android supermarket application enabling customers to purchase products without staff assistance. Combines security, convenience, and seamless checkout using QR codes and NFC technology.
- Reactive & Seamless UI – Smooth, responsive interface built in Kotlin
- Secure Authentication – Encrypted local storage with server-side validation for enhanced security
- Smart Shopping – Scan product QR codes to add items to your virtual basket
- Voucher System – Apply discount vouchers at checkout for reduced pricing
- Flexible Checkout – Complete purchases via QR code scan or NFC technology
- Server Validation – Critical operations verified with the supermarket server for security and accuracy
For comprehensive technical details, see the Project Report.
| Component | Technology |
|---|---|
| Mobile App | Kotlin (Android) |
| Backend | Node.js + Express |
| Database | SQL |
| Authentication | Encrypted Local Storage + Server Validation |
- Android Studio (latest version)
- JDK 11 or higher
- Node.js 14+ (for backend server)
- Gradle 7.0+
-
Clone the repository
git clone <repository-url> cd ACME_SupermarketApp
-
Build the Android app
./gradlew build
-
Set up the backend server
cd nodeServer npm install npm start -
Deploy to device/emulator
./gradlew installDebug
ACME_SupermarketApp/
├── app/ # Android Application
│ ├── src/main/
│ │ ├── java/ # Kotlin source code
│ │ └── res/ # UI resources (layouts, drawables, values)
│ └── build.gradle.kts
├── nodeServer/ # Backend Server
│ ├── server.js # Express server entry point
│ ├── database/ # Database operations
│ ├── middleware/ # API routes & middleware
│ └── package.json
└── gradle/ # Gradle configuration
- Encrypted Authentication – User credentials securely stored and transmitted
- Server Validation – All critical transactions verified server-side
- Secure Checkout – Final prices confirmed with server to prevent tampering
- QR/NFC Support – Contactless, tamper-proof transaction initiation
Email: rafael2003t.18@gmail.com