305CDE Developing the Modern Web 2

305CDE

Developing the Modern Web 2

Assignment 1/1 (2015)

During the module you will learn how to use JavaScript to develop full-stack cloud- based web applications. In this assignment you are required to apply these skills to develop a simple API that uses third-party APIs plus a client to allow users to interact with it. The detailed brief can be found on page 2 of this document, the submission information on page 3 and the marking rubric can be found on page 4.

Deadline

The deadline for this assignment is Friday 18th December 2015 23:55. Resit

If you fail to achieve a grade of 40%+ in this assignment you will be required to complete the resit assignment which will be capped at 40%. This will cover a similar skill set and will be released on Monday 23rd May 2016. The deadline for submitting the resit coursework is Monday 27th June 2016.

Planning

This assignment will be challenging and will take considerable time to complete. You will be given time each week in your labs to both work on it and to ask any questions relating to this. It is vital that you don’t miss these sessions!

The assignment structure closely follows the weekly topics, make sure you start each step whilst the module content is still fresh.

Week 5

Intro to NodeJS

Write the business logic as CommonJS modules

Week 6

Building RESTful APIs

Start building the API to connect to the business logic

Week 7

Data Persistence

Build the database for the app connected to the business logic

Week 8

Testing and Deployment

Write unit tests for the business logic and acceptance tests for the API

Week 9

Intro to AngularJS

Start building the views and connect to the controllers with dummy data

Week 10

Services

Connect the controller to the API model and write acceptance tests for the UI

Week 11

Modules, Plugins and Directives

Modularise the code and write unit tests for the modules

1

Assignment Brief

You need to develop an API plus a web app that will interact with it. The exact topic you choose is entirely up to you however you should ensure that there is data available for you to use via a public API. Here are some examples to get you started however you are encouraged to try to find something different. For the higher grades you will need to combine multiple APIs to derive your data (mashup).

• Books: https://developers.google.com/books/
• Weather: http://openweathermap.org/api
• Recipes: http://api.bigoven.com
• Travel: https://developers.google.com/maps/documentation/directions/ • Tourism: https://developers.google.com/places/webservice/search

Architecture

The diagram below may help you understand the requirements. Notice that the client interacts only with your API and that this API should interact with both the third-party API(s)s and with your data persistence solution.

CLIENT

API

THIRD-PARTY API

DATA PERSISTENCE

Features

There is minimum feature set that you should implement in order to pass the assignment however for a higher grade you would be expected to go far beyond this:

  1. users should be able to search for items without the need to register or log in
  2. to access any further features, they should be able to register for an account with appropriate validation such as email confirmation.
  3. logged in users should be able to choose from their search results to create a ‘favourites’ list
  4. they should be able to ‘organise’ this list (eg. add notes, delete items, etc.)

2

Data

Your API will search the public APIs to obtain relevant data however any results should be persisted within your API. How you persist this data is entirely up to you however you will need to justify your choice(s) based on the features available. Options include persisting the data to the filesystem or using an appropriate database (SQL, document or graph). You should carefully select which data you will be saving from the third-party API(s) and only display and persist this. You will lose marks if you persist everything you get back from the third-party API(s).

Programming Language

This assignment is designed to expose you to a range of tools and frameworks used by industry. On the server you should be using the NodeJS framework and may use any appropriate packages however you will need to justify your choices. You must not use the Express package under any circumstances. In the client you are required to use the AngularJS framework plus any supported modules, justifying your choices. Please note that you will get a zero grade if you choose other languages.

3

Submission

This assignment requires you to demonstrate the range of skills and knowledge required by industry and this is reflected in the coursework submission. You are required to submit three components (4 links).

  1. a link to your live API
  2. links to both your Git remotes (hosted on GitLab)
  3. a link to your reflective video (hosted on YouTube)

Live API

You need to deploy your latest API release on a cloud service such as Heroku so your lecturers can test its functionality. Make sure it is deployed and functional before the assignment deadline and that the deployed version matches the source code you submit (see below).

Source Code

Managing source code is a vital skill if you are to become a successful developer and for this assignment you are required to track your API code and your client code in separate Git repositories and you will be marked on how efficiently you organise this. You will be required to submit links to both your Git remotes hosted on GitLab. Both repositories should include full documentation available through the home page.

To ensure the code can be seen by your lecturers make sure you give them reporter permissions. Their usernames are:

      marktyers
      c0lin

Video

Once you have completed the API and the client you need to explain how your API and client work. Rather than writing a report you are required to record a short screencast of 8 min or less. This should cover all the points in the grading criteria and demonstrate your skills and knowledge of the subject. After uploading you must change the video permissions from private to unlisted. This will allow the lecturers to access the video via the link but prevent it being publicly searchable.

Make sure you separately demonstrate the API (using cURL or Postman) and the client and ensure you justify your choices of language constructs and architecture.

4