Shopping List is an Offline First demo [Progressive Web App | hybrid mobile app | native mobile app | desktop app] built using Apache Cordova and PouchDB. This app is part of a series of Offline First demo apps, each built using a different stack.
To see what this app looks like without installing anything, simply visit https://ibm-watson-data-lab.github.io/shopping-list-vuejs-pouchdb/ in a web browser or mobile device. The web app you see there is embedded into Apache Cordova and can be distributed as a native app on Android, iOS, Windows, OSX and others.
Shopping List is a simple demo app, with a limited feature set. Here is a list of features written as user stories grouped by Epic:
- Planning
- As a <person planning to shop for groceries>, I want to <create a shopping list> so that <I can add items to this shopping list>.
- As a <person planning to shop for groceries>, I want to <add an item to my shopping list> so that <I can remember to buy that item when I am at the grocery store later>.
- As a <person planning to shop for groceries>, I want to <remove an item from my shopping list> so that <I can change my mind on what to buy when I am at the grocery store later>.
- Shopping
- As a <person shopping for groceries>, I want to <view items on my shopping list> so that <I can remember what items to buy>.
- As a <person shopping for groceries>, I want to <add an item to my shopping list> so that <I can remember to buy that item>.
- As a <person shopping for groceries>, I want to <remove an item from my shopping list> so that <I can change my mind on what to buy>.
- As a <person shopping for groceries>, I want to <check off an item on my shopping list> so that <I can keep track of what items I have bought>.
- Offline First
- As a <person shopping for groceries>, I want to <have the app installed on my device> so that <I can continue to utilize my shopping list when no internet connection is available>.
- As a <person shopping for groceries>, I want to <have my shopping list stored locally on my device> so that <I can continue to utilize my shopping list when no internet connection is available>.
- As a <person shopping for groceries>, I want to <sync my shopping list with the cloud> so that <I can manage and utilize my shopping list on multiple devices>.
- Multi-User / Multi-Device
- As a <new user>, I want to <sign up for the app> so that <I can use the app>.
- As an <existing user>, I want to <sign in to the app> so that <I can use the app>.
- As an <existing user>, I want to <sign out of the app> so that <I can protect my privacy>.
- Geolocation
- As a <person planning to shop for groceries>, I want to <associate a shopping list with a grocery store> so that <I can be notified of this shopping list when I am physically at that grocery store>.
- As a <person associating a shopping list with a physical store>, I want to <access previously-used locations> so that <I can quickly find the physical store for which I am searching>.
- As a <person shopping for groceries>, I want to <be notified of a shopping list when I am physically at the grocery store associated with that shopping list> so that <I can quickly find the shopping list for my current context>.
<Information detailing the app architecture; for using this app as a reference implementation>
Clone this repository:
git clone https://github.com/ibm-watson-data-lab/shopping-list-cordova-pouchdb.git
cd shopping-list-cordova-pouchdb
Install Cordova:
npm install -g cordova
Install the "platform" you wish to run on (see list of platforms here):
cordova plaform add browser
or
cordova plaform add osx
Run your app:
cordova run browser
or
cordova run osx
N.B Each platform has its own requirements that must be installed on your machine, e.g. the Android SDK, or the iOS Development kit.