GithubHelp home page GithubHelp logo

ryanelliott10 / beerme Goto Github PK

View Code? Open in Web Editor NEW
0.0 5.0 0.0 47.5 MB

A small React website (with C# backend) to aid in beer-flavor exploration

HTML 0.70% JavaScript 32.30% C# 16.27% ASP 0.04% PowerShell 48.29% Python 2.40%

beerme's Introduction

Build Status

Running BeerMe's Frontend

In the project directory, frontend/beerme/, run:

npm start

This will start a development server at http://localhost:3000.

Testing BeerMe's Frontend

We're using Facebook's Jest testing framework. To run tests and get the full code coverage report, run:

yarn test --coverage --watchAll=false or npm run test --coverage --watchAll=false.

The watchAll=false flag indicates we don't want to run in watch mode; there is a bug in Jest that prevents the coverage reports from being update when the tests are being watched.

beerme's People

Contributors

dependabot[bot] avatar isvelasc avatar marine-c avatar marinecossoul avatar ryanelliott10 avatar vedantmehta39 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

beerme's Issues

Sprint 1 feedback

I couldn't find your wireframes. Your storyboards looked good, especially the first one. Total score: 70

Data Collection on Beers for MVP

Start collecting data about various beers and styles and store them on the database

Acceptance Criteria
Have enough data to have an MVP

Estimated Cost
Large

UI Investigation

Medium

Look into different frontend technologies (React, VueJS, AngularJS, etc.) and decide what tech-stack we will be using.

Compared the various technologies available and judged, based on past experiences, that using React would be most conducive to a quick, effective, and well-designed website.

Clarifying Questions

What ensures an accurate rating?
Having various metrics by which to measure one rating ensures that there is a discussion and acknowledgement of the various aspects of group work and the participation of the individual in it. For example, a member of a team could be a quiet observer, hardly ever contributing to the discussion at hand but go above and beyond in their portion: be that research, artistic input, analysis, etc. By including the various metrics that make for good teamwork, it gives their overall rating a more accurate depiction of who the team member is and how they contribute, which in turn could also help any professor or manager using the site to grasp their capabilities and shortcomings and to which team they would be most suited to in the future.

What does the a rating mean?
It is a blunt and basic argument of how the team-member behaved and contributed to the project they were assigned, but it does not encompass them as a person. Each comment and metric provided can mean as little or as much to professor if they wish to include group participation as part of their grade, and based on which metrics they wish to pay attention to.

Is the rating permanent?
Yes and no. It is there as an overall, but a history of each group they have been part of will also be provided. Meaning a member could have a rating of 3.5/5 but have stellar reviews for the last 4 groups they were part of. It is important to note that people change, and to not begrudge them moments of weakness.

Explore Beers By Flavor

User Story

As a user looking to find new beers, I want to be taken through a flow to select specific beer styles, flavors, and notes I enjoy so that I can further explore new flavors and diversify my beer preferences.

Which biz goal are you targeting and why?

This feature will be targeting the adoption business goal. This feature will be unique to our business and will be enticing for new users. It'll be a great way to explore the power of the website and view the recommended flavors. At the end of the flow, the user will be prompted to create a profile to save their recommendations.

Use Case template (make sure to include alternative paths!)

Name

"Explore By Flavor"

Description

The user will be taken through a smooth flow to select: beer color (light v. dark), enjoyed notes, hoppiness, etc. Once the user has selected all their preferences, we will generate recommended beers and types the user may enjoy.

Preconditions

None, this feature will be available to all users to encourage them to adopt our website.

Basic Course of Action

  1. User visits our website
  2. Users selects the "Explore" tab in the taskbar
  3. User goes through the flow
  4. User is shown a page of recommended beer

Postconditions

If the user is signed in, the recommended beers will be added to their recommended beer history. If the user is not signed in, they will be prompted to either sign in or sign up to save the recommendations.

Alternatives Paths - All the things that could go wrong (e.g. errors or

exceptions, user cancels, or goes back to update)

  1. The user leaves the page. This will reset all data and force them to start from the beginning.
  2. The user selects the wrong option and wants to go back. They will hit the "Back" button to correct their error. This will be fine since the PATCH to the backend won't be made until the user has finished the final page.

Marine Cossoul: 1-1

Am I blocked?

No, this first week has been focused on finding an approved project idea. We decided on a beer rating/filtering site.

What I did

I discussed project ideas with my team and decided on our current project. We figured out our user base, features, and division of tasks. I will be working on the front-end side using React.

What I plan to do next week

Next week I plan to familiarize myself with React as this will be my first time using it. I will collaborate with my team to solidify our plan for both the front end and back end design, and begin shaping an outline of the UI.

Access consumers directly and indirectly

User Story

As a business, I want to have access to the most desired or searched flavor profiles so that I see which beer styles would fare best in the market and I want to market my beers to potential consumers.

Biz Goal

Gain revenue from breweries and beer companies wishing to advertise their beers to new consumers and understand the scope of the current market

Use Case

Name

'Advertise to the consumer'

Description

Provide avenues to advertise to possible consumers, whether by having their beers present in each beer style they correspond to--leading to options for consumers to purchase from, or direct advertisements to prospective consumers visiting the site.

Preconditions

Be a business
Have an account with BeerMe
Pay for the account

Basic Course of Action

  1. Business pays for advertisement
  2. Consumer sees beer associated with flavor profiles under a certain style

Post Condition

  1. Consumer purchases beer from business
  2. Consumer positively reviews beer

Alternative Paths

The beer isn't purchased
The beer is rated negatively

Use Case

Name

'Acquire consumer preferences'

Description

Complete data of all profiles and styles searched for and through, given by daily, weekly, monthly and yearly amounts given to business to understand the scope of flavor profiles currently desired

Preconditions

Be a business
Have an account with BeerMe
Pay for the account

Basic Course of Action

  1. Business places request for data
  2. BeerMe provides data
  3. Business makes beer based on popular search profiles

Post Condition

  1. The beer sells well

Alternative Paths

The beer doesn't sell well

Remove advertisements with paid subscriptions

User Story

As a BeerMe user, I want to get rid of advertisements, so that I can have an uninterrupted experience exploring the world of beer.

Business Goals

This feature accomplishes the Revenue goal for a business. By having advertisements, we pave a way to be self-sustainable and profitable. It also gives us the ability to bring Business partners on the platform.

Use Case Template

  • Name: "Purchasing a MemBEERship"

  • Description: Guide the user to purchase the paid membership

  • Preconditions: User needs to be registered

  • Basic Course of Action:

    • User visits our website
    • User gets annoyed with the advertisements
    • User clicks on his profile and gets redirected to the profile page
    • User purchases the MemBEERship
  • Postconditions: Having purchased a MemBEERship, the user now has access to a seamless ad-free experience on our websites.

  • Alternatives Paths:

    • User presses the back button while the payment is being processed, this might interrupt the
      payment portal and thus the user is redirected back to his profile page with an error message.

Constraints

One of the main difficulties facing this project is the inherent bias of opinion and its foothold in rating someone or something. Despite any best efforts in creating the site to provide a fair rating based on outliers, averages, and weighted rating, it's difficult to ascertain the veracity of the rating provided. One of the disclaimers present in RateMyProfessor and PolyRatings is the innate disposition of biased opinion because each persons rating is based on their own experience and it is difficult to acquire an accurate metric of that. Therefore, having a hard rating may or may not reflect the truth of involvement of the person being rated.

Code Coverage

Screen Shot 2020-02-23 at 8 29 46 PM

We have a decently sized codebase at the moment with lots of UI so it's difficult to get complete coverage. Will be working with jest mock to increase these percentages.

View Your Personalized Beer Recommendation

User Story

As a new beer drinker, I want to familiarize myself with beer styles based on my tastes so that I can find new beers that I love.

Business Goal

Satisfaction: curating a personalized list of beer recommendations keeps users coming back to this site to discover new tastes specific to their preferences.

Use Case

Name

"For You"

Description

View a personalized list of beer styles based on ratings of other users with similar tastes.

Preconditions

Must have an account with saved ratings.

Basic Course of Action

  1. User visits our website
  2. User makes an account
  3. User rates an initial survey of flavor profiles
  4. User visits "For You" page and views list of beer styles with similar flavors to personal profile.

Postconditions

A curated list of beer styles will be available on the "For You" page.

Alternative Paths

  1. The user does not complete the initial survey at the time of account creation, the "For You" page will display the survey until it is completed.

Success Metrics

One of the toughest challenges of launching a new product is measuring its success. Therefore, it is imperative that a business has a predetermined plan to measure their product's success in a quantifiable way.

Perhaps the most telling metric is user-retention. Any product, with decent enough advertising, is able to grab a user's attention and ensure a first-time experience. However, good products will entice their users; the users will want to come back for more, meaning they will be signing in multiple times, interacting with the website and other users in various ways, and much more. The most common issue with tracking this metric is anonymous users. However, with the use of cookies and users' caches, we will be able to determine which users are returning to our website, even if they never create an account.

Another clear metric that can be useful in determining the success of a product is the growth of the number of accounts. Metcalfe's Law implies a good product will perpetuate the social network effect, in turn, the graph of, in this case, account creation will be exponential in nature. Ensuring this is a consistent trend should prove to be an effective indicator of our product's success.

User Stories / Acceptance Tests

Explore

User Story

As an amateur craft beer drinker, I want to search for styles based on criteria I like, so that I have suggestions for new types of beer I might find appealing.

Use Case

Name
Explore new styles of beer.

Description
User finds new and exciting styles they have never heard of before or have seldom explored. Explore is based on types of profiles they know they like, so it will only suggest styles that are closely related to those profiles.

Preconditions
Fill out three fields before search: desired color of the beer, alcohol percent of the beer, bitterness level of the beer.

Basic Course of Action

  1. User goes to explore page
  2. User fills out three fields
  3. User is recommended a new style

Postconditions
The user tries the new style.

Alternative Paths
The user is not suggested any new styles.
The user is not suggested any styles.

Acceptance Test

  • Verify any user is able to access explore page
  • Verify any user is able to scroll through each selection page
  • Verify user cannot access new styles based on selections if no selections were made
  • Verify selections can be made
  • Verify styles are provided based on selections
  • Verify user is given message if no styles are provided based on selections

Recommendations

User Story

As a BeerMe account holder, I want new and exciting beers recommended to me based on beers I know I have liked, so that I will have possible new beers to drink I might like.

Use Case

Name
Get recommendations based on ratings.

Description
Based on beers that the user has rated with 3 stars or higher, BeerMe recommends the user beers that are similar in style, taste, color, alcohol content and bitterness level.

Preconditions
Have a BeerMe account.
Have rated at least one beer.

Basic Course of Action

  1. Sign in to account
  2. User rates beer they have liked
  3. User goes to recommendations
  4. User is recommended a beer according to criteria similar to beer rated 3 stars or higher

Postconditions
User checks beers recommended page
User is recommended beers that are not beers they have rated
User is not recommended beer if beer is rated less than 3 stars

Alternative Paths
User isn’t shown any beers
User is shown beers but has already had these particular beers, which they then can decide to rate or not rate to acquire a new set of beers
User is recommended beers they have already rated
User is recommended beers they have rated less than 3 stars

Acceptance Test

  • Verify only account holders can access Recommendations
  • Verify only non-business users are able to be recommended beers
  • Verify user is given recommendations
  • Verify beers coincide with user’s most current rated 3 stars or more beers
  • Verify beers change if the user gives a negative rating
  • Verify user can rate beers they have not rated

Ratings

User Story

As a BeerMe an account holder, I want to be able to rate beers both recommended to me and not recommended to me according to my opinion of that beer, so that others know whether or not that beer is desirable.

Use Case

Name
Rate beers that have been tasted

Description
User finds beers they have tasted and rates them according to preferences.

Preconditions
Have a BeerMe account.

Basic Course of Action

  1. User signs in to BeerMe
  2. User searches for beer they have tasted
  3. User rates beer according to overall experience with beer

Postconditions
User’s rating is taken into account to the overall rating of the beer

Alternative Paths
User isn’t able to rate beer
User’s desired beer to rate is missing
User can’t find beer that they wanted to rate
User’s rating has no effect

Acceptance Test

  • Verify user is able to access beer if present on BeerMe list
  • Verify beer is only able to be rated once per user
  • Verify business do not have access to rate beers
  • Verify specific beer rated is influenced based on user’s rating
  • Verify rating stars change color once beer is rated

Marketing Craft Beers

User Story

As a BeerMe business account holder, I want to be able to publish and suggest my beers to possible
BeerMe users, so that I can have more potential customers drinking my beer.

Use Case

Name
Market beers to potential customers

Description
Business/Breweries are able to market their own beers to BeerMe users under specified styles

Preconditions
Have a BeerMe account
Be a business

Basic Course of Action

  1. Business user signs in to account
  2. User selects fills in fields to add a beer
  3. User selects style that the beer falls under
  4. User provides beer’s name
  5. User publishes beer by “Add Beer”

Postconditions
User’s beer is published to the style chosen by user

Alternative Paths
Beer isn’t added to style chosen
There is no style available for that specific beer

Acceptance Test

  • Verify business account holder is able to access the remove and add beer page
  • Verify only businesses have access to this page
  • Verify business user can add beer
  • Verify beer has been added
  • Verify beer has been added to the specific style
  • Verify beer can be rated
  • Verify beer can be searched for
  • Verify beer can be recommended

User Story & Acceptance Test

Familiarize with React

Learn the technology, follow courses online, and set up a dummy website to mess around with.

Acceptance Criteria

Dummy website contains basic outline of features we will be using for our own project, "dumbed-down" practice version.

Estimated Cost

Large

Develop the UI Framework

The website's UI is crucial to attracting and retaining users. Work on a whiteboard or AdobeXD to come up with the page designs for: Home, Explore, and Rec. For You

Acceptance Criteria

Create a project in AdobeXD or Balsamique and have 3 designs, one for each page.

Estimated Cost

Large

Decide on New Project Idea

Medium

GroupRatings was a no-go, so we need to come up with another project idea and get going on it.

We landed on a new project, called BeerMe, that will, in short, recommend users beers based on their preferences.

Project Idea

We are planning to work on GroupRatings this quarter. It is a P2P platform where users can rate their group(ranging from school to workgroups) members. This rating can then be used as a reference for the creation of future groups or for assessment of contributions to the group.

Documentation

Description

BeerMe is a single page web application that weaves the vast knowledge of beer and all its particularities with the desire to explore new beer in a simple, user-friendly, interactive format.

Tech Stack

Backend: Visual C# with Entity Framework as the ORM, to interact with Microsoft SQL Server as the database
Frontend: React JS for development, Jest for Testing, HTML/CSS for styling, and Python 3 for automation.

Getting Started

BeerMe Front End UML

Taskflow

Screen Shot 2020-03-12 at 9 04 56 PM

Database set up on localhost

Look at ways to configure and set up an MS SQL Database on localhost.

Output
We set up a mock MS SQL database on localhost

Ryan Elliott 1-1

Am I blocked?

No, the beginning of this project has few-to-zero blockers.

What I did. (Use links to GH Issues as appropriate)

I discussed project ideas with my team and acted as the engineering manager throughout the week. Furthermore, I set up a dummy website in React to refamiliarize myself with the technology.

What I plan to do next week. (It's okay if you don't know or if things change. Just take a guess)

Go through a reminder course on React. Additionally, I will begin planning the website's UI and the various pages and routes a user may venture down. A great UX is crucial to retaining users.

Team Retrospectives

What went well last week?

Using a negative as a positive, our group was able to find a new, more productive project idea: a beer rating and recommendation system. While it was initially a struggle to conjure up unique ideas, we ultimately landed on one we were all interested in and, most importantly, is an acceptable project plan.

Furthermore, our group started the week in a bit of a communication slump. However, as the week progressed, we were able to effectively improve our communication and all became more vocal and willing to offer our input.

What didn't go well last week?

The largest challenge we faced was the vetoing of our initial project idea, GroupRatings. While we had initially viewed this idea as an effective way to encourage stronger group participation, it became clear -- with the input of a third party -- that the end product would likely be more harmful than beneficial as our natural tendencies lean toward being far more critical, sometimes even becoming blinded of our own faults, while judging others.

Additionally, our group faced difficulties trying to meet at the same time. Outside conflicts proved to be a large hindrance, meaning some group members were forced to miss meetings. Despite this, we were all still able to meet the deliverables for the week.

What experiment (or change) we'll make next week to improve as a team

This week was jumbled with meetings scattered throughout the week to try to meet everyone's scheduling availabilities. Next week, we plan on setting a specific day, time, and place to meet that will hopefully be carried on throughout the remainder of this project.

Develop Project Idea

GroupRatings is a no-go.

BeerMe: Beer recommendation, rating, and filtering service.

Goals for the Project

These are the 2 main features of our platform:

  1. A P2P system where users can create a well-rounded team based on their members' strengths and weaknesses.
  2. An easy and reliable way for Managers/Instructors to assess the performance of each group member.

Designing Database Tables

Start designing a few basic tables(Like User) on the database so that we have some structure to start with.

Acceptance Criteria
Have rough designs for a few tables ready

Estimated Cost
Medium

Figure Azure Hosting

We need to figure how the database/API can be hosted on the cloud so that all of us don't need a duplicate copy for them

Regression Test

Priority 1 Regression Test - Master Update

  • Verify user is recommended beers

Vedant Mehta 1-1

Am I blocked?

No, not yet

What I did. (Use links to GH Issues as appropriate)

Brainstormed with my colleagues to come up with our new idea (Beer Recommendation and Rating system)

What I plan to do next week. (It's okay if you don't know or if things change. Just take a guess)

Start setting up the database and maybe start designing a few tables.

Competitive Analysis

Since our idea is so unique, there are no current direct competitors. However, our idea stemmed from other similar services, namely RateMyProfessor and PolyRatings, and simply modified it to become more niche. While this means we are developing a new product, it also means it will be relatively easy for our indirect competitors to develop their own product and, in turn, become direct competitors.

Since it will be easy for competitors to pop up, we've developed a business plan to avoid being overrun by larger businesses. We plan on offering a MVP with the base functionality, and slowly evolving from there. Our hope is to become integrated into the actual learning environment; by allowing professors to create classes and, at the end of projects, requiring their students to rate each other and then provide their own (the professor's) input to validate the information.

Learn about the Hibernate Framework in Java

Research about Hibernates functionality and look into its basic features

Acceptance Criteria
Successfully create a toy project that uses the framework

Estimated Cost
Large

Output
While reading about it we realized that Hibernate required a lot of configuration, which we think would take up a lot of our precious time. Thus we decided to rather go with C# and Entity Framework instead, which has an easier setup

Acceptance Test

User Story

I as a registered BeerMe user, want to have beers recommended to me, so that I can have a selection of differing beers to choose from if I so desire.

Test

  • Verify user is given beer recommendations
  • Verify beers coincide with user's searches
  • Verify beers coincide with user's highest rated beers
  • Verify beers change according to most recent explore queries
  • Verify beers are saved across login sessions
  • Verify beers change if user gives recommended beer a negative rating

3 Types of Users

  1. Anonymous User (Can only view ratings)
  2. Normal User (Group Member that can view and rate other members themselves)
  3. Manager/Instructor (Can view anonymous feedback from group users)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.