ITECH3108 Dynamic Web Programming
Assignment 2 – Nail Polish Voice
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.
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.
Feedback
Feedback will be supplied through Moodle. Authoritative marks will be published through fdlMarks
Academic Integrity
To submit your assessment task, you must indicate that you have read and understood, and comply with, the Federation University Australia Academic Integrity and Student Plagiarism policies and procedures
You must also agree that your work has not been outsourced, and is entirely your own except where work quoted is duly acknowledged. Additionally, you must agree that your work has not been submitted for assessment in any other course or program.
Marking Guide: Assignment 2
Feature | Criteria | Maximum | Obtained |
Core features | Sign-up with username and password | 3 | |
Submit a new link with title and description | 3 | ||
Front page / global list of links | 3 | ||
Ratings | Members can rate links | 2 | |
Aggregate ratings | 2 | ||
Favourites / positively rated links page | 2 | ||
Earning Points | 2 | ||
Hide links | 2 | ||
Non-functional requirements | API requires authentication | 2 | |
Passwords use appropriate hashing | 2 | ||
Links are displayed with submitter details | 1 | ||
Data is stored using a database | 2 | ||
Theme-appropriate (basic) design | 2 | ||
Report | Description of software/system architecture | 2 | |
Statement of completion (2 marks deducted if not included) | (-2) | ||
Statement of assistance (2 marks deducted if not included) | (-2) | ||
Appropriate use of English and referencing (up to 3 marks deducted) | (-3) | ||
Bonus optional task – Better Average Ratings | Meets specification, has documentation | (+2) | |
Bonus optional task – Front-end Framework | Meets specification, has documentation | (+2) | |
Quality of code (deductions!) | Layout, structure, indentation | (-2) | |
Appropriate and consistent naming scheme | (-2) | ||
Appropriate and accurate comments | (-1) | ||
No commented-out code remains in the source | (-1) | ||
Total: | 30 |
Get expert help for ITECH3108 Dynamic Web Programming and many more. 24X7 help, plag free solution. Order online now!