-
Notifications
You must be signed in to change notification settings - Fork 24
Requirements
#Purpose The primary goal of this document is to provide a complete and accurate list of requirements for the BeerDrinkin mobile and backend system. Upon completion, the document will provide a common point of reference for system expectations. The primary audience of this document includes, but is not limited to, the designers and developers of the system and the end user. The document may also be of interest as a reference for individuals using Xamarin in similar projects.
#Scope The BeerDrinkin backend systems primary responsibility is to perform basic data assembly, formatting and processing services for the client applications. It's aim is to manage a number of separate services provided by 3rd parties such as Azure Search, Azure Machine Learning and Web Hooks from beer databases.
The major functions the BeerDrinkin backend system must perform are as follows: 1. Receive data from BreweryDB using WebHooks. 2. Store and retrieve user data from a Microsoft SQL Server instance in Azure. 3. Collect META data on beer checkins for further processing in Machine Learning 4. Process Images (Azure oxford tooling for cropping and nudity detection).
#General Description The remainder of this document contains a more detailed description of the BeerDrinkin project system and the requirements necessary to design and build the system.
Section 1 provides a general description of the product and how it should work. Section 2 covers the Azure backend service and section 3 describes the client applications in detail.
#General Description
BeerDrinkin shall provide a social platform for beer lovers to share and review beers that they've consumed. With this data it shall be possible make accurate predictions for future beers the users may enjoy. To facilitate these requirements, the system shall allow users to search for beers using keywords and barcode as well as supporting the ability to create new beers which are missing from the database. The user shall be able to see a list of all the beers they've consumed as well as the ratings that they've provided. The system shall use the beer information provided from all users to make accurate recommendations using machine learning (ML). The more beers a user consumes and logs within BeerDrinkin, the recommendations shall improve to become extremely accurate.
#User Characteristics There are 2 main groups of users for the BeerDrinkin application. The first group of users shall be representatives from breweries who wish to gain more exposer for their beers. Their interaction with the backend infrastructure will be mostly for adding and modifying beer entries. The breweries will (once verified) be able to receive analytics on their beers activities through a web portal.
The second group of users is active beer drinkers (consumers). They will have some knowledge of beer and take an active interest in discovering new beers to rate and review. They will most likely have already used a competing system such as Untappd or Beer Buddy. These users will interact with the BeerDrinkin backend through client apps for iOS, Android and Windows.
#General Constraints ##Software Limitations
- The backend infrastructure shall need to support Microsoft .NET 4.6.
- Visual Studio 2015 with C# .NET shall be used for the development of BeerDrinkin
- C# 6.0 shall be used for development
##Hardware limitations
- Each client user shall need a mobile device capable of installing apps from an App Store.
- The backend infrastructure has been hosted on Microsoft Azure cloud platform.
#Assumptions and Dependencies
- The application assumes no end user has experience with beer logging apps or social networks.
- It is assumed that the backend infrastructure can be dynamically scaled to grow and shrink in relation to demand.
- The system is dependant on the Microsoft .NET Framework to operate.
#Requirements Details ##Client Apps The client apps are the consumer facing aspect of the BeerDrinkin project. These will target all major mobile platforms (including iOS, Android and Windows Phone). These will be developed using Xamarin and standard Microsoft Windows Phone development practices.
###Search Input Description The system shall allow the user to search for beers based on both keywords or a unique identification code retrieved from a barcode.
####Keyword Search The keyword search functionality of BeerDrinkin will leverage Microsoft's Azure Search as a service technology. Searching will include full-text search scoped over the entire publicly accessible database (Beers, breweries, reviews). It shall be possible to do the following:
- Search for a beer using its name
- Search for beers of a particular brewery
- Scored results based on popularity of the returned beers.
- The search textfield should auto-complete using both fuzzy and infix matching.
- It shall be possible to filter search results by brewery and abv.
- It shall be possible to offer spelling corrections.
####Barcode Search This feature depends on the users device featuring a rear facing camera.
- It shall be possible to scan a beer's barcode and navigate to the beer details view.
- It shall be possible to search RateBeer for the beer name if the Unique Product Code (UPC) is not found within the BeerDrinkin Database. It should then create a keyword search query based on the returned value.
####Search Results
- The search results shall be displayed in a table view.
- Each beer or brewery returned shall be displayed in an individual table cell.
- The the table cell for a beer should contain the beer's name.
- The the table cell for a beer should contain the beer's manufacturer (brewery).
- The the table cell for a beer should contain the beer's ABV.
- The the table cell for a beer should contain the beers label image as an icon.
##Beer details Once the user has searched for a beer, they should be able to view the beers details.
- The beer's label image should be in a header view which uses parallax to resize and stretch.
- The view should contain the beers name.
- The view should contain the beers manufacturer.
- The view should contain the number of times the beer has be consumed (checked in) for all users.
- The view should contain the beers ABV.
- The view should contain the average rating of the beer (from 1 to 5).
- The view should contain the beers description.
- The view should contain photos of the beers created from other users.
- The view should contain a button titled 'Check In' which allows the user to record that they've consumed the beer.
##Check In
- It shall be possible to save a beer to the 'My beers' view using the check-in functionality.
- It shall be possible to select if a beer was from tap or bottle.
- It shall be possible to record a barcode if the bottle option is selected.
- It shall be possible to rate a beer from 1 to 5 using stars (much like the app store).
- It shall be possible to take 3 photos per beer.
- It shall be possible to write a review for the beer.
- It shall be possible to save the users longitude and latitude.
##My Beers All beers the user consumed shall be found in the 'My Beers' view. This will include the following functionality:
- If not beers are found to have been checked-in, the user will presented with a placeholder view.
- It shall be possible to swipe to delete beer items for the selected user.
- The view shall display beers in a table.
- The the table cell for a beer should contain the beer's name.
- The the table cell for a beer should contain the beer's manufacturer (brewery).
- The the table cell for a beer should contain the beer's ABV.
- The the table cell for a beer should contain the beers label image as an icon.
- The the table cell for a beer should contain the number of times the currently signed in user has consumed the beer.
- Tapping on a table cell should display the beers detail view.
- It should be possible to 3D-Touch a cell to peek and pop its detail view. [iOS]
##Account Page
- It shall be possible to view all current user photos uploaded to Azure storage.
- It shall be possible to see the number of views for the current user.
- It shall be possible to see the number of beers consumed for the current user.
- It shall be possible to see the number of beer ratings for the current user.
- It shall be possible to access the apps settings.
##Feed
- It should be possible to view a feed of events from the BeerDrinkin backend.
- It should report new beers added to the database
- It should show trending beers
- It should show popular beers for the local area.