Skip to content

piracyiskey/Android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸͺ MetroMini

A full-stack convenience store mobile application built with Android (Java) and a serverless Spring Boot backend on AWS Lambda.

Android Java Spring Boot AWS Lambda MySQL


πŸ“– About

MetroMini is a mobile e-commerce application designed for convenience store shopping. It provides users with a seamless experience to browse products, manage their cart, apply vouchers, checkout with multiple payment methods, and track their order history β€” all from their Android device.

The project follows a client-server architecture with:

  • A native Android front-end written in Java
  • A Spring Boot 3 REST API back-end deployed as a serverless function on AWS Lambda via SAM

✨ Features

πŸ” Authentication & Account

  • User registration with email verification (OTP)
  • Login with email/password
  • Google Sign-In integration
  • Password recovery via email OTP
  • Profile management (avatar, name, phone, password)

πŸ›οΈ Shopping

  • Browse products by category (Vegetables, Fruits, Beverages, Snacks)
  • View featured/hot products on the home screen
  • Product detail pages with images, descriptions, and pricing
  • Search products by keyword
  • Add products to favorites/wishlist

πŸ›’ Cart & Checkout

  • Add/remove products with quantity controls
  • Apply voucher/discount codes
  • View subtotal, discount, and total breakdown
  • Multiple payment methods: MoMo, ZaloPay, Cash

⭐ Reviews & Ratings

  • View product reviews and star ratings
  • Submit reviews with star rating and text comments

πŸ“¦ Order Management

  • Full order history with payment method indicators
  • Detailed order view with itemized breakdown
  • Order status tracking

πŸ—οΈ Architecture

MetroMini/
β”œβ”€β”€ android-app/          # Android client (Java, View Binding)
β”‚   └── app/
β”‚       └── src/main/
β”‚           β”œβ”€β”€ java/com/example/convenient/
β”‚           β”‚   β”œβ”€β”€ Activity/       # All Activity & Fragment classes
β”‚           β”‚   β”œβ”€β”€ adapters/       # RecyclerView adapters
β”‚           β”‚   β”œβ”€β”€ models/         # Data models (Product, Cart, Order, etc.)
β”‚           β”‚   └── Utils/          # Helpers (HTTP, SharedPrefs, Cookies)
β”‚           └── res/                # Layouts, drawables, values
β”œβ”€β”€ back-end/             # Spring Boot 3 serverless API
β”‚   └── src/main/java/org/convenient/
β”‚       β”œβ”€β”€ controller/             # MVC controllers
β”‚       β”œβ”€β”€ rest_controller/        # REST API endpoints
β”‚       β”œβ”€β”€ models/                 # JPA entity models
β”‚       β”œβ”€β”€ repository/             # Spring Data JPA repositories
β”‚       β”œβ”€β”€ services/               # Business logic layer
β”‚       β”œβ”€β”€ security/               # JWT auth & Spring Security config
β”‚       β”œβ”€β”€ dto/                    # Data transfer objects
β”‚       └── config/                 # App configuration
└── screenshots/          # App UI screenshots

πŸ› οΈ Tech Stack

Android Client

Layer Technology
Language Java 11
Min SDK 24 (Android 7.0)
Target SDK 35
UI View Binding, Material Design Components
Networking OkHttp 4, Volley
Image Loading Glide 4.16
Navigation Jetpack Navigation Component
Auth Google Play Services Auth
JSON Gson

Back-End

Layer Technology
Framework Spring Boot 3.4.4
Language Java 21
Runtime AWS Lambda (via SAM)
Database MySQL
Auth Spring Security + JWT (jjwt 0.11.5)
Caching Caffeine (for OTP storage)
Email Spring Boot Starter Mail
Storage AWS S3 (product images, avatars)
Monitoring Spring Boot Actuator

πŸš€ Getting Started

Prerequisites

Back-End Setup

  1. Clone the repository

    git clone https://github.com/piracyiskey/Android.git
    cd Android/back-end
  2. Configure the database

    Update src/main/resources/application.properties (or application.yml) with your MySQL connection details.

  3. Build with SAM

    sam build
  4. Run locally

    sam local start-api

    The API will be available at http://127.0.0.1:3000.

  5. Deploy to AWS

    sam deploy --guided

Android App Setup

  1. Open the project in Android Studio:

    File β†’ Open β†’ select the android-app/ directory
    
  2. Update the API base URL

    Point the app's HTTP client to your deployed (or local) backend URL.

  3. Sync Gradle and Run on an emulator or physical device (min API 24).


πŸ“± Screenshots

Onboarding

Onboarding Screens

Login & Registration

Login and Registration

Password Recovery

Password Recovery Flow

User Profile

User Profile and Settings

Product Browsing & Favorites

Products, Categories, and Favorites

Product Details & Reviews

Product Details and Reviews

Shopping Cart

Shopping Cart with Voucher

Payment & Order History

Payment Methods and Order History


πŸ“‘ API Endpoints

Method Endpoint Description
POST /api/register Register a new user
POST /api/login Authenticate and receive JWT
POST /api/otp/* Send & verify OTP
POST /api/recovery/* Password recovery flow
GET /api/products List all products
GET /api/products/hot Get featured products
GET /api/products/{id} Get product details
GET/POST /api/cart/* Cart management
GET/POST /api/favorites/* Favorites/wishlist
POST /api/orders Place an order
GET /api/orders Get order history
GET/POST /api/ratings/* Product ratings & reviews
PUT /api/profile Update user profile

πŸ“„ License

This project was developed for educational purposes.


Made with ❀️ by the MetroMini team

About

An E-commerce convenient store

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages