JS-301-NodeServer
  • Introduction
  • js_library
    • Node Server
      • 00 - Intro
        • 01 - Purpose
        • 02 - Back-End Setup
        • 03 - Terms Cheat Sheet
      • 01 - Server Set up
        • 01 - npm packages
        • 02 - Express Intro
        • 03 - Express code
      • 02 - Development Tools
        • 01 - Nodemon Intro
        • 02 - Postman Intro
        • 03 - Postman set up
      • 03 - Routes Intro
        • 01 - Routes intro
        • 02 - Express Router() intro
        • 03 - Challenge 1
        • 04 - Challenge 2
      • 04 - Database Intro
        • 00 - DB Intro and Set up
          • 00 - DB Intro
          • 01 - PostgreSQL Intro
          • 02 - Install
        • 01 - Sequelize Intro
          • 01 - Sequelize intro
          • 02 - Initialize
      • 05 - Model View Controller
        • 01 - MVC
          • 00 - MVC Intro
        • 02 - Models
          • 01 - Intro to Models
          • 02 - Test Model
        • 03 - Controllers
          • 00 - Controllers Intro
          • 01 - Controller Set up
          • 02 - Create Method
          • 03 - req.body()
          • 04 - Crafting the Response
          • 05 - Sending the Response
          • 06 - JSON Response
          • 07 - Error Handling
        • 04 - Conclusion
      • 06 - Tokenization
        • 01 - JWT Intro
          • 01 - JWT intro
        • 02 - User Create
          • 01 - User Create
          • 02 - Refactor
        • 03 - User Token
          • 01 - JWT Package
          • 02 - Adding JWT
          • 03 - ENV
      • 07 - Encryption
        • 01 - bcrypt
        • 02 - bcrypt setup
      • 08 - Session
        • 00 - Session Intro
        • 01 - Sign In Method
        • 02 - Sign In Bcrypt
        • 03 - Sign In JWT
      • 09 - Middleware
        • 01 - Test Client HTML
        • 02 - Test Client JS
        • 03 - Middleware intro
        • 04 - Headers intro
        • 05 - Server Update
        • 06 - Test Post
        • 07 - Test Post Refactor
        • 08 - Post Data
        • 09 - Fetch From One
      • 10 - Authenticated Routes
        • 01 - Intro to Authenticated Routes
        • 02 - Validate Session
        • 03 - Changes to app.js
        • 04 - authtestcontroller.js
        • 05 - Delete an Item
        • 06 - Update an Item
        • 07 - Postman Testing
      • 11 - Authenticated Requests
        • 00 - Additions to index
        • 01 - Anatomy of a Request
        • 02 - Create User
        • 03 - Getting a Token
        • 04 - Get Items From One User
        • 05 - Creating an Item for a User
        • 06 - Get one item
        • 07 - Update an Item
        • 08 - Deleting an Item
        • 09 - Deleting with a Custom Event
      • 12 - Workout Log Server
        • 00 - Intro
      • 13 - More Sequelize Functions
        • Migrations
          • 00 - Intro
          • 01 - init and config
          • 02 - Creating the First Migration
          • 03 - Running Migrations
          • 04 - Reverting Migrations
          • 05 - Seeds
          • 06 - Reverting Seeds
        • Queries
          • 00 - Intro
          • 01 - Queries
Powered by GitBook
On this page
  • Purpose
  • Rationale
  • Criteria
  • Required Endpoints
  • Data Models
  1. js_library
  2. Node Server
  3. 12 - Workout Log Server

00 - Intro

In this module, we'll be introducing the Workout Log Server challenge.

Purpose

We'd like you to get some practice and have another look at building a server. In order to review what we have studied in this Gitbook, we'd like you to create a new Express Server.

Rationale

You have been served up an enormous amount of material, and now you need practice working with it and repeating it. It will go faster the second time through, and iterative learning will take place. You will essentially be rebuilding what you just did with a few different endpoints.

Criteria

Just to be clear, there are some major criteria. Your server must do the following:

  • Have User Authentication

  • Follow an MVC pattern.

  • Persist data to Postgres.

  • Use all of the key concepts studied in this Gitbook, including jwt, bcrypt, and middleware.

  • You will build a client later, using React. You do not need a client for this. We will use this to teach client side Authentication with React.

  • Your endpoints must show signs of having been tested(screenshots of successful Postman request in a Readme.md file are always handy)

Required Endpoints

The project should have the following endpoints:

Endpoint

Verb

Description

/api/user/

POST

Allows a new user to be created with a username and password.

/api/login/

POST

Allows log in with an existing user.

/api/log/

POST

Allows users to create a workout log with descriptions, definitions, results, and owner properties.

/api/log/

GET

Gets all logs for an individual user.

/api/log/:id

GET

Gets individual logs by id for an individual user.

/api/log/:id

PUT

Allows individual logs to be updated by a user.

/api/log/:id

DELETE

Allows individual logs to be deleted by a user.

Data Models

  • user.js

In addition to the columns automatically generated by Sequelize, the user.js model requires the following columns and data-types:

Property

Type

username

STRING

passwordhash

STRING

  • log.js

In addition to the columns automatically generated by Sequelize, the log.js model requires the following columns and data-types:

Property

Type

description

STRING

definition

STRING

result

STRING

owner

INTEGER

Previous12 - Workout Log ServerNext13 - More Sequelize Functions

Last updated 7 years ago