Giter Site home page Giter Site logo

jam_session's Introduction

Build Status

Jam Sessions

This is the base repo for Jam Sessions, designed and built by Turing students.

About the Project

This is a Ruby on Rails application used to provide a central hub for categorized, timed study sessions. Users can connect their Spotify account to have music access/control while using the application. Users are provided with a new quote for inspiration with every dashboard and study session visit. Users can see their previous study sessions topics and time durations, giving the ability to monitor time spent on topics or to quickly clone a similar session.

Local Setup

Clone down the repo

$ git clone https://github/Maxwell-Baird/Jam_Session

Install the gem packages

$ bundle install

Set up the database

$ rails db:create
$ rails db:migrate
$ rails db:seed

Project Schema

API's

This project makes use of two API's, the Spotify API and the Daily Quote API.

Spotify API

First, acquire a Spotify Client ID and Secret here:

Once you have obtained an API key and enabled the API:

  1. Run bundle exec figaro install
  2. This will create the file config/application.yml. Open that file.
  3. Append the following to that file: SPOTIFY_CLIENT_ID_1: <your client_id>, and on a new line, SPOTIFY_CLIENT_SECRET_1: <your client_secret>

Spotify OAuth

This app uses Spotify OAuth.

  1. Sign into your Spotify account on the developer dashboard page to obtain a client_id and client_secret.
  2. Open your config/application.yml file and add SPOTIFY_CLIENT_ID_1: <YOUR CLIENT ID> and SPOTIFY_SECRET_1: <YOUR_CLIENT_SECRET>

Daily Quote API

This API was an additional consumption, it is a very simple API and does not require any keys or ID's. https://type.fit/api/quotes

Test Suite

You can run the test suite with:

$ bundle exec rspec

If set up correctly, and assuming you have internet access and both the Spotify and Daily Quote API is functioning correctly, you should have all passing tests.

Technologies

Versions

  • Ruby 2.5.3
  • Rails 5.2.4.

Creators

DeMarcus Kirby Paul Debevec Maxwell Baird Colin Alexander

jam_session's People

Contributors

maxwell-baird avatar pauldebevec avatar kirbydd avatar colintalex avatar

Stargazers

frankfanslc avatar  avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

jam_session's Issues

User - User Login

As a visitor, when I visit the about page, I want to click a link so that I can sign in.
Subtask:

  1. Link on / page that redirects to a login page.
  2. On /login, I should be able to login based on an email and password related to an already created user.
  3. The option to sign in from Spotify should be an option here.
  4. Checks sad path for login

User Login w/ Spotify

As a guest, with a registered account and Spotify connection,
I can visit the Login page,
I can click on Login w/ Spotify,
Once I authorize my Spotify through OAuth,
I am redirected back to my Dashboard
Where I see everything connected

Site Wide - Styling

  • Every button on the site uses the same styling
  • The Spotify iframe is located on the left-hand side of the page
  • The quotes element is located on the right side of the screen

User - Register A New User

As a visitor, when I visit /, I want to register so that I can create a new account.
Subtask:

  1. Create a link on / that navigate to a form to create a new user
  2. Fill out a form that accepts name, email, password
  3. Check happy or sad path for form
  4. Add a new user to database
  5. Redirects to dashboard if successful
  6. Redirects to about if failed

Dashboard - Spotify Dashboard Connection

As a registered user who has not connected a Spotify account,
When I visit my user dashboard,
I can see a link titled 'Connect to Spotify'
When I click that link,
I am taken through the Spotify OAuth process,
I am redirected back to my dashboard,
and I no longer see Connect to Spotify,
and I can now see my functional, embedded Spotify player

About

As a visitor I can see the about page which will have basic overview of the project

Study Sessions - Show Page Spotify Widget

As a logged in user who has connected to Spotify,
When I visit a study sessions show page,
I see a drop down menu with the names of all my Spotify playlists
And a Spotify iframe with the playlist songs,
When I select a playlist from the drop down menu,
The page refreshes and the Spotify iframe shows the selected playlist.

  • The study session timer does not reset or stop.
  • The timer continues counting down with the same time as when the user selected a playlist.

Statistics

As a user, when I visit /statistics, I want to see my statistics so that I can judge my progress.
Subtasks:

  1. See Total time spent studying.
  2. See Total time spent in a paired session.
  3. See the time spent in each topic.

User registration

As the app is current setup we get an error when going to the register page.
Error appears to inside the user_params in particular the part that is .required(:user)

Quote on Session

As a user, when I visit a session, I should see a different quote on that page.
Subtasks:

  1. Connect to an api
  2. Have a different quote per session
  3. Display the quote in the same location as the dashboard.

Study Sessions #2 - Create a session

As a logged in user,
When I navigate to /dashboard
I see a button 'New Session',
When I click on New Session I am redirected to /study_sessions/new,
And I see a form with the following fields:

  • Time
  • Paired / Solo (drop-down menu)
  • Topic (drop-down menu - Placeholder text displays Select Existing Topic)

When I click on Create the study_session is created and I am redirected to the sessions show page /study_sessions/:id

Nav Bar

As a user, when I visit any page, I want to see a navigation bar so that I can navigate to other pages.
Subtasks:

  1. link to about page
  2. link to dashboard
  3. link to stats
  4. Ability to log out of current session

Study Sessions #3 - Delete Session

As a logged in user,
When I visit the sessions show page /study_sessions/:id,
I see a button to Delete Session,
When I click Delete Session,
I am redirected to the dashboard, and that session is deleted from the database

CRUD user

As a user, when I visit /dashboard, I can edit or delete my account based on my preferences.
Subtasks:

  1. Have a link that allows to change username and email
  2. Have a form that includes email and name fields that checks happy and sad path
  3. Have a link that allows to change password
  4. Have a form that includes password field that checks happy and sad path
  5. Have a link and a confirmation to delete your account

Dashboard nav

Fixed the dashboard navigation inside the navbar that redirects to Dashboard and not dashboard

Dashboard - Quote on Dashboard

As a user, when I visit /dashboard, I want to see a new quote of the day so that I can feel motivated.
Subtask:

  1. Connect to an api
  2. Change the quote on a daily/logged in base
  3. Display the quote on the dashboard

CSS

Add css to register and dashboard

Microservice Spike

By Monday,
A single microservice ruby file as proof of concept
and APIs has been mocked

Dashboard - Dashboard Index Page

As a user, when I visit /dashboard, I want to see the links to create a new study session.
Subtasks:

  1. Have a link that redirects to session/new
  2. Have a list of links that each create session that is based on that a previous session

Error code

As a visitor I should not be able to go to all pages.
Subtasks:

  1. Prevent a non-sign user from seeing /dashboard
  2. Prevent a non-sign user from seeing /stats

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.