There are millions of websites that utilise SPAs in part of, or all of their web applications.
The assignment intends to teach students to build a simple SPA which can fetch dynamic data from a HTTP/S API. Your task will be to provide an implemention of an SPA that can provide a number of key features.
Some of the skills/concepts this assignment aims to test (and build upon):
- Simple event handling (buttons)
- Advanced Mouse Events (Swipe)
- Fetching data from an API
- Infinite scroll
- CSS Animations
- Web Workers
- Push Notifications (Polling)
- Offline Support
- Routing (URL fragment based routing)
The backend server will be where you’ll be getting your data. Don’t touch the code in the backend; although we’ve provided the source, it’s meant to be a black box. Final testing will be done with our own backend. Use the instructions provided in the backend/README.md to get it started.
For the full docs on the API, start the backend server and navigate to the root (localhost:5000). You’ll see all the endpoints, descriptions and expected responses.
A Working Product
Clone the gitlab repository using the instructions below. It has a code, full documentation, and a working server you’ll need for developing your frontend application.
Please read the relevant docs for setup in the folders backend/ and frontend/ of the provided repository. Each folder outlines basic steps to get started. There are also some comments provided in the frontend source code.
Level 0 focuses on the basic user interface and interaction building of the site. There is no need to implement any integration with the backend for this level.
It is a requirement of the assignment that when you work on the assignment for more than a few minutes you push the work to gitlab.cse.unsw.edu(see above).
You may use small amounts (< 10 lines) of general purpose code (not specific to the assignment) obtained from a site such as Stack Overflow or other publically available resources. You should attribute clearly the source of this code in a comment with it.
You can not otherwise use code written by another person.
Do not use NPM to install libraries other than as indicated in the specifcation.
You are permitted to use CSS from external sources as long as it properly attributed.
For example, you are permitted to use the popular Bootstrap CSS framework.
This is an individual assignment. The work you submit must be your own work and only your work apart from the exception above. Joint work is not permitted.
You should follow discussion about the assignment in the course forum. All questions about the assignment should be posted there unless they concern your private circumstances. This allows all students to see all answers to questions.
Attribution of Work
This is an individual assignment. The work you submit must be your own work and only your work apart from any exceptions explicitly included in the assignment specification above.
Joint work is not permitted.
You are only permitted to request help with the assignment in the course forum, help sessions or from course lecturers or tutors.
Do not provide or show your assignment work to any other person (including by posting it on the forum) apart from the teaching staff of COMP041.
The work you submit must otherwise be entirely your own work. Submission of work partially or completely derived from any other person or jointly written with any other person is not permitted. The penalties for such an offence may include negative marks, automatic failure of the course and possibly other academic discipline. Assignment submissions will be examined both automatically and manually for such submissions.
We are required to inform scholarship authorities if students holding scholarships are involved in an incident of plagiarism or other misconduct, and this may result in a loss of the scholarship.
Plagiarism or other misconduct can also result in loss of student visas.
If you knowingly provide or show your assignment work to another person for any reason, and work derived from it is submitted you may be penalized, even if the work was submitted without your knowledge or consent. This may apply even if your work is submitted by a third party unknown to you.
Note, you will not be penalized if your work is taken without your consent or knowledge.