Project Two: Your First API




Overview

This second project is your first foray into building a full-stack application. You'll be building a Node/Express/MongoDB app from the ground up yourself. This would be the backend portion of a Modern MERN Stack App.

VIEWS AND VIEW ENGINES ARE NOT A PART OF THIS PROJECT

You will be working individually for this project;

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

Once you've decided what you will build, please contact your instructional team for approval of your idea and then begin working on the Planning & Presentation Requirements below. If its from the preapproved list no conversation is necessary




Planning & Presentation Requirements

  • To receive a passing grade on this project, you need to have turned in the following:
  • A Trello board or Github Project with:

    • User Stories, each moving from left to right in the following three lists in your board:
    • Ice Box
    • Current/MVP
    • Completed

User Stories must follow the following template: As a user, I want [feature], because [reason].

The reason is optional if it's blatantly obvious.

Click here for an example you can use for inspiration



Note: Prioritize your user stories within the Ice Box with your "wish list" stories at the bottom.

  • Wireframes of the main pages of functionality, e.g. Landing Page, Posts Index Page, Favorite Posts Page, Add Post Page, etc.
  • You don't have to build ANY FRONTEND, but your wireframes should make it clear what you would intend for the frontend to be based on the API create.
  • A Diagram showing the attributes of each model you used to create yourt API and the associations between the models.

mongoose-movies

  • A Readme that fully explains to a user how to do the following:
  • How to install this app on their local machine
  • What global installations they need and what files do they need to create that didn't come in the github repo
  • How to start the app in dev mode
  • How to make an api request in Postman (i.e what port, what url etc)
  • How to run tests
  • How to start the app without dev mode.

Finished Project Presentation

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

  1. Introduce the Project and Setup and install it:

    ☐ Intro your API by reviewing the README. ☐ Follow your own installation instructions in the README in a brand new fresh folder from scratch

  2. Demonstrate the Project Once Set Up: ☐ Show passing automated tests.

    ☐ Launch postman.

    ☐ Demonstrate Signing Up a User, Demonstrate Logging In A User, Demonstrate using a Token for authorization

    ☐ Demonstrate Create, Read, Update & Delete on a Model other than the User

  3. Show/discuss your code:

    ☐ Show the "main" Mongoose model (I don't want to see your user model unless you added something special or wierd ).

    ☐ Show the controller for the main model.

    ☐ I don't want to see your tests unless you did something special, user auth & tests should plug & play do it the same every time with only very minor changes app to app.

  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 in in total, so one "User" schema & model and another schema & model that represents the main functional idea for your app (relationships between entities are encouraged, but not required)

Use JWT authentication.

☐ Have complete CRUD data operations on one of your data entities.

☐ Be available on Github.com (NOT ENTERPRISE) without your .env or node_modules (because of .gitignore) and your readme




Optionally, Your App May:

☐ Consume a third-party API.

☐ Build a Front End App that calls your API




Necessary Deliverables

☐ Trello ☐ Github Repo & README ☐ Psudeocode & Wireframes




Suggested Ways to Get Started

  • Because your app's functionality revolves around the logged in user, implement authentication first!
  • Discuss your api idea with an instructor to get their feedback before you dive too deep into user stories and wireframes.
  • Remember to keep things small and focus on the MVP – feature creep can doom a project!



Project Idea Guidance (In order of complexity)

  1. Create A Fruits List API (User, Fruits) 4 - 8 hours of Engineering, Including Wireframes, Building API and Testing it Manually & Automatically via JEST & SUPERTEST
  2. Create A Blog API (User, Posts) 12 - 20 hours
  3. Create A TodoList API (Users & Todo Items) 12 - 20 hours
  4. Create A Shopping Cart (Users, Carts, Items) 40 - 60 hours
  5. Create An Event Tracker (Users, Events, Attendees) 80 - 100 hours
  6. Create A Trello Board API (Users, Boards, Columns, Tasks) 80 - 100 hours
  7. Create A Grade Book API (Teacher, Subjects, Classes, Students, Assignments) 100 - 120 hours

These hours are in addition to the time it takes you to:

  1. Make a Readme
  2. Make a Trello

If you come up with your own anything that require more than 2 Models must be approved by Arthur or Nando

Useful Resources