use in developing the rest of the projects

Project Part 1

This is your first real project for the course. In it, you will develop the API that you use in developing the rest of the projects. You will be using a JavaScript framework to build a web backend for an image-sharing website. In particular, you’re designing and implementing a REST endpoint to maintain your website’s state.

Requirements

There are two principle pieces of this assignment. The first is a specification of your API. The second is the implementation of the API itself that I will test. Both of these are important steps in the process, and will be graded.

The core role of your API is to provide access to the data in a Couchbase backend. I will submit a merge request to your project to add Couchbase as a dependency to the project and add the mock database. The mock database will allow us to test your code without installing a Couchbase server. I expect the data to be stored in Couchbase using the following data model:

Bucket “x440_user_data” – default collection

ID: user_id

Document:

“username”: string,

“original_posts”: [string]. // each string is a post id
“commented_on_posts”: [string] // each string is a post id



Bucket “x440_post_data” – default collection
ID: post_id
Document:

“title”: string,
“author_id”: string,
“create_time”: string, //RFC 3339 Timestamp, UTC
“caption”: string,

“mimetype”: string, // mimetype for corresponding image file
“comments”: [

“comment”: string,
“author_id”: string,
“create_time”: string //RFC 3339 Timestamp, UTC

]


Bucket “x440_images” – default collection

ID: post_id

Document:
Raw bytes of image.

Your API design must provide Create and Read access to this data. It must also follow REST principles, and be implemented as JSON (or image) over HTTP, using the correct HTTP verbs and response codes. In your design document, you may assume all requests will be well formed JSON over HTTP. This design document should be in a Markdown file in the root of the repository.

The second part of the project is implementing your API. I will give you a “hello world” example of a single endpoint for the server we use in class. Your implementation is dependent upon your definition in the previous part. It is important that you faithfully implement your described API, since my testing will be based solely on how you describe your interface.

Restrictions

Please do not use any outside JavaScript libraries, except the ones I install in your npm project. Also, please conform to the academic integrity policy of the course.

Submitting

To submit the project, create a new release in GitLab with name like “project1-24-08-2020” (instructions available at https://docs.gitlab.com/ee/user/project/releases/index.html#create-a-release) and email me that you would like it graded. You may do this up to two times a week. I will do my best to get back to you with a graded rubric by the end of the next workday. This project, like all other projects, is due Friday, December 4, 2020 at noon. However, I recommend that you finish this within the first few weeks of its availability. You may find it useful to submit after the design document is finished to get early feedback on your API design before you believe you have finished the implementation.

Rubric

Points Requirement  Comment
API Definition Requirements
 __/3 Language and formatting of definition is clear  
 __/1 Definition is Stateless  
 __/1 Definition is Cacheable  
 __/1 Definition includes resource identification in requests  
 __/1 API is navigable (HATEOAS)  
 __/1 Correct use of HTTP verbs  
 __/1 Separation of collection and member resources  
 __/3 Endpoints for post make all data visible and creatable  
 __/3 Endpoints for user make all data visible and creatable  
Implementation Requirements
 __/3 Endpoints for user make all data visible and creatable  
 __/3 Endpoints for post make all data visible and creatable  
 __/1 API handles malformed JSON requests properly  
 __/1 API handles requests to missing resources properly  
 __/1 API handles requests to unknown endpoints  
 __/2 API can serve multiple clients concurrently  
Documentation Requirements
__/1 Project runs with `git pull`, `npm install`, `npm start`, and visiting `https://localhost:8888` in the browser
__/1 README.md explains what source files do and source files contain meaningful comments
__/28 __/28 * 7 = ____
HelpHub
Calculate your paper price
Pages (550 words)
Approximate price: -

Why Choose HelpHub

HelpHub

Quality Researched Papers

We always make sure that writers follow all your instructions precisely. You can choose your academic level: high school, college/university or professional, and we will assign a writer who has a respective degree.

HelpHub

Qualified Writers

We have hired a team of professional writers experienced in academic and business writing. Most of them are native speakers and PhD holders able to take care of any assignment you need help with.

StudyAcer

Unlimited Revisions

If you think we missed something, send your order for a free revision. You have 10 days to submit the order for review after you have received the final document. You can do this yourself after logging into your personal account.

StudyAcer

On Time Delivery

All papers are always delivered on time. In case we need more time to master your paper, we may contact you regarding the deadline extension. We will always strive to deliver on time.

StudyAcer

Original & Confidential

We use several writing tools checks to ensure that all documents you receive are free from plagiarism. Our editors carefully review all quotations in the text.

StudyAcer

24/7 Customer Support

Our support agents are available 24 hours a day 7 days a week and committed to providing you with the best customer experience. Get in touch whenever you need any assistance.

Try it now!

Calculate the price of your order

Total price:
$0.00

How it works?

Follow these simple steps to get your paper done

Help Hub

Place your order

Fill in the order form and provide all details of your assignment.

Help Hub

Proceed with the payment

Choose the payment system that suits you most.

Help Hub

Receive the final file

Once your paper is ready, we will email it to you.

HelpHub Writing Services

No need to work on essay at night. Sleep tight, we will cover your back. We offer all kinds of essay writing services.

HelpHub HelpHub

Essays

Essay Writing Service

No matter what kind of academic paper you need and how urgent you need it, you are welcome to choose your academic level and the type of your paper at an affordable price. We take care of all your paper needs and give a 24/7 customer care support system.

HelpHub HelpHub

Admissions

Admission Essays

An admission essay is an essay or other written statement by a candidate, often a potential student enrolling in a college, university, or graduate school. You can be rest assurred that through our service we will write the best admission essay for you.

HelpHub HelpHub

Editing

Editing Support

Our academic writers and editors make the necessary changes to your paper so that it is polished. We also format your document by correctly quoting the sources and creating reference lists in the formats APA, Harvard, MLA, Chicago / Turabian.

HelpHub HelpHub

Revision

Revision Support

If you think your paper could be improved, you can request a review. In this case, your paper will be checked by the writer or assigned to an editor. You can use this option as many times as you see fit. This is free because we want you to be completely satisfied.