-
Notifications
You must be signed in to change notification settings - Fork 200
Espresso app specification
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.
There are 3 reasons that I choose this name:
- The pronunciation of 'Express'(AmE ɪkˈsprɛs) is much similar to 'Espresso'(AmE ɛˈsprɛsˌoʊ).
- 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.
- 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.
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.
Shows 3 main features of this app. It will show only once when the app is in first launch.
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.
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.
Lets the user input the express sheet number and package name of a new package.
Lets user scanning the bar code or QR code of an express sheet number through camera.
Shows a list with the avatar, name and phone number. There are 641 companies in total.
Shows the name, phone number and website of a express company. The floating action button allows user to share the information of this company.
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.
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.
Shows a darker theme of all the screens above. It is NOT an independent screen.
Supports launcher widget and app shortcut.
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.