Coder Social home page Coder Social logo

rogerespinoza / punch-card Goto Github PK

View Code? Open in Web Editor NEW

This project forked from scott-ammon/punch-card

0.0 0.0 0.0 423 KB

Digital card app to store restaurant & food truck loyalty cards to promote small business customer outreach

JavaScript 91.43% CSS 5.62% HTML 2.95%

punch-card's Introduction

punch-card

Description

Many restaurants provide punchcards to increase customer loyalty. For example if you purchase 9 entrees at a specific restaurant the 10th purchase will be 50% off. However, these physical punchcards are easy to lose. With the punch card application, you won't have to keep track of all your different punch cards or worry about losing them. All your punch cards can be used and stored on your user account. This will be beneficial for participating restaurants as well because their guests will be more likely to redeem their punch cards, which will increase loyalty to the restaurant.

User Stories

As a frequent restaurant guest, I want to remember to redeem my punchcards, so I can receive my discounts at my favorite restaurants.

When a user visits PunchCard they view a map on the home page that displays all participating restaurants. To take advantage of the punch card opportunities the user can either sign up for an account or log in if they already have an account. Once a user is logged in, they can build up their profile with punch cards by adding them from the restaurant page. If the user goes to visit a restaurant and makes the right purchase, they will be provided with a code on their receipt. Next, the user can input that code into the textfield at the bottom of the card show page. Once that has been done, 1 hole will be punched in the card. If the user achieved the required amount of punches, they can then receive a predetermined promotion from the restaurant. A user can add or remove as many punch cards from their profile as they like.

Technologies used

  1. HTML
  2. CSS
  3. JavaScript
  4. React
  5. Material-UI
  6. MongoDB
  7. ExpressJS
  8. Axios
  9. NodeJS
  10. NPM
  11. Heroku

Approach

The first thing that we did in our group was a appoint a git master. We all decided Scott was best suited for that position. After that our whole group got together and we started brainstorming on what kind of project we would make. A lot of the ideas were based off of what kind of API's were out there. When we made the final decision for our idea, the next step was to begin wireframing.

Wireframes

We built wireframes in Adobe XD, linked here: wireframes

After we wireframed all of our pages and then proceeded to map out the server side routes as well as the client side routes.

METHOD PATH
POST /auth/login
POST /auth/signup
POST /auth/me/from/token
GET /restaurant
GET /restaurant/:id
POST /user/cards
POST /user/cards/all
POST /user/cards/:id
PUT /user/cards/:id
DELETE /user/cards/:id

Client-side Routing

METHOD PATH
/home
/login
/signup
/cards
/cards/:id
/restaurant/:id

In addition to that, we also planned as much as possible for how the models would look for our database.

Models

Here is our original map of our models:

punch-card-model

Here is our final models map:

screen shot 2018-07-18 at 4 12 49 pm

We have 3 models including the user, card, and restaurant model. The user model collects all sign up and login data. The card model collects data associated with how many punches a card has. Finally, the restaurant model displays data about the name, location and other information about each restaurant. Each card is associated with 1 restaurant. Each user is associated with many restaurants. Each restaurant is associated with 1 card. Each user can have many cards.

Once we got all of that initial planning done for the project, our next step was setting up our model files using MongoDB. This proved to be somewhat difficult because creating associations in Mongoose is a bit of a challenge. Next, we divided up the rest of the tasks including building: React components, Express routes, UX-Design, and continuing to update data in our databases. In addition, to keep us organized while progressing through our tasks, we used a trello board. Trello Board

Early Progress Screen Shots

screen shot 2018-07-16 at 3 05 38 pm

screen shot 2018-07-16 at 3 05 20 pm

Minimum Viable Product

The main goal of the application is to allow users to put all of their restaurant punch cards together on one platform. MVP will include a main page with a map to find a restaurant, A restaurant page that will let you add their punch card to your profile, a profile page that shows all of your cards, and finally a card page that shows the whole card with punch details.

Adding More Features

There's still a lot more we can add to this application. Some other features will include other promotions restaurants want to give out like limited time only discounts. Aside from that, here is some functionality we eventually would like to add.

  1. Add unique code for each punch (right now there's just one code for all punches).
  2. Let restaurants be able to add there punch card to the app by making an easy sign up form to input restaurant promotions and how many punches are needed to achieve the promotion.
  3. Be able to search a restaurant.
  4. Be able search to your city and view which restaurants participate.
  5. Tracking the date of last punch for a specific restaurant and being able to remind a user that they have not visited a location in a while.
  6. Earning punches by referring friends to sign up for the app.

Acknowledgements

Steven Peters Kyle Van Bergen

punch-card's People

Contributors

scott-ammon avatar williamconnelly avatar carverme 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.