RizTech Academy logo
RizTech Academy
Mobile AppOpen source

ShopKart — Android Storefront and Commerce API

A native Android shop in Kotlin and Jetpack Compose that keeps working offline, and the TypeScript commerce API behind it: catalogue, basket, favourites, accounts and checkout in one transaction.

Mobile App Development, Native Android, Backend & APIs, UI/UX Design, Testing & CI
ShopKart — Android Storefront and Commerce API — Mobile App case study
Screens

See it running

Android

Pixel 7 emulator. Products are fictional, with free photos from Pexels.

  • ShopKart home screen with a search bar, a promotional banner, category icons and a Top rated carousel
    Home
  • ShopKart product grid with photos, star ratings, Popular and Top rated badges, prices and add buttons, one item marked out of stock
    Product grid with one-tap add
  • ShopKart product page for Aurora Wireless Headphones with a full-width photo, rating, stock status and an Add to basket bar
    Product page
  • ShopKart basket with two items, quantity steppers, an order summary and a Place order button
    Basket
  • ShopKart order placed sheet with the order reference, item count and total
    Order placed

The problem

A shopping app is judged in the moments it goes wrong: a basket that briefly shows the wrong items, a catalogue that disappears in a lift, a total that is a cent out, an app that crashes the day the server adds a field. On the server, two checkouts arriving together must not charge anyone twice, and a basket built as a guest should survive signing up.

How it’s built

The Android app is split into modules, and its domain is a plain Kotlin module, so the build itself stops business rules from touching Android code. Use cases own the rules (no out-of-stock item in a basket, zero means remove), money is integer minor units, and the cart computes its own totals. Room caches the catalogue for offline use, and only an unfiltered fetch may replace it, so a search never shrinks the offline catalogue. The companion API (RizTech-Academy/shopkart-api) is Next.js and TypeScript on SQLite: checkout writes the order and empties the basket in one transaction, and signing in moves a guest’s basket, favourites and orders onto the account.

What it does

  • Storefront design: category banners, a Top rated carousel, photo grid with earned rating badges, product page with a sticky buy bar
  • Browse offline: the catalogue is cached on the phone, and a search can never overwrite it
  • Two simultaneous checkouts produce exactly one order
  • A guest basket carries over when the shopper signs up or signs in
  • Repository tests against real Room and MockWebServer; API tests against a real SQLite database

Learn to build software like this

The free courses teach the same craft — from the basics to a real, running project.