6003CEM Web API Development Coursework 2 of 2 - API Portfolio
Submission arrangement: Aula, CU GitHub, Codio File types and method of recording:
• Codio box: runnable API/client code and associated documentation.
• CU GitHub repository: all versioned code.
• Aula (HandIn): API demo video, URL links to CU GitHub repository and Codio box, short written summary of your RESTful API (100-200 words).
Module Learning Outcomes (LOs) Assessed:
Learning Outcome
1 Demonstrate systematic knowledge of the current state of the art in web technologies being deployed by mainstream businesses to create Web APIs.
3 Scope, design and implement a simple Web API to solve a given problem.
5 Understand and implement Web API security and authentication.
Assessment Task
You work for a company that specialises in providing API-backed web applications to small and medium sized enterprises (SMEs) and charities. The company has several clients and a large backlog of projects which need to be completed.
You have been asked to complete ONE project either from the existing client list (below) to reduce the backlog or a demo project of your own design, to add to your company's sales demo portfolio.
To complete the project you select, your manager has specified you do the following subtasks:
- Design an industry standard OpenAPI Specification (OAS) document that describes and fully documents your API.
- Build a secure RESTful API using Node JS libraries, to implement your OAS design.
- Design and implement automated API endpoint tests, to verify your API works according to specification.
- Build a functional and secure web client single page application (SPA) for the API OR integrate one or more external third-party API(s) data into your own (e.g., choosing from those available at https://github.com/public-apis/public-apis).
- Showcase your API and client/integration in a demonstration video.
Your developed API should be populated with realistic user/resource/collection data to show it working in the demonstration and/or in the automated tests.
Marks Breakdown
For an explanation of how the marks are divided between the subtasks, see the grading rubric at the end of this document.
Project Backlog
Choose one of the following API services to develop for your project or propose your own using the form below. Some example REST resources are provided after the service names, but these are just suggestions: it is up to you to decide which resources/collections your RESTful API will provide and manage.
NB: as this is an individual portfolio project assessment, students submitting the same project will be carefully compared for similarity/possible plagiarism. Please do not share code with your classmates.
- Social media platform API (e.g. users, posts, comments, likes)
- E-commerce platform API (e.g. products, categories, orders, payment)
- Calendar and scheduling API (e.g. events, reminders, attendees)
- Weather forecast API (e.g. current weather, forecast, alerts)
- News aggregator API (e.g. sources, articles, categories)
- Translation API (e.g. text, speech, languages)
- Music streaming API (e.g. songs, albums, artists, playlists)
- Recipe search and management API (e.g. recipes, ingredients, meal plans)
- Fitness and wellness tracking API (e.g. exercise, nutrition, progress)
- Public transportation schedule and route API (e.g. buses, trains, stops)
- Movie and TV show database API (e.g. titles, cast, reviews)
- Real estate listings API (e.g. properties, agents, locations)
- Job listing and application API (e.g. jobs, resumes, applications)
- Book and literature database API (e.g. books, authors, reviews)
- Currency exchange rate API (e.g. rates, conversion)
- Public data and statistics API (e.g. GDP, population, crime)
- Image recognition and tagging API (e.g. image, labels, description)
- Video hosting and sharing API (e.g. videos, channels, comments)
- Geolocation and mapping API (e.g. maps, routes, points of interest)
- Gaming platform API (e.g. games, scores, leaderboards)
- OR your own API service idea (must be proposed to, and confirmed by, Module Leader using this form): Web API Development – Portfolio Coursework: API Service Proposal
The resources managed by your REST API should have appropriate CRUD endpoints and you should aim to include middleware to ensure that appropriately structured JSON data is used in the relevant requests and responses, and to ensure that the API is secure (authentication and authorisation).
Realistic example data should be populated into all your API's resources for the purposes of demonstration and testing.
Portfolio Submission Process
The following must be submitted for this assessment.
1. Codio
- Use the Web API Development environment set up for Coursework on https://codio.co.uk to complete all your assessed work.
- Ensure you select "Mark as Completed" on the Codio assessment when you are ready to submit your API. This sets the Codio environment to "read only". Do this before the deadline. See
https://docs.codio.com/students/courses/complete-assignment.html
- Note: Codio features including its Plagiarism Checker and Code Playback are used to help ensure assessment integrity.
2. CU GitHub
• Commit and push all code and documentation to a private repository in the 6003CEM organisation on Coventry University GitHub
o Do NOT use github.com for your submission - it will not be marked, and you will receive a zero grade.
o Do NOT use personal repositories, as these are not accessible to all module staff. The repository you submit MUST be in the 6003CEM organisation.
o You will be added as a member of the organisation during the semester.
3. Aula HandIn
• Upload a maximum-10-minute video demonstration of your API, API client (if implemented),
API integration (if implemented), API documentation, and API endpoint tests.
o API endpoint functionality should be demonstrated on screen using Postman or a similar HTTP request-response GUI.
o API client (i.e., SPA) functionality (if present) should be demonstrated in a browser. o API third-party integration functionality (if present) should be demonstrated using
Postman or a similar HTTP request-response GUI to confirm your own API is integrating
the correct third-party data.
o API documentation and code documentation should be shown in a browser.
o API tests should be demonstrated by running them on screen and showing their output
o URL links to your Codio environment and CU GitHub repository.
o A short (100-200 words) written summary of your RESTful API service.
Constraints
Backend
All the backend services you develop should provide a Node JS based RESTful API. This must communicate with your application using the JSON data format by default, but you can provide other representations in addition, if you wish.
Database
Similarly, the choice of database integration on the backend is up to you: options include MySQL, SQLite, MongoDB, and others.
Frontend
If you choose to build a web client (Task 4 above) then it should be a single page application (SPA) web client built with a framework such as React JS, Vue, Angular, etc.. In terms of visual design the CSS framework you choose, if you decide to use one, is up to you: options include React Bootstrap, Ant Design, Material UI, and others. Note that React JS and Ant Design are used in the module demonstrations.
Third-party API Integration(s)
If you choose to build a third-party API integration(s) (Task 4 above) then the external data sources chosen are up to you but should be related to your API's functionality. For example, integrating a weather forecasting API into an events API service makes sense, but integrating it into a movie review API service less so. There are several listings of public APIs available to help you discover useful ones. For example, https://github.com/public-apis/public-apis.
If in doubt as to the suitability of a particular framework, Node module, or DBMS please ask the Module Leader first.
Feedback
The assignment will be assessed using the grading rubric. For each criteria the rubric is cumulative which means you need to achieve the lower grades before you can be awarded the higher ones. When the marks are released, you will be provided with:
- A breakdown of marks you received for each part of the rubric.
- Feedback explaining this decision indicating why you missed the higher grade.