Giter VIP home page Giter VIP logo

aetherquest-be's Introduction

Session 3 Capstone: Build an API

In this project, we will use what we know about Node.js, MongoDB, and Express to create a RESTful API. This starter provides basic functionality for authentication using JWT (JSON Web Tokens), interaction with a MongoDB using Mongoose, and the start of an OpenAPI specification for documentation presented through swagger.

Learning Objectives

In this project we will practice the following:

  • Bulding a RESTful API with Node.js, MongoDB, and Express.js
  • Communicating and working together as a development team
  • Following SCRUM processes and practicing SCRUM roles

Basic Requirements

Your API should include the following functionality in order to be considered complete:

  • At least 2 addtional resource or endpoints in addition to the Users and Auth
  • At least 1 addtional route for a resource that requires authentication
  • At least one route for every CRUD operation should represented across all of your resources or endpoints (does not have to be on all resources)
  • Return proper HTTP status codes for API requests
  • Use validation on your Mongoose Models Built-in validation docs
  • Make an attempt to maintain the OpenAPI Specification for the Swagger documentation Online Swagger Editior
  • Ensure all endpoints work with Postman or similar HTTP Client

Other Requirements

  • Your repository must contain the appropriate git commit history
    • Typically a commit for each meaningful piece of work completed
  • Each user in the group should work on their own branches and create a PR to merge their changes into master
  • Maintain a project board outlining and prioritizing the user stories and tasks needed to create your minimum viable product (MVP) for your API

Team Guidelines

Working together as a team will play a large role in the overall success of yoru project

You should receive positive feedback if you do these things:

  • In group projects, it is more about working as a real, professional team than getting the project itself to 100% completion. In the real world, you usually won't be able to decide who gets to be on your team, and you won't get away with ignoring them or failing to cooperate. Figure it out. Even if you know you're right, the health of the team is more important than correctness in the project or in the process you're following.
  • Update the team daily on your status
  • Communicate ahead of time what your schedule is and any changes in your schedule
  • Participate in all planned team activities
  • Communicate your strengths/interests/abilities/weaknesses
  • Speak up about your concerns/confusion. Ask for clarification
  • Don’t let your team do sloppy work, but also find compromise
  • Invite teammates to give their ideas/opinions
  • Actively listen to teammates ideas and consider pros/cons as a group
  • Accept decisions made by the group (this may take the project in a direction you didn’t expect)
  • If you are stuck on a problem - ask for help from your coaches/instructors/teammates ASAP (don’t waste time struggling individually - this is a team effort)
  • Compliment individuals when they do a good job/show good effort.
  • Apologize if/when you screw up - Be real
    • “Really sorry team, I fell asleep and missed our meeting. Can I sync up with someone later to get caught up on what I missed?”
    • “I broke the code sorry! Can we work together to try and fix it?”
  • Follow-through to make up any missed deadlines/lack of participation
    • “I had some personal issues last week, so I will work extra hard this week to make up”
  • Be respectful to everyone

Some personality types to avoid:

  • The Dictator
    • We will do it like this. No discussion.
  • The Coaster
    • I’m good with whatever, man. Totally apathetic.
  • The Ghost
    • I’m around sometimes. I do stuff then I disappear for awhile.
  • The Nitpicker
    • Everything you do is just ok. I would have done it differently.
  • The Scaredy-Cat
    • I stick to my corner and don’t take on challenges.

Personal/group issues should be escalated to your instructor

Project Roles

These are roles for members the project that should be assigned or at least shared while working on the project.

  • Project Manager - The instructor will play this role for the groups
  • SCRUM Master - Manages the repository, task board, and will ensures everyone participates in the daily stand-up
  • Individual Contributor (Developer) - Executes against development tasks. Everyone in the group is an individual contributor
  • QA - Quality Assurance - Tests each portion of application

Stand-up and End of Day Check-in

Stand-up

  • Each member of team has in written form what they’ve done, what they plan to do, and any blockers. This should be done first thing when starting the day
  • The SCRUM master and team should review the posted stand-ups and have any neccessary discussion around blockers or areas where the team can support each other

EOD Check-in

  • Each team required to give update of tasks completed today, and any hurdles they’ve ran into
  • SCRUM Master should align with team and present this information at the end of each day

Daily Expectations

  • BE ON TIME! Time is precious during capstone.
  • Participate in a stand-up (~15m)
  • Participate in a short relevant demo (~30m)
  • Project/Group Time until lunch with support
  • Lunch (1-2pm Eastern)
  • Project/Group Time with support
  • Back to main room for wind down (~15m)

aetherquest-be's People

Contributors

eric-di avatar kjcarter-design avatar erics273 avatar scoobydawg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.