ryanelliott10 / beerme Goto Github PK
View Code? Open in Web Editor NEWA small React website (with C# backend) to aid in beer-flavor exploration
A small React website (with C# backend) to aid in beer-flavor exploration
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.
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
Determine a way for setting up the full stack project environment on everyone's pc so that the SDLC can be facilitated.
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.
No, this first week has been focused on finding an approved project idea. We decided on a beer rating/filtering site.
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.
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.
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.
Gain revenue from breweries and beer companies wishing to advertise their beers to new consumers and understand the scope of the current market
'Advertise to the consumer'
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.
Be a business
Have an account with BeerMe
Pay for the account
The beer isn't purchased
The beer is rated negatively
'Acquire consumer preferences'
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
Be a business
Have an account with BeerMe
Pay for the account
The beer doesn't sell well
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.
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.
"Explore By Flavor"
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.
None, this feature will be available to all users to encourage them to adopt our website.
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.
exceptions, user cancels, or goes back to update)
These are the 2 main features of our platform:
GroupRatings is a no-go.
BeerMe: Beer recommendation, rating, and filtering service.
No, not yet
Brainstormed with my colleagues to come up with our new idea (Beer Recommendation and Rating system)
Start setting up the database and maybe start designing a few tables.
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
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.
I couldn't get it to upload here. So I have put them on google drive. Here is a link to it:
https://drive.google.com/open?id=1-0SjBew-ig4k4YdxJ0j8lNMWFLfa8J-c
And here is our previous lab deliverable test #80
Learn the technology, follow courses online, and set up a dummy website to mess around with.
Dummy website contains basic outline of features we will be using for our own project, "dumbed-down" practice version.
Large
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.
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.
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
Postconditions
The user tries the new style.
Alternative Paths
The user is not suggested any new styles.
The user is not suggested any styles.
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.
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
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
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.
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
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
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.
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
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
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.
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.
“React JS Crash Course” by Traversy Media
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.
Satisfaction: curating a personalized list of beer recommendations keeps users coming back to this site to discover new tastes specific to their preferences.
"For You"
View a personalized list of beer styles based on ratings of other users with similar tastes.
Must have an account with saved ratings.
A curated list of beer styles will be available on the "For You" page.
As a BeerMe user, I want to get rid of advertisements, so that I can have an uninterrupted experience exploring the world of beer.
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.
Name: "Purchasing a MemBEERship"
Description: Guide the user to purchase the paid membership
Preconditions: User needs to be registered
Basic Course of Action:
Postconditions: Having purchased a MemBEERship, the user now has access to a seamless ad-free experience on our websites.
Alternatives Paths:
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
Create a project in AdobeXD or Balsamique and have 3 designs, one for each page.
Large
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
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.
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.
-- Am I blocked?
Not currently.
-- What I did.
Talked through and worked out a viable team project that would be approved
-- What I plan to do next week.
Become acquainted with Hibernate Framework https://javabeginnerstutorial.com/hibernate/hibernate-framework-basic/
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.
In the slides for setting up the repo, I mention how to create the repo. I need you all to rename so I know which section and team you all are in for grading.
Find and learn about the Testing Framework in C#
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.
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.
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.
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
No, the beginning of this project has few-to-zero blockers.
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.
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.
I couldn't find your wireframes. Your storyboards looked good, especially the first one. Total score: 70
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
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.