Code Monkey home page Code Monkey logo

456_pickup_stix's Introduction

Advanced Rails Assessment

Fork and clone this repo! Create a pull request when you're done.

1. Google Form Q+As

Answer the questions on this Google Form.

2. Playlister

Playlister is an app that allows it's users to create and share song playlists.

MVP features include:

  • auth login and logout
  • user CRUD
  • playlist CRUD
  • bookmarking/unbookmarking various pages (resources)
  • user signup

Bonus features include:

  • following/unfollowing other users
  • tracking stats about artists and songs

Setup

Go to the playlister directory and set this app up:

$ bundle install
$ bundle exec rake db:create
$ bundle exec rake db:migrate
$ bundle exec rake db:seed

Run guard/rspec to see the tests. Only worry about BONUS specs after all others are green!

$ bundle exec guard
$ bundle exec rspec

Your Mission

Complete the user stories in the __USER_STORIES__ directory. Each markdown file contains categorized user stories. The bonus stories are only to be done after all others are finished!

User Stories

Artists

Auth

Bookmarks

Errors

Flash

Nav

Playlists

Songs

Users

BONUS Stories! (only after you're done everything else!)

BONUS

NOTE: while seeds and migrations have been provided for you, you will have to make your own associations!

Schema and Models

Below is an outline of associations that will make this app work.

NOTE: all of the extra info Rails needs like :class_name and :source has been removed. You'll need to add that yourself!

Artists

- attributes:
    - name
- associations:
    - `has_many :songs`
    - `has_many :bookmarks`

Bookmarks

- associations:
    - `belongs_to :user`
    - `belongs_to :bookmarkable`

PlaylistSelections

- associations:
    - `belongs_to :playlist`
    - `belongs_to :song`

Playlists

- attributes:
    - name
- associations:
    - `belongs_to :user`
    - `has_many :bookmarks`
    - `has_many :playlist_selections`
    - `has_many :songs`

Songs

- attributes:
    - name
- associations:
    - `belongs_to :artist`
    - `has_many :bookmarks`
    - `has_many :playlist_selections`
    - `has_many :playlists`

Users

- attributes:
    - first_name
    - last_name
    - email
    - auth_token
    - password_digest
- associations:
    - `has_many :bookmarks`
    - `has_many :playlists`

BONUS Associations

Followings

- associations:
    - `belongs_to :follower`
    - `belongs_to :followed`

Users

- associations:
    - `has_many :initiated_followings`
    - `has_many :received_followings`
    - `has_many :followers`
    - `has_many :followeds`

Auth

In order to enable Rails auth capabilities, you will need to add a migration to alter the user table.

Once that migration is in place, don't forget to update your seeds.rb file to include user passwords!

You'll have to create functionality in your ApplicationController and User model that:

  • make the ApplicationController specs pass
  • use secure password encryption to store your users' passwords in the database
  • allow users to login and logout

Controllers and Views

  • many of the specs test if a view is being rendered, use this along with the stories as a guide for what views to create
  • many of the specs also send data to specific routes, use this to determine the expected routing structure
    • HINT: nested routes are NOT necessary for this app
    • HINT: use current_user where ever possible to improve security and simplicity

Specs

Specs will tell you if your models are setup correctly.

Specs will also tell you if your controllers and routes work as expected.

Specs do not include integration tests. You will need to manually test the forms and features of your app!

No Styling!

Bootstrap has been included for you in your application layout. This is just to provide barebones styling that YOU don't have to worry about.

DO NOT style anything or work on appearance unless you've finished all the user stories and made all specs pass!

Good Luck!

456_pickup_stix's People

Contributors

dkackar avatar eriktrautman avatar

Watchers

James Cloos avatar  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.