Skip to content

Opa!Grappa!! is the Node Capstone Project with Thinkful

Notifications You must be signed in to change notification settings

maddiereddy/OpaGrappa

Repository files navigation

Opa!Grappa!!

An online journal for keeping track of your favorite wines

Live Demo

https://opa-grappa.herokuapp.com/

Description

Opa!Grappa!! is an app that keeps track of all the wines a user has consumed or would like to try in the future. User can search for a wine by narrowing down to a winery or vineyard. Can also sort through search results in table and through their own list by clicking on the headers of the table (ascending and descending). User can find more information of selected wine by clicking on its name and it will display details like the name, type, vintage, vineyard, ratings and reviews (by Wine Enthusiast) and allows user to add their own comments

To Run Locally

Git Clone this repo
cd into folder
npm install
npm start
Add .env file with API URL and variable name JWT_SECRET

Technologies used

Front End:

  • JavaScript
  • jQuery
  • HTML5
  • CSS3

Back End

  • Node.js (server-side scripting)
  • Express (server framework and API end point routing)
  • MongoDB(mLab) (database)
  • Mongoose (data modeling and schema)
  • Mocha Chai (unit testing)
  • Travis CI (continuous integration and deployment)
  • Heroku (deployment)

Security

  • Passwords are encrypted with bcryptjs
  • Passport.js was used as authentication middleware

Responsive

  • The app is responsive and optimized for both desktop and mobile viewing and use

API Documentation

API endpoints

  • API for registering new users and checking existing user logins:

    • '/users' - POST, GET
  • API for creating JWTs:

    • '/auth'
      • '/login' - POST
  • API for wines data:

    • '/wines'
      • '/' - GET a list of top 20 wines
      • '/:id' - GET wine by id
      • '/states' - GET all states (distinct)
      • '/regions/:state' - GET all regions (distinct) for a given state
      • '/wineries/:region' - GET all wineries (distinct) for a given region
      • '/list/:winery' - GET all wines for a given winery
  • API for personal my list data:

    • '/mylist'
      • '/' - GET a list of all wines on logged-in user's list
      • '/' - POST a new item to list ('userId', 'wineId', 'comments', 'name', 'description', 'cost', 'rating', 'region', 'state', 'winery', 'type')
      • '/:id' - GET selected wine item details by id
      • '/:id' - PUT for updating the comments field for an existing item on list by id
      • '/:id' - DELETE for deleting an existing item by id

Screenshots

Index page:

landing page

Login page:

login page

My List page:

wine list page

Details page:

wine details page

Search page:

search wines page

Nice-to-have-features (to be implemented)

  • Search text box with autocomplete as alternative to using the drop downs
  • Paging through search results
  • Allowing search by country
  • Uploading pictures to be stored along with user comments
  • Allowing to add their own wines, not already in the database, and being able to store them on their list
  • Reset password
  • Allowing users to compare notes with other users

About

Opa!Grappa!! is the Node Capstone Project with Thinkful

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published