ITECH3108 Dynamic Web Programming
Assignment 2 - Raccoon Guide
Overview
For this assessment task, you will design, implement, and debug a full-stack web application, creating both a back-end API and appropriate front-end.
Timelines and Expectations
Percentage value of task: 30%
Due: Refer to Course Description
Learning Outcomes Assessed
The following course learning outcomes are assessed by completing this assessment:
K2. Contrast the capabilities and limitations of client-side and server-side web code
K3. Detect opportunities for increasing security and privacy of web applications
S1. Develop client/server web applications using client-side and server-side code
S2. Connect to and manipulate a database management system programmatically using server-side
code
S3. Design and implement a web-based Application Programming Interface (API)
A1. Design, develop, test, and debug client/server web applications to provided specifications
Assessment Details
For this assignment, you will build upon skills acquired through the course and completion of prior assignment work to develop Raccoon Guide, an online link sharing site for raccoon enthusiasts to gather and make friends.
The raccoon link sharing site has the following functional requirements:
Visitors (i.e. members of the public) can sign up to become a Member, supplying a username and
password;
Once signed up, members can add Links that they have found, with a title and a description;
Both visitors and members can see a global list of Links (the “front page”);
Members can give a rating to each link - it is up to you to decide what form this rating takes. A single
member can only rate any given link once;
The front page must show some kind of aggregate rating for each link, and should be sortable by Most
Recent or Highest Rated;
Members can view a list of links they have given a positive rating (ie favourites);
Members gain Raccoon Points if people rate their links positively, and lose Raccoon Points if people
rate their links negatively; and
Members can choose to hide particular links, without affecting the rating.
Raccoon Guide has the following non-functional requirements:
The site must be structured as an HTML front-end with a RESTful API back-end; Compared to your
previous assignment, it’s ok to have multiple HTML pages, and a mix of dynamically-generated HTML and
API-based functionality;
Apply some very basic visual design that will be attractive to raccoon enthusiasts;
Links in the front page or favourites page should display with the name and Raccoon Points of the
member who submitted it;
At minimum, the following functions, if implemented, must use a RESTful API approach, without whole-
page reloads at the client:
Posting a new link Rating a link Hiding a link
The API must be protected from unauthorized use - that is, members should not be able to rate links on
behalf of other users via the API, for example;
Links, ratings and member information must be saved in a relational database; and
Passwords must be securely stored (use Argon2 or bcrypt at minimum, not plain text or MD5)
Database
Include enough initial data to be an effective demonstration of your site – at least 3 users, 5 links, and 10 ratings. At least one link should have no ratings at all. You may choose to use PostgreSQL (as covered in course materials) or SQLite as your database backend.
If you choose to use PostgreSQL, include an SQL script that will generate your database with your
assignment submission. Such a script should also create the database. Please name your database
ITECH3108_30395692_a2.
If you choose to use SQLite, include your SQLite file in your submission.
Include this data as part of your written report, including a usable password for at least one user.
(It's ok if multiple users have the same password)
Report
Include in your submission a report containing:
A brief description of your assignment architecture, including a list of URL patterns used in your API;
A statement indicating which features of the assignment you completed;
A statement indicating what help you received, if any, from outside sources. Include this statement even
if you completed the assignment entirely on your own. You do not need to acknowledge ITECH3108
course materials.
If you include the creative works of others in your database (existing text), acknowledge those sources appropriately.
Hints
This assignment requires you to demonstrate complex problem-solving skills; minimal guidance on the structure of your solution will be provided in this assignment specification.
Your database design, API design, back-end and front-end software architecture are entirely up to you, supported by lecture and lab activities. You can design how Raccoon Points work. Enjoy and/or fear the freedom!
You are free to discuss the architecture of your solution with your peers, as long as you acknowledge them
in your report. Under no circumstances share code solutions.
Bonus optional fun challenge activity 1 - Better Average Ratings
Sorting by ratings is often done using an average rating. Is a link with just one positive review and no negatives better than one with 50 positive reviews but one negative? Using an average rating suggests yes!
Bonus optional task: Solve the aforementioned problem so that the ratings take into account the uncertainty around review scores. You might consider so-called Bayesian Average Ratings. Explain your approach in the report.
There are insufficient marks allocated to this task, it's not based on any course materials, and is just something exciting you can try.
It is possible to attain full marks for this assignment without completing this challenge task.
Bonus optional task: In addition to your regular ("vanilla") JS front-end, reimplement your front end using one of these three popular front-end frameworks:
Svelte - https://svelte.dev/ Vue.js - https://vuejs.org/ React - https://reactjs.org/
Write a brief comparison in your report.
Again, there are insufficient marks allocated to this task, and there is no lecture support.
It is possible to attain full marks for this assignment without completing this challenge task.
Further details Documentation
Include a written report containing:
A list of parts of the assignment you have completed or not completed (a statement of completion).
Details of specific assistance you received from people other than your lecturer or tutor, and the names
of those assisting (a statement of assistance).
Anything interesting or cool you'd like to draw your marker's attention to (a statement of awesomeness).
Assignment support
This assignment is supported by the first 10 weeks of lectures and labs. Work on the assignment should be spread over several weeks after the relevant lab has been mastered.
Submission
All files should be submitted to Moodle by the due date and time.
To be eligible for assessment, submissions must include an Excel spreadsheet (or spreadsheets) containing the calculations for each task that is included in the assignment report. Each task in the spreadsheet (or spreadsheets) must be clearly identified.
Marking Criteria/Rubric
Refer to the attached marking guide.