Giter Club home page Giter Club logo

bucketbuddiez's Introduction

๐ŸŒŽ Bucket Buddiez! ๐Ÿ˜„

Overview

A web app that allows users to input places they would like to travel to, and then match with other users who also want to go there!

Log in or create an account, and then click on places you want to travel to in your lifetime. Clicking on these locations will add them to your bucket list. When viewing your bucket list, click on a location to see if you have any mutual friends who also want to go there. If you do, then start arranging some travel plans! โœˆ๏ธ

Please try out the deployed app in Heroku, found here.

Authors

Tom Thompson

Avani Ghetia

Mario Aburto

Masud Chowdhury

Functionality

On the Front End, the app uses Materialize, jQuery, AJAX, and the HTML is rendered using Handlebars.

On the Back End, the app uses Node.js and MySQL. The Node Packages used in the app are Sequelize for database queries, Express for serving and routing, Passport for User Authenication, and bcrypt-nodejs for hashing user passwords.

For persistent data, the app uses 4 MySQL tables to store the Users and the places where they want to visit (Cities, States, and Countries). All users are then linked to the places they want to visit in the City-Like, State-Likes, and Country-Likes tables, which are generated by the Sequelize ORM.

Cloning down the repo

If you wish to clone the app down to your local machine...

  1. Use MySQL Workbench to create a database called bucketBuddiezDB:
  • The raw SQL query is CREATE DATABASE bucketBuddiezDB;.
  1. Inside the config folder, open up the config.json file:
  • In the development object, add your MySQL localhost password.
  1. In your terminal, cd into the project folder and run:
  • npm install to download all node.js dependencies
  • npm run setupDB to migrate/seed the database
  1. Finally, you can run the programming using:
  • node server.js in the terminal to start the node server
  • And navigating to localhost:3000 in your browser.

Screenshots

Home Page (/index route)

Here, users can either signup for login to the app.

hompepage

Sign Up Page (/signup route)

Here, users will create an account with their name, email, and password

sign up

Login Page (/login route)

Here, users will login to their account with their email and password

login

Bucketlist Page (/view/bucketlist route)

After a sucessful login, the user is redirected to their bucketlist.
Using a session in Passport-js and Handlebars-js templating, this page is unique to each user.
If locations were added to the users accounts, they will be seen here.
Clicking a (-) icon removes locations from the bucketlist using an AJAX call to our API endpoints.
From this page, the user can also Log Out of their account and end the session.

bucketlist

Note that clicking "Find Travel Buddy" on the Bucketlist Page opens a materialize modal.

If there are other users who also wish to travel to the location, their email addresses and names will be shown.

buddy

Conversely, if our sequelize-js query finds no other users related with said place, a different message appears.

![no buddy](/screenshots/no buddies.png)

Add to the bucketlist by clicking navbar links for each of the Handlebars-js rendered pages:

Countries (/view/countries route)

countries

Clicking the (+) button triggers an AJAX call to the /:action/country/:userId/:countryId endpoint.

States (/view/states route)

states

Clicking the (+) button triggers an AJAX call to the /:action/state/:userId/:stateId endpoint.

Cities (/view/cities route)

states

Clicking the (+) button triggers an AJAX call to the /:action/city/:userId/:cityId endpoint.

bucketbuddiez's People

Contributors

avani19 avatar marioaburto10 avatar masudhchowdhury avatar tomtom828 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.