Reference no: EM132285833
Project Description -
For this project you are required to build a multi-user web application. The application should be written using HTML, CSS, Flask, AJAX, JQuery, and Bootstrap. The application should perform some kind of voting or ranking activity (social choice), based on the inputs from users. The context and the type of social choice mechanism is up to you.
Example contexts you could use are:
- Music/Movie Polls (e.g. find the best anime movie of the 21st century)
- Ranking recipes (e.g. find the best lassangne recipe on the web).
- Ranking the best fishing/surfing spots in Perth
The types of social choice mechanism you could use are
- First past the post voting
- Preferential voting
- Elo rankings (as used in chess leaderboards)
- Page rank type graph algorithms
Think carefully about the design of the application. It should be:
- Useful, in that it answers an interesting question in a meaningful way
- Reliable, so that it is not frustraing to use, and can not be easily manipulated
- Intuitive, so that it is easy for a user to contribute and understand the results
- Engaging, so that it looks good and presents sufficient context for the questions being asked.
The web application should be styled to be interesting and engaging for a user in the selected context. It should offer several views including:
1. An administrator view, that can add and delete polls, delete responses, and add and delete users. (Users may be anonymous, if it suits the application, but there will still be non-anonymous admin users).
2. A user view that can view polls and current standings, and submit responses to polls.
3. A general view that can just view polls
In addition to the web application, you should create a private GitHub project that includes a readme describing
4. The purpose of the web application, explaining both the context and the social choice mechanism used.
5. The architecture of the web application
6. Describe how to launch the web application.
7. Describe some unit tests for the web application, and how to run them.
8. Include commit logs, showing contributions and review from both contributing students
Getting Started: Select Website Purpose and Style
Criteria: Presentation
9. The user should be able to enter all necessary data required by the application (although this need not be stored). This data should be sufficient to run the algorithm, and validated on the client side.
10. The webpage must be implemented using HTML5, CSS and Javascript (or a subset thereof).
11. All resources used (inlcuding pictures, javascript libraries, css) must be full referenced.
12. The website must use HTML5, and CSS. The HTML and CSS must pass this validator.
13. The website must work on chrome, firefox and internet explorer
14. The website should have at least three pages/sections: one promoting the theme (and explaining how and why the ranking is done); one collecting user data and preferences; and one displaying the result of the polls.
15. There must be a consistent style (via css file) for all pages yet each page should be easily identifiable. There should be a navigation element, and a footer element displaying dynamic content including the time and last modified date.
Backend functionality -
The second part of the project is to develop a web application to fill in the functionality of your webpage.
The web application should be implemented using Flask (any additional libraries/modules require unit coordinator approval), and provide at least the following functionality:
1. A user account and login feature, (as a minimum for administrators)
2. The ability to propose new votes and/or condiadtes to be "ranked".
3. A method to vote or rank candidates.
4. A method to see current results.
Bonus marks will be available for the following types of features:
1. Reacting to other users events (a new task has been posted, or someone has proposed tasks to you...).
2. Graphical representations of results (e.g. histograms, maps etc).
3. And feel free to propose other types of features I can include here...
The second part of the project has the following deliverables:
1. A complete Flask application providing the functionality of the project. This should be submitted as a ziped git code repository including.
- a full readme.md, describing the design and development of the application, and giving instructions to launch on Heroku.
- all source code, with comments and attributions for any external libraries.
- a suitable software license document
The application should include an HTML5 website with the following pages (or functions):
- An adminstrator view, that can add and delete polls, delete responses, and add and delete users.
- A user view that can view polls and current standings, and submit responses to polls.
- A general view that can just view polls < li>Additionally, must provide a REST interface to the system.