teaching machines

CS 347: Project 2 – Web Service – due October 28

October 12, 2021 by . Filed under fall-2021, specifications, webdev.

In this second project, you will create a web service that will be consumed by a React client, which you will develop as part of the third project.

Your project must meet the following expectations:

  1. Your service will not manage a to-do list. This is overdone. Come up with something interesting and original.
  2. You will store your app’s data long-term in an SQL-based relational database like MySQL. There’s nothing wrong with NoSQL databases like MongoDB, but they are intentionally outlawed for this project in order to align our focus and to give you more experience with relational databases. Though you will use a relational database, your database need not have multiple tables.
  3. You will provide an Express-based web service for interacting with the database.
  4. Your web service will be available via https://project2.YOUR-DOMAIN-NAME:8443/.
  5. The endpoints of the web service and any parameters must be appropriately named.
  6. The web service must send and receive complex data as JSON.
  7. The full spectrum of CRUD operations must be supported.
  8. The database must only be directly accessible from within your droplet, and not from outside. Use ufw to block all ports but the ones you need for SSH and your allowed web servers.
  9. You will create an Nginx server that allows global, encrypted access to your web service.
  10. The web service must support cross-origin resource sharing using custom middleware and an options wildcard endpoint.
  11. Your web service must be started using a process manager like pm2 so that it stays running.
  12. Your service must be stored in a Git repository that you have shared with your instructor. On GitHub, GitLab, and Bitbucket, share with the user twodee.
  13. Your database’s creation and schema scripts must be included in your repository. Passwords must not be included.
  14. Your Git repository should show a steady flow of commits over the course of the project. Committing and pushing should happen steadily, after each work session, and not just right before the due date.
  15. Have your service respond to https://project2.YOUR-DOMAIN-NAME:8443/report.html by sending back an HTML page with brief report containing an itemized breakdown of how you believe you have met the expectations listed above.