No description, website, or topics provided.
Clone or download
Latest commit cbde752 Nov 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information. Update Nov 20, 2019

Project 2
Node / Express / SQL API


This second project is your first foray into building your own API! You'll be building a Node/Express/SQL API from the ground up and writing the documentation explaining to other developers how they can use your API.

You get to decide what you want to build - as long as it meets the technical requirements outlined below.

You will be working individually for this project. You'll be creating the documentation and coding the app yourself. However, you will have access to one-on-one help sessions with your instructors as you build your app.

Planning & Presentation Requirements


  • A Trello board with:

    Development Tasks, each moving from left to right in the following three lists in your board:

    1. Ice Box (stretch goals, "nice-to-have" features that are not critical for the MVP, and features that you'll prioritize at the end of the project)
    2. Current/MVP (the minimum features of that make your API usable and meet the technical requirements of the project)
    3. Completed (a list that you update as complete items from the other two lists)

    NOTE: Development Tasks should break your project into manageable pieces. For example, you may write one task like so: "Create 'x' table" OR "Insert data into 'x' table" OR "Add GET route to return all pokemon at /api/pokemon"

    ☐ An ERD showing the attributes of each model and the associations between them. Here's a YouTube video to show you how.

Presentation - Next Tuesday:

You will have a maximum of 10 minutes to present your project following these guidelines:

  1. Introduce the Project:

    ☐ Intro your API by paraphrasing the main description in your documentation.

  2. Demonstrate the Project:

    ☐ Launch the API.

    ☐ Demonstrate each endpoint in your API and explain the features of your app.

    ☐ Be sure to demo full-CRUD data operations.

  3. Show/discuss your code:

    ☐ Show your SQL tables.

    ☐ Show the code behind your functionality (choose a function you found challenging or one that does something interesting).

  4. Share the experience:

    ☐ What was your biggest challenge?

    ☐ What are your key learnings/takeaways?

  5. Q & A + Feedback

Technical Requirements

Your App Must:

Have at least 2 data entities (eg. in a Pokemon API, Trainers and Pokemon). One entity that represents the main functional idea for your app and another that relates to it.

Have at least 1 Many-to-Many relationship between two tables

☐ Have complete CRUD data operations for all data entities. For example, in our Pokemon API example, a user should be able to Create, Read, Update, and Delete Trainers and Pokemon.

☐ Return valid status codes and JSON as a response to requests made from curl or the Postman app.

☐ Be documented such that another developer can easily make requests to each of your endpoints and know what to expect back as a response - in other words, it should be usable by others.

Optionally, Your App May:

☐ Include an HTML/CSS/JS homepage and documentation page.

☐ Include more than the minimum number of data entities.

Necessary Deliverables

A working Express/Node/SQL API that meets or exceeds the above technical requirements, built by you, and fully documented.

Documentation in the file with these sections:

<Your API's title>: A description of your API and the entities you're building.

Table of Contents: Showing a user the different sections of your documentation.

The Docs: Each request path, that request's HTTP verb, and the expected response. See the pokeapi docs for a good example of the structure we're looking for.

Technologies Used: List of the technologies used, e.g., Express, Node, SQL...

Next Steps: Planned future enhancements (icebox items).

Note: Don't underestimate the value of well crafted documentation. Documentation introduces your API to prospective employers and forms their first impression of your work! It's also a requirement of this project.

Frequent commits dating back to the very beginning of the project. Commit messages should be in the present tense, e.g., "Adds /api/cars route" instead of "Added a route for /api/cars".

Suggested Ways to Get Started

  • Discuss your app idea with an instructor to get their feedback before you dive too deep into planning the data entities and their relationships.
  • Remember to keep things small and focus on the MVP – feature creep can doom a project!
  • Use your reference app from the SQL CRUD lesson as a reference

Project Idea Guidance

Coming up with your own API can seem daunting at first but choosing to model data you know or are passionate about is a good first step.

Do Not Do Non-CRUD Applications Such As:

  • Games
  • Portfolio, or presentational pages
  • Marketing or content oriented websites

Good Examples

Some of the best apps are apps that track or manage things of personal interest to you:

  • If you like hiking, you could track hiking trails and their locations
  • If you like camping, track campgrounds, their campsites, and some of the features of individual sites
  • If you like music, track genres, artists, and their tracks
  • If you like DnD, track campaigns, stories, and characters
  • If you like theatre, build an API for theatre genres and associated plays
  • If you like TV and Movies, track seasons and episodes or genres and titles

Project Feedback + Evaluation

  • Your instructors will be evaluating your project during your demonstration as well as reviewing the code in your repo.
  • If your instructors determine that your project does not meet the above requirements (denoted using checkboxes), you will be given 3 calendar days to address the deficiencies identified. However, be aware that there is only a single opportunity to resubmit a project during the course. For example, if you already resubmitted Project 1, you will not be permitted to resubmit this project.
  • Immediately after your presentation, your instructor may provide you with feedback that will benefit your project and perhaps the projects of other students as well.
  • If there is a specific section of code that you would like an instructor to provide additional feedback, please ask!

Requirements Rubric

Requirement Incomplete Does Not Meet Expectations Meets Expectations Exceeds Expectations
At least 2 data entities
At least 2 tables with Many:Many Relationships
Full CRUD operations for each entity
Returns valid status codes and JSON in the response
Documentation covers all functionality in the app