LHL Node Skeleton

Project Setup

The following steps are only for one of the group members to perform.

  1. Create your own copy of this repo using the Use This Template button, ideally using the name of your project. The repo should be marked Public
  2. Verify that the skeleton code now shows up in your repo on GitHub, you should be automatically redirected
  3. Clone your copy of the repo to your dev machine
  4. Add your team members as collaborators to the project so that they can push to this repo
  5. Let your team members know the repo URL so that they use the same repo (they should not create a copy/fork of this repo since that will add additional workflow complexity to the project)

Getting Started

  1. Create the .env by using .env.example as a reference: cp .env.example .env
  2. Update the .env file with your correct local information
  • username: labber
  • password: labber
  • database: midterm
  1. Install dependencies: npm i
  2. Fix to binaries for sass: npm rebuild node-sass
  3. Reset database: npm run db:reset
  • Check the db folder to see what gets created and seeded in the SDB
  1. Run the server: npm run local (startpostgres first)
  • Note: nodemon is used, so you should not have to restart your server
  1. Visit http://localhost:8080/

Warnings & Tips

  • Do not edit the layout.css file directly, it is auto-generated by layout.scss.
  • Split routes into their own resource-based file names, as demonstrated with users.js and widgets.js.
  • Split database schema (table definitions) and seeds (inserts) into separate files, one per table. See db folder for pre-populated examples.
  • Use helper functions to run your SQL queries and clean up any data coming back from the database. See db/queries for pre-populated examples.
  • Use the npm run db:reset command each time there is a change to the database schema or seeds.
    • It runs through each of the files, in order, and executes them against the database.
    • Note: you will lose all newly created (test) data each time this is run, since the schema files will tend to DROP the tables and recreate them.

Dependencies

  • Node 10.x or above
  • NPM 5.x or above
  • PG 6.x

User End Stories

  • "As a logged in user, I can save a url with a title, description, and assign a category (one only)"
  • "As a logged in user, I can update a saved url (url, title, desc, category)"
  • "As a logged in user, I can delete a saved url I own"
  • "As a logged in user, I cannot delete a url I do not own"
  • "As a logged in user, I can search for a saved resource created by any other user"
  • "As a logged in user, I can comment on any saved resource, including my own after creation"
  • "As a logged in user, I can delete my comments"
  • "As a logged in user, I cannot delete other users' comments"
  • "As a logged in user, I can rate any resource 1-5"
  • "As a logged in user, I can update my rating"
  • "As a logged in user, I can see an average rating on each resource"

Stretch

Demo Notes

  • Evaluator noted "energy" level dipped during presentation
  • "You should be excited to present your app"
  • When presenting on camera, make sure lighting is good, full face is shown, no background over-exposure
  • Flow of presentation is important, have demonstration and talking in sync with no awkward pauses
  • Practice demoing with good flow
  • Use a narrative, tell a story of a person seeing and using the app for the first time
  • The audience is the user, direct their attention to what you want them to see with phrases like "Now if you look at the cursor..."
  • No external distractions during presentation time
  • Business casual dress-code; NO HATS

Script

  1. Open app at start
  2. Quick introduction from each member (kev, rain, james) and why we chose this project
  3. We chose this project because we felt like it could be a starting-point for a more advanced app in the future and might be useful
  4. Sign up > Continue > Login
  5. Here we have the user home page > rain
  6. Here we have the add new resource page > rain
  7. Here we have the resources page > james
  8. Here we have the categories page > james
  9. Here we have the search page > kev > search "cats" not found > search nothing > error
  10. That's it! We worked really hard on this and only cried once
  11. (Stretch) We did not add error handling for non-logged-in users of the app