Skip to content
Rails API for EZ-Tour
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
bin
config
db
lib/tasks
log
public
test
tmp
vendor
.gitignore
.rubocop.yml
Gemfile
Gemfile.lock
README.md
Rakefile
config.ru
erd.pdf

README.md

EZ Tour Rails API

Hello, we are EZ Tour.

Bands come in all shapes and sizes. While they may range from a cover band at your local bar to a huge pop act headlining arenas, however - they all share the need to advance and coordinate the details of the events their contracted to perform at.

However, there's huge disparity between the needs of the market and tools available. The primary tools available caters primarily to larger acts that have packed and complicated schedules and intricate details to keep track of. Radio events, meet and greets, flights, etc.

Most bands don't have the means to use these platforms, and are required to do a lot of that work in-house. The result is often lengthy e-mail chains with a disorganized smattering of answers and attachments spread across multiple threads.

So we built an application serving up a Rails API that uses Paperclip to handle file uploads which is offloaded onto a S3 data store all of which is handled by a React front end. This application was built to empower up and coming bands and give them tools to be truly DIY. EZ Tour helps automate the process of advancing event details in a way that makes it easier for both bands, and the clubs they're playing to share information.

This Repository

This repo is for the back-end API of EZ-Tour.

This API is hosted here, this repository and readme file deal with the API.

The front-end's github page can be found here

The front-end website is hosted on Heroku here

How To Use

Users

The “user” in this case is a tour manager. A tour manager can have management access to multiple bands.

Create New User

POST to /users/

{
	"full_name": “Example”,
	"telephone": "555-555-5555",
	"email": “example@email.com",
	“password” : “secret”
}

Login

POST to /users /login

{
	“email” : ”example@email.com”,
	“password”: “secret”
}

This will return a JSON object that includes the user’s id and session token. Use the token as Authorization Token for all further requests in this guide:

Add a Profile Picture

PATCH an image file to /users/:id with the field “avatar” to update the avatar

Retrieve Details

GET to /users/id

This will also provide high-level information for all of that user’s bands.

Update User Details

PATCH to /users/:id with new JSON object with any details you want to modify, including:

{
	"full_name": “Example”,
	"telephone": "555-555-5555",
	"email": “example@email.com",
	“password” : “secret”
}

Bands

Each user can have multiple bands to manage. A band must belong to a user.

Create a new band

POST to /users/:user_id

{
	"name": "Colin's Funky Jazz Trio",
	"vehicle": "A bus",
	"num_members": 4,
	"num_crew": 1
}

This will respond with a JSON object containing all details including the band’s id.

Add PDF files

A band can have a W-9, a Stage Plot (map of where instruments should be placed on stage), an Input List (a diagram of how the venue should set up its audio-visual system), and a Hospitality Rider (preferred amenities and food to be provided by the venue to the band). They must all be PDFs. They can be added by:

PATCH a PDF to /users/:user_id/bands/:band_id with the filename as either “w9”,”stage_plot”,”input_list”, or “hospitality_rider”

Modify Band Details

PATCH to /users/:user_id/bands/:band_id

Events

Events are handled differently. The nature of EZ Tour requires that non-users be allowed to manage event details. This is because both venue owners and tour managers need to see and edit the details of an event.

Security and access and is handled with secure hashed URLs.

Create a New Event

POST to /users/:user_id/bands/:band_id/

{
    "date": “YYYY-MM-DD“,
    "venue_email": “example”,
    "venue": “example”,
    "address_line_1": “example”,
    "address_line_2": “example”,
    "city": “example”,
    "state": “example”,
    "postal_code": “example”,
    "country": “example”,
    "status": “example”,
    "dos_contact": “example”,  #NOTE “dos” stands for “Date of Show”
    "dos_contact_email": “example”,
    "dos_contact_telephone": “example”,
    "parking": “example”,
    "load_in_location": “example”,
    "backline": “example”,
    "hospitality": “example”,
    "green_room": “example”,
    "showers": “example”,
    "laundry": “example”,
    "wifi": “example”,
    "misc": “example”,
}

Event Hash

In order to retrieve the high-level details of a band’s events,

GET /users/:user_id/bands/:band_id/

This will respond with a JSON object that includes an “events” array that contains all user events with high-level details. One of these details is the “event hash”.

Retrieve Event Details

GET /events/:event_hash

Update Event

PATCH to /events/:event_hash

You can’t perform that action at this time.