Dynamic Web Programming

127 views 7:26 am 0 Comments July 5, 2023

Assignment 2 – Nail Polish VoiceMarketing Research and Data Analysis

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.

Important: This assignment specification is generated just for you, 30375857. Do not distribute this specification. If your personal specification is made publicly available online, academic misconduct charges may be applied.

Validation code efd10

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 Nail Polish Voice, an online link sharing site for nail polish enthusiasts to gather and make friends.

The nail polish 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 Polish Points if people rate their links positively, and lose Polish Points if people rate their links negatively; and

Members can choose to hide particular links, without affecting the rating.

Nail Polish Voice 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 nail polish enthusiasts;

Links in the front page or favourites page should display with the name and Polish 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_30375857_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 Polish 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 fun challenge activity 2 – Svelte, Vue, or React

There are many, many ways to write front-end web applications. Explore one!

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.

Tags: , , , , , , ,