Giter VIP home page Giter VIP logo

early_bird's Introduction

EarlyBird

EarlyBird is my final personal project for Module 3 at Turing School of Software and Design. Students were required to create a successful web application from a project idea, authenticate with a third-party service, consume an api, and solve an actual problem.

Learning Goals

  • Learning how to build a full Rails app from idea to delivery.
  • Revisiting previous concepts such as APIs and OAuth.
  • Finding the strengths and gaps in your knowledge of Ruby, Rails, and organizing a project.

Details

EarlyBird is a golf tee time booking system. All course information (tee times, images, addresses, etc.) displayed on the EarlyBird app is consumed from my Golf Courses API.

App Demo

Project Links

EarlyBird Github URL

EarlyBird Heroku URL

Golf Courses API Github URL

Personal Project Spec

Setup

Ruby version

  • Built on Ruby 2.3.1p112

Rails version

  • Built on Rails 5.0.0.1

Database

  • Built on Postgresql

Test suite dependencies

  • RSpec
  • Capybara
  • VCR

OAuth

  • Google

SMS

  • Twilio

Configuration

  • From the command line:

  • $ git clone [email protected]:matthewrpacker/early_bird.git

  • $ cd early_bird/

  • $ bundle

  • $ rake db:{create,migrate}

  • $ rails s

How to run the test suite

All specs:

  • $ rspec

Specific spec:

  • $ rspec spec/subdirectory_name/file_name

early_bird's People

Contributors

matthewrpacker avatar

Watchers

 avatar

early_bird's Issues

User can delete players

As a user:

  • When I visit /settings
  • I should see a list of my players
  • And I should see a delete/remove button next to each player
  • And when I click delete/remove
  • Then the play should no longer be visible

Setup Order to Patch Tee Time quantity

User confirms booking:

  • Order Created
  • Patch sent to api/vi/courses/:course_id/tee_times/:id?quantity=(quantity booked)
  • This updates the quantity of slots available on that tee time
    • e.g. if 4 available, 3 booked, remaining quantity is 1

Setup Twillio for Order

When a user confirms booking and creates an order:

  • All players (if user provided phone # or added saved player) will receive a text with random code.

User can adjust player quantity

On course tee time show (booking page)

  • User can adjust player quantity
  • User can see total adjust to match adjusted quantity
    • e.g. unit price $2, quantity 2, total = $4

Tee Times Index (By Course)

As a guest:

  • When I visit '/courses/1/tee_times'
  • I expect page to have a table with the following headers:
    • Time
    • Course
    • Location
    • Date
    • Unit price
    • Purchase
  • And I expect to see the related information for all tee times in the table

Tee Time Show (Instead of Cart)

As a logged-in user:

  • When I visit '/courses/1'
  • And I click on '7:20 AM' for the date Tue Nov 01
  • I expect my current path to equal '/courses/1/tee_times'
  • And I expect to see the following information
    • Course name
    • Course address
    • Time
    • Date
    • Players (quantity adjustable)
    • Unit Price
    • Subtotal
  • And I expect page to have content 'Phone Number to receive booking code' with a text box to enter my phone number
  • And if I have friends added to my dashboard, I expect to be able to select their phone numbers from a dropdown
  • And I expect to see a button 'Confirm Booking'

Past Orders

User can see past orders with the following info:

  • Order # (id)
  • Text sent to: (phone numbers)
  • Date Booked
  • Course, Tee Time, Date (of tee time), $ Total

Course Show

As a guest:

  • When I visit '/courses'
  • And I click on 'Overland Park'
  • I expect my current path to equal '/overland-park'
  • And I expect to see the course name, location, phone number, and image
  • And I expect to see a table with the following headers:
    • Tee time
    • Quantity
    • Date
    • Unit Price
    • Purchase
  • And I expect to see the related information in the table

Courses Index

As a guest:

  • When I visit '/'
  • And I click on 'Courses'
  • I expect my current path to equal '/courses'
  • And I expect to see all courses with the following information:
    • Image
    • Course name
    • Course location
  • And I expect each course to have a link/button to 'View Course'

Root Path

As a guest:
When I visit '/'
I should see the following links:

  • EarlyBird
  • Tee Times
  • Courses
  • Dashboard
  • Log in

Log in

As a guest:

  • When I visit '/',
  • And I click on 'Log in',
  • I expect my current path to equal '/'
  • And I expect the page to have content 'Hello, username!'
  • And I expect the page to not have content 'Log in'
  • And I expect the page to have content 'Log out'

Dashboard

As a logged-in user:

  • When I visit '/dashboard'
  • I expect the page to have content 'Account Info' along with my name
  • And I expect to see the following links:
    • View Orders
  • And I expect the page to have content 'Players' with a '+' link to add players.

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.