Skip to content
This repository has been archived by the owner on May 28, 2020. It is now read-only.

Espresso app specification

黎赵太郎 edited this page Apr 28, 2017 · 5 revisions

The Espresso App

The Espresso app let a user add, update, delete express packages and search the information of an express company.

The user can add package by inputting the express sheet number manually or just scanning it. The added packages can be set as read or unread. When a package is refreshed, the app will push a notification to user.

Launcher widget, day/night mode, app shortcut, etc... are provided.

Why Espresso

There are 3 reasons that I choose this name:

  1. The pronunciation of 'Express'(AmE ɪkˈsprɛs) is much similar to 'Espresso'(AmE ɛˈsprɛsˌoʊ).
  2. As we all know, Espresso is a kind of coffee. I hope this app will make users feel comfortable just like drinking a cup of espresso and enjoy the lifetime.
  3. As an Android developer, you may know that Espresso is a UI testing framework for Android. The name also means to pay tribute to it.

User Interface

There is a drawer to switch the "Home" and "Companies" and a toolbar on home screen. And also, "Settings", "About" screens are in the drawer.

Screenshot

Onboard Screen

Shows 3 main features of this app. It will show only once when the app is in first launch.

Screenshot

Home(Packages) Screen

Shows a list with the packages' avatar, name, context text and refreshing time. Packages can be removed by a left or right swipe. A long click triggers the context menu, it shows actions that packages can be marked read/unread. The bottom navigation view is a filter to show all, on the way or delivered packages.

Screenshot Screenshot

Package Details Screen

Shows the name, number, company and the status(context text) list. The menu shows actions to set the package unread, copy the number to clipboard, share the details or delete the package. The floating action button shows a dialog to rename the package's name.

Screenshot

Add Package Screen

Lets the user input the express sheet number and package name of a new package.

Screenshot

Scan Code Screen

Lets user scanning the bar code or QR code of an express sheet number through camera.

Screenshot

Companies Screen

Shows a list with the avatar, name and phone number. There are 641 companies in total.

Screenshot

Company Details Screen

Shows the name, phone number and website of a express company. The floating action button allows user to share the information of this company.

Screenshot

Search Screen

Shows a search box in toolbar. Packages can searched by name, the company's Chinese name, the company id and number. Companies can be searched by name, phone number, website and alphabet index.

Screenshot

Settings and About Screens

Shows a list of options to let user make the app more suitable and easy to use. The about screen shows some information about this app.

Screenshot Screenshot

Night Mode Screen

Shows a darker theme of all the screens above. It is NOT an independent screen.

Screenshot

Launcher Screen

Supports launcher widget and app shortcut.

Screenshot

Data Sources

There are three levels of data persistence:

  • In-memory cache - Fast
  • Disk (SQLiteDb) - Slow
  • Network - Very slow

Synchronization between layers is hard and depends on the case so it's out of the scope for the samples. The chosen sync implementation is very simple:

  • In every get operation:
    • Return cache if available, or
    • return local copy if it exists, or
    • return remote copy
  • Every write/delete operation will simply:
    • Update cache
    • Update local
    • Update remote

Note there is no request to the network except a refresh is forced by the user.