/INFO-212

Semester assignment

Primary LanguagePython

Brewmapp

This application was developed as an assignment in INFO212 System development (systemutvikling) during autumn 2016.
The goal of the course was to document the development of a product we came up with ourselves, including planing, testing, designing etc. and we had to follow a propper development methodology. The product was a website that let the user search for any brewery in Norway and have them displayed on a map.The website has been taken down since we don't want to rent a VPS and domain for a school project we don't plan to further develop. The text below consists of a report including plans during the project.

Report

Project plan

Tasks to be done:
•[week 39] Create the main website
•[week 38] HTML
•[week 38] Info on the site
•[week 39] Navigation etc
•[week 41] Obtain data about breweries
•[week 40] Scrap the websites mentioned, or find other resources
•[week 41] Obtaining map
•[week 40] Import google maps to site
•[week 41] Fill with relevant data
•[week 41] Make relevant data click responsive
•[week 42] Piece everything together
•[week 42] User testing
•[week 43] Potential fixes
•[week 44] Finishing touches
•[week 47] Launch website

Background

Our plan is to make an interactive website with an overview of all the beer breweries in Norway and their locations. It will be marketed towards beer enthusiasts who takes an interest in beer and brands and how it’s made.

Objectives

Our objectives will be to make a simplistic, good looking, interactive, easy to use, effective to use and generally useful website. For this we need to increase our knowledge of HTML, CSS, PHP or Python and the use of API’s. We believe we can finish the project and make a good product.

Justification

The product we want to make is not a lifesaving product, but an entertaining and resourceful product. It can help people learn more about the different sorts of beers and brewery and how beer is made. Beer has been a luxury since the medieval times and most people appreciate beer and its luxury even more today, and the product we are making will give people a better connection and knowledge about the luxury.

Scope

To accomplish the project, we need to:

•Learn advanced CSS •Learn PHP and/or Python •Learn more about the use of maps and GPS •Learn more about the use of API’s •Learn more about beer •Host a website

Major milestones

A list of things you would like to accomplish during your project. i.e. dates for when you would like to have accomplished what, such as dates for PID, sprints, finished design, user testing, project report hand in etc.

•Obtain brewmapp domain. •Get breweries blessing •Finish the project •Get the site up and running

Constraints and assumptions

What possible constraints could you run into during the project? This could be things like a lack of knowledge or time. In addition, what assumptions related to the project are you making before starting the actual development?

Get ahold of an API containing breweries locations.

Be denied placing a brewery on a map (if they want to keep it a secret).

Resources/Technology

We are planning on using Git as a version control system for the coding part of the project in order to easier keep control on the progress, and to know who does what. Github, which we are using, is also a great way of communicating our current goals and possible issues that needs to be handled. Using a private repository we can keep the project hidden for uninvited members of the site.

The website will be hosted on a VPS, using a DBS such as either Postgresql or MySQL as DBS. The backend will be written in Python for rapid prototyping, along with the microframework Flask for the API parts of the project. The frontend will utilize Google Maps API along with Javascript/JQuery and HTML with bootstrap as the framework.

The data will be scrapped from a selection of sites. Untappd is a website aggregating beer usage, and beer amongst its users. They also let you add breweries and own beers. This a very good gold mine for getting out independent breweries we can use for our project. Another site is the ratebeer.com website. This is one of the older websites where beer enthusiasts rate and chat about beer. They also have an extensive collection of registered beers and breweries. They are a pretty good target to scrap for the data we need.

Another option is the “enhetsregisteret” from Brønnøysund. They collect all the businesses in Norway and classify them accordingly. There we can list all the registered breweries in Norway, with their organisation number and have a good overview of the organizations.

All of this can be accomplished with a wide array of languages. This can let us automate a lot of the work we need to fulfill the data requirements for the project. In theory we could make a map for the whole world. But to limit the project scope we will try and focus on Norwegian breweries.

Since we plan on using scrum, we will either try emulate a scrum board using github issues, or use Trello. We are not completely sure how we will organize this yet.

Major risks

The major risk of the project are the scrapping requirements. This could take some extensive work to accomplish in terms of the limited time we have, the knowledge about technology and language. Most of the group has used at least one of the technologies we need before, so we should be covered in terms of helping and supporting people that is not familiar with current technologies.

The next risk is having a OK design of the website. A quick and dirty website is not desired and we want it to be easy to use. Thus we need time to think about the design, and implement the design. Learning how to build dynamic and adapting websites could take some time, but we believe it should be doable for the time perspective.

Project organisation

The project structure could be looked at as a FOSS project. There is no client, and the users are the developers them self. The website should be usable for any beer enthusiast. Morten will be the scrum master and supervising the project as he has experience from larger projects.

We will be focusing on scrum for the project. Every issue should be assigned, tagged and kept track with. We have not yet decided between Github issues, as they integrate with the github workflow well, or an external website such as trello.

The communication channel will be distributed, so we will attempt to keep chatting with each other using IRC. We will have a weekly standup, and attempt 4 larger sprints during the project to work on issues.

Preliminary literature and resource review

The Art of Agile Development by James Shore, Shane Warden 1st edition

https://learnpythonthehardway.org/ is a nice way to learn python.

https://www.codecademy.com/ and http://www.w3schools.com/ For the HTML/SQL/CSS parts of the project