From 62dcc76635e40c817e9c58040ba087c3916ecf53 Mon Sep 17 00:00:00 2001
From: Sybil <sybil.deboin@gmail.com>
Date: Mon, 25 May 2015 23:17:09 +0200
Subject: [PATCH] Tags fixed, Favicon, etc.

---
 '                                | 842 -------------------------------
 README.md                        |  17 +-
 app/controllers/cassette.js      |   4 +
 app/index.html                   |   3 +-
 app/models/track.js              |   2 +
 app/styles/app.sass              |   2 +-
 app/templates/about.hbs          |   4 +-
 app/templates/cassette.hbs       |   4 +-
 app/templates/tracks.hbs         |   4 +-
 public/assets/favicon-coffee.ico | Bin 0 -> 1150 bytes
 public/assets/samples/click.ogg  | Bin 0 -> 5825 bytes
 11 files changed, 30 insertions(+), 852 deletions(-)
 delete mode 100644 '
 create mode 100644 public/assets/favicon-coffee.ico
 create mode 100644 public/assets/samples/click.ogg

diff --git a/' b/'
deleted file mode 100644
index dbaf1f9..0000000
--- a/'
+++ /dev/null
@@ -1,842 +0,0 @@
-@import "bower_components/bourbon/app/assets/stylesheets/bourbon"
-@import "bower_components/neat/app/assets/stylesheets/neat"
-@import "bower_components/normalize.css/normalize"
-@import "bower_components/datedropper/datedropper"
-@import "bower_components/pace/themes/blue/pace-theme-minimal"
-
-@include font-face('wire','/assets/fonts/Electro')//string_and_wire
-@include font-face('marker','/assets/fonts/twin_marker') //colors_of_autumn')
-
-$standard_font: 'Helvetica Neue',Helvetica,Arial,sans-serif
-$standard_color: #333 //#4285f4
-$standard_light_color: #474747
-$standard_font_color: transparentize(white, 0.3)
-$standard_secondary_color: #2098d1 
-
-html
-  font-family: $standard_font
-  font-size: 90% //82.5% 
-  li
-    list-style: none
-  ul
-    margin: 0
-    padding: 0
-  a
-    text-decoration: none
-
-.everything  
-  opacity: 1
-  @include transition(opacity 1s ease)
-
-.preload //.pace-running
-  height: 100vh
-  width: 100vw
-  //position: fixed
-  z-index: 9999
-  //top: 0
-  background: url('/assets/images/Nightiies.png') no-repeat center center
-  background-size: 50vh
-
-  .everything
-    opacity: 0
-
-.everything 
-  @include display(flex)
-  overflow: hidden
-  //height: 100vh
-  //width: 100vw
-
-// -------------------------------------------------
-// New menu
-.menu-button
-  width: 40px//60px
-  height: 40px//60px
-  outline: none
-  position: fixed
-  margin: 5px
-  padding: 8px 9px 9px 9px //14px 15px 15px 15px
-  z-index: 999996
-  border: 2px solid $standard_secondary_color
-  border-radius: 50%
-  background: none //rgba(255,255,255,0.5)
-
-  i
-    font-size: 21px //30px 
-    color: $standard_secondary_color
-    
-
-.menu   
-  $action-color: #477DCA !default
-  $dark-gray: #333 !default
-  $sliding-panel-border-color: $dark-gray
-  $sliding-panel-background: lighten($sliding-panel-border-color, 5%)
-  $sliding-panel-color: #fff
-  $sliding-panel-border: 1px solid $sliding-panel-border-color
-  $sliding-panel-background-hover: $action-color
-  $sliding-panel-color-hover: #fff
-  $sliding-panel-background-focus: lighten($sliding-panel-background, 5%)
-
-  @include position(fixed)
-  @include transform(translateY(-60px)) //X(-160px))
-  @include transition(all 0.25s linear)
-  background: $standard_color //$sliding-panel-background
-  z-index: 999998
-  width: 100%
-  li a
-    @include span-columns(1.5)
-    height: 50px
-    border-right: 1px solid #2e2e2e //border-bottom $sliding-panel-border
-    color: $sliding-panel-color
-    display: block
-    font-size: 1.1em
-    padding: 1em
-    text-decoration: none
-    overflow: hidden
-    //text-overflow: ellipsis
-    white-space: nowrap
-    @media screen and (max-device-width: 640px), screen and (max-width: 800px)
-      @include span-columns(2.6)
-      //span
-        display: none 
-   
-
-    &:focus, &.active 
-      background-color: $standard_light_color //$sliding-panel-background-focus
-
-    &:hover 
-      background-color: $sliding-panel-background-hover
-      color: $sliding-panel-color-hover
-
-  
-  &.is-visible 
-    @include transform(translateY(0))
-
-.fade-menu 
-  @include position(fixed, 0px 0px 0px 0px)
-  @include transition
-  background: black
-  opacity: 0
-  visibility: hidden
-  z-index: 999997
-
-  &.is-visible 
-    opacity: 0.4
-    visibility: visible
-
-// Track player
-  
-@mixin grid-item-columns($columns)
-  width: (100% / 12) * $columns
-
-.player
-  @include flex-grow(0)
-  @include flex-shrink(0)
-  background-color: #474747 //$standard_color
-  ul
-    @include clearfix
-    @include row(table)
-    
-    li
-      @include span-columns(1)
-      color: $standard_font_color
-      white-space: nowrap
-      overflow: hidden
-      vertical-align: middle
-
-    li.track_name
-      @include span-columns(6)
-      overflow: hidden
-      text-overflow: ellipsis
-      padding-left: 50px
-      
-      //div
-        &:focus, &:hover
-          @include animation(scroll 5s ease infinite)
-    
-          //@include keyframes(scroll)
-            from
-              @include transform(translateX(0%))
-            to
-              @include transform(translateX(-100%))
-    
-    li.track_player
-      @include span-columns(6)
-
-      //width: 640px
-      line-height: 0px
-      height: 35px
-      iframe
-        display: inline-block
-
-.tracks-colorGrid  
-
-  width: 100%
-  margin-right: calc(100% - 100Vw)
-
-  @include display(flex)
-  @include flex-direction(row)
-  @include flex-wrap(wrap)
-  @include align-content(flex-start)
-  @include justify-content(stretch)
-  @include align-items(stretch)
-  //height: 100vh
-  
- 
-  $base-accent-color: #477DCA !default
-  $base-background-color: white !default
-  
-  p 
-    line-height: 1.5em
-  a 
-    text-decoration: none
-  
-  $grid-items-background: $base-background-color
-  $grid-item-background: desaturate($base-accent-color, 30%)
-  $grid-item-colors: desaturate($base-accent-color, 30%), #3581A5, #F7C808, #5FBEBE, #98C79A, #D2315D, #A7A891,    #389090, #F47E7D, #B5D045, #FB8335, #81C0C5,       #E98813, #22B5BF, #8767A6, #88C134
-    
-  .grid-item 
-    @include flex-grow(1)
-    @include align-items(center)
-    @include justify-content(center)
-    @include flex-basis(500px)
-
-    @include transition (all 0.2s ease-in-out)
-    background: $grid-item-background
-    margin: 2px
-    cursor: pointer
-    padding: 2em
-    @extend .hvr-trim
-
-    @for $i from 1 through 51 //length($grid-item-colors)
-      &:nth-child(#{$i}) 
-        $background-from-list: nth($grid-item-colors, $i % 16 + 1)
-        $background-color: transparentize($background-from-list, 0.8)
-        background-color: $background-color
-
-        &:focus, &:hover, &.active 
-          background-color: transparentize($background-from-list, 0.4)
-          //@extend .hvr-trim
-
-  .grid-item p
-    margin: auto
-    color: #595959 //rgb(180,180,180)      
-
-  span.track_author
-    float: left
-
-  span.track_channel
-    float: right
-
-  span.track_name
-    font-size: 1.1em
-    color: black
-
-  .pagination
-    @include flex-grow(1)
-    width: 100vw
-    margin: 1em
- 
-.tracks-table
-  width: 100% //100vw
-  margin-right: calc(100% - 100vw)
-  $base-border-color: gainsboro !default
-  $base-background-color: white !default
-  $base-line-height: 1.5em !default
-  $dark-gray: #333 !default
-  $base-font-color: $dark-gray !default
-  
-  //background: url(records_edited.jpg)
-  //background-size: cover
-  //background-position: bottom
-
-  td 
-    line-height: $base-line-height
-  
-  $table-border-color: $base-border-color
-  $table-border: 1px solid $table-border-color
-  $table-background: $base-background-color
-  $table-hover-background: darken($table-background, 3)
-  $table-padding: 0.8em 1em
-  $table-font-light: rgba(0,0,0,0.6)
-
-  border-collapse: collapse//separate //collapse
-  border-spacing: 0
-
-  tbody 
-    //background-color: $table-background
-    tr:hover > td, tr.active > td
-      background-color: $table-hover-background
-      //border-color: $standard_secondary_color
-      //border-bottom: 1px solid $standard_secondary_color
-      color: $standard_secondary_color
-
-    //tr:last-child td 
-      border-bottom: 0px
-    td 
-      border-bottom: 0px
-      border-top: 1px solid $table-border-color
-      padding: $table-padding
-      overflow: hidden
-
-    td.track_author
-      @include span-columns(2)
-    td.track_name
-      @include span-columns(6)
-    td.track_tags
-      @include span-columns(2)
-    td.track_channel
-      @include span-columns(2)
-    td
-      a
-        color: gray //$table-font-light
-
-
-.menu-placeholder
-  display: inline-block
-  height: 50px //70px
-  width: 50px //70px
-
-.filters-menu
-  @include flex-grow(0)
-  @include flex-shrink(0)
-  //$filter_color: #474747
-  background-color: $standard_color//$filter_color
-  color: $standard_font_color
-  white-space: nowrap
-
-  li
-    height: 50px //70px
-
-  select
-    background: $standard_color//$filter_color
-    border: none
-    outline: none
-    cursor: pointer
-    color: $standard_font_color
-    @include span-columns(2 of 4)
-    height: 25px //35px
-    //@include appearance(none)
-    option
-      width: 100px
-      color: $standard_font_color
-    &:hover, &:focus
-      color: $standard_secondary_color
-      
-  input
-    @include span-columns(2 of 4)
-    height: 25px //35px
-    background: $standard_color //$filter_color
-    border: none
-    outline: none
-    color: $standard_font_color
-    &:hover, &:focus
-      color: $standard_secondary_color
-      @include placeholder
-        color: $standard_secondary_color
-
-  ul
-    display: inline-block
-    li
-      @include span-columns(4)
-      height: 25px //35px
-    .first-line
-      position: relative
-      top: -25px//-35px
-    .second-line
-      position: relative
-      left: -50%
-
-  .design
-    font-size: 2em
-    line-height: 50px //70px
-    float: right
-    padding: 0 10px
-    cursor: pointer
-    vertical-align: middle
-    &:hover, &.active
-      color: #2098d1
-
-
-.pagination   
- 
-  margin: 1em
-  //margin-bottom: 2em
- 
-  $base-border-color: gainsboro !default
-  $base-border-radius: 3px !default
-  $base-spacing: 1.5em !default
-  $base-accent-color: #477DCA !default
-  $base-link-color: $base-accent-color !default
-  $dark-gray: #333 !default
-  $large-screen: em(860) !default
-  $base-font-color: $dark-gray !default
-  
-  $pagination-border-color: $base-border-color
-  $pagination-border: 1px solid $pagination-border-color
-  $pagination-background: lighten($pagination-border-color, 10)
-  $pagination-hover-background: lighten($pagination-background, 5)
-  $pagination-color: $base-font-color
-
-  text-align: center
-
-  ul 
-    display: inline
-    text-align: center
-    li 
-      display: inline
-
-    ul li 
-      display: none
-      
-      &:nth-child(1),
-      &:nth-child(2),
-      &:nth-child(3) 
-        display: inline
-      
-      @include media($large-screen) 
-        display: inline
-
-    li a 
-      @include transition (all 0.2s ease-in-out)
-      background: $pagination-background
-      border-radius: $base-border-radius
-      border: $pagination-border
-      color: $pagination-color
-      outline: none
-      padding: ($base-spacing / 4) ($gutter / 2)
-
-      &:hover, &:focus 
-        background: $pagination-hover-background
-        color: $base-link-color
-
-    a.current
-      background: $pagination-hover-background       
-
-.tracks
-  @include display(flex)
-  @include flex-grow(1)
-  @include flex-basis(200px)
-  @include flex-direction(column)
-  @include flex-wrap(nowrap)
-  @include justify-content(flex-start)
-
-.presentation
-  height: 100vh
-  @include display(flex)
-  @include flex-grow(1)
-  @include flex-basis(200px)
-
-
-  background: url('/assets/images/vinyl_prog.jpg')
-  background-size: cover
-  background-position: bottom
-
-  .abstract
-    color: white
-    margin: auto
-    //padding: 3.5em
-    text-align: center
-    a
-      font-family: wire
-      text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black
-      @include filter(drop-shadow(1px 1px 1px rgba(0,0,0,0.9)))
-      font-size: 7em
-      font-weight: bold
-      color: #2098d1 //white
-    img
-      height: 30vh //10em
-      margin-bottom: 1em
-    p
-      text-align: center
-      font-size: 1em
-      margin-bottom: 0.5em
-
-
-.channels, .users
-  @include display(flex)
-  @include flex-direction(row)
-  @include flex-wrap(wrap)
-  @include flex-grow(1)
-  @include flex-basis(200px)
-  @include align-content(stretch)
-  @include justify-content(stretch)
-  @include align-items(stretch)
-  height: 100vh
-
-  $base-accent-color: #477DCA !default
-
-  $channel-colors: desaturate($base-accent-color, 30%), #3581A5, #F7C808, #5FBEBE, #98C79A, #D2315D, #A7A891,    #389090, #F47E7D, #B5D045, #FB8335, #81C0C5,       #E98813, #22B5BF, #8767A6, #88C134
-  //#E0C7A8,#BDCC97,#979EA0, 
-
-  @include clearfix
-
-  .hided
-    color: transparent
-    
-  .channel, .user
-    @include display(flex)
-    @include flex-grow(1)
-    @include align-items(center)
-    @include justify-content(center)
-    @include transition (all 0.2s ease-in-out)
-    //border-radius: 50%
-    cursor: pointer
-    overflow: hidden
-    //@include ellipsis()
-    white-space: nowrap
-
-    @for $i from 1  to 200//through 51 //length($grid-item-colors)
-      &:nth-child(#{$i}) 
-        $background-from-list: nth($channel-colors, $i % 16 + 1)
-        $background-color: transparentize($background-from-list, 0.8)
-        background-color: $background-color
-
-        &:focus, &:hover 
-          background-color: transparentize($background-from-list, 0.4)
-          min-width: 150px
-          color: black
-       
-// -------------------------------------------------------------
-// Design for pace plugin
-
-//--------------------------------------------------------------
-//I copy paste here the styles that I need from hover.css
-
-/* Trim */
-.hvr-trim 
-  display: inline-block
-  vertical-align: middle
-  @include transform(translateZ(0))
-  box-shadow: 0 0 1px rgba(0, 0, 0, 0)
-  -webkit-backface-visibility: hidden
-  backface-visibility: hidden
-  -moz-osx-font-smoothing: grayscale
-  position: relative
-
-  &:before
-    content: ''
-    position: absolute
-    border: white solid 4px
-    top: 4px
-    left: 4px
-    right: 4px
-    bottom: 4px
-    opacity: 0
-    @include transition (opacity 0.3s)
-
-  &:hover:before, &:focus:before, &:active:before, &.active:before
-    opacity: 1
-
-// ---------------------------------------------------------------------------
-// Cassette design
-.cassette
-  background-image: url("/assets/images/cassette/mixtable_bw.jpg") 
-  background-size: cover
-  background-position: center
-  height: 100vh
-  width: 100vw
-
-iframe.cassette
-  width: 0px
-  height: 0px
-  visibility: hidden
-  border: none
-
-/* Main container */
-.cassette-holder
-
-  /* Tape elements */
-  .tape
-    width: 586px
-    height: 379px
-    margin: auto //30px auto 0
-    position: relative
-    @include transition(all .4s ease-in-out)
-    //INFO
-    overflow: hidden
-    &:hover
-      .cassette-back, .cassette-front
-        @include filter(blur(3px) grayscale(90%))
-        @include transition(all, 0.5s ease-in-out)
-        //opacity: 0.9
-      .info-hover
-        @include transform(translate(0, -200%))
-
-    .info-hover
-      padding: 1em 2em
-      @include transition(all, 0.5s ease-in-out)
-      background: transparentize(#000, 0.7)
-      height: inherit
-      width: inherit
-      overflow: hidden
-      color: rgba(255, 255, 255, 0.7)
-
-  .vc-loader
-    position: absolute
-    width: 31px
-    height: 31px
-    bottom: 50px
-    left: 50%
-    margin: -15px 0 0 -15px
-    background: transparent url(images/cassette/ajax-loader.gif) no-repeat center center
-    display: none
-
-.cassette-back
-  width: 100%
-  height: 100%
-  position: relative
-  background: transparent url(images/cassette/cs_back.png) no-repeat center center //DESIGN
-
-  .wheels
-    width: 125px
-    height: 125px
-    position: absolute
-    top: 110px
-    background: transparent
-    border-radius: 50%
-
-  .left-wheel
-    left: 109px
-    box-shadow: 0 0 0 70px #000
-
-  .right-wheel
-    right: 113px //109px DESIGN
-
-//@include animation(scroll 5s ease infinite)
-    
-@include keyframes(rotateLeft)
-  from
-    @include transform(rotate(0deg) translateZ(-1px))
-  to
-    @include transform(rotate(-360deg) translateZ(-1px))
-
-@include keyframes(rotateRight)
-  from
-    @include transform(rotate(0deg) translateZ(-1px))
-  to
-    @include transform(rotate(360deg) translateZ(-1px))
-
-.wheels div
-  width: 100%
-  height: 100%
-  background: transparent url(/assets/images/cassette/cs_wheel.png) no-repeat center center
-
-.spin
-  @include animation(rotateLeft 2s linear infinite forwards)
-
-.cassette-front
-  width: 100%
-  height: 100%
-  background:  url(/assets/images/cassette/cs_front.png) no-repeat center center //transparent url(images/cassette/cassette_reduced_v4.png) no-repeat center
-  //top: 0px
-  //left: 0px
-  position: relative
-  top: -379px
-
-  span
-    color: rgba(0, 0, 0, 0.7)
-    position: absolute
-    top: 83px
-    left: 67px
-    font-family: Arial
-    font-weight: bold
-    font-size: 20px
-
-  .tape-name
-    position: absolute
-    top: 51px //60px DESIGN
-    left: 100px //90px DESIGN
-    font-family: marker
-    font-size: 25px
-    width: 370px //450px DESIGN
-    margin: 0
-    text-indent: 90px //DESIGN
-    
-    //Second design try DESIGN
-    //text-align: left
-    //overflow: hidden
-    //white-space: nowrap
-    //text-overflow: ellipsis
-
-
-/* Controls list */
-ul.vc-controls
-  margin: 0 auto//10px auto DESIGN
-  height: 70px
-  width: 460px //440px
-  @include background(linear-gradient(top, rgba(170,170,170,0.35) 0%, rgba(255,255,255,0.44) 50%, rgba(255,255,255,0.53) 100%))
-  border: 1px solid rgba(0,0,0,0.1)
-  border-bottom-color: rgba(255,255,255,0.6)
-  padding: 8px
-  box-shadow: inset 0 1px 0px rgba(0,0,0,0.05), 0 1px 0 rgba(255,255,255,0.8), 0 -1px 0 rgba(255,255,255,0.4), inset 0 2px 19px rgba(0,0,0,0.05), 0 2px 1px rgba(0,0,0,0.06)
-  //@mixin box-sizing(content-box)
-  border-radius: 12px
-
-/* Controls list items */
-ul.vc-controls li 
-  display: block
-  float: left
-  width: 80px
-  height: 50px
-  line-height: 55px
-  text-align: left
-  padding: 10px
-  margin: 0
-  cursor: pointer
-  background: #ddd url(/assets/images/cassette/metal.jpg) no-repeat center top
-  box-shadow: inset 0 0 0 1px rgba(0,0,0, 0.2), inset 0 0 1px 2px rgba(255,255,255,0.9), inset 0 -6px 5px rgba(0,0,0,0.1), 0 6px 7px rgba(0,0,0,0.3), 0 4px 1px rgba(0,0,0,0.5)
-  @include user-select(none)
-
-ul.vc-controls li:first-child
-  border-radius: 8px 0 0 8px
-
-ul.vc-controls li:last-child
-  border-radius: 0px 8px 8px 0px
-
-ul.vc-controls li.vc-control-play
-  width: 120px
-
-/* Control icons */
-ul.vc-controls li span:before
-  font-size: 16px
-  line-height: 50px
-  text-align: center
-  float: left
-  color: #444
-  font-family: 'playericons'
-  text-shadow:  1px 1px 1px rgba(255,255,255,0.9)
-  font-style: normal
-  font-weight: normal
-  text-transform: none
-  speak: none
-  display: inline-block
-  text-decoration: inherit
-  width: 1em
-  margin-right: 0.2em
-  text-align: center
-
-li.vc-control-volume-off span:before
-  content: '🔇'
-li.vc-control-volume-down span:before 
-  content: '🔉'
-li.vc-control-volume-up span:before 
-  content: '🔊'
-
-ul.vc-controls li:hover
-  box-shadow: inset 0 0 0 1px rgba(0,0,0, 0.2), inset 0 0 1px 2px rgba(255,255,255,0.9), inset 0 -10px 15px rgba(0,0,0,0.1), 0 6px 7px rgba(0,0,0,0.3), 0 4px 1px rgba(0,0,0,0.5)
-
-/* Pressed (active) */
-ul.vc-controls li.vc-control-active
-  height: 50px
-  margin-top: 2px
-  background-image: url(/assets/images/cassette/metal_dark.jpg)
-  box-shadow: inset 0 0 0 1px rgba(0,0,0, 0.18), inset 0 0 1px 2px rgba(255,255,255,0.5), inset 0 -6px 5px rgba(0,0,0,0.1), 0 6px 7px rgba(0,0,0,0.3), 0 2px 1px rgba(0,0,0,0.5)
-
-/* Activated */
-ul.vc-controls li.vc-control-pressed,
-ul.vc-controls li.vc-control-active.vc-control-pressed
-  height: 50px
-  background-image: url(/assets/images/cassette/metal_dark.jpg)
-  margin-top: 4px
-  box-shadow: inset 0 0 0 1px rgba(0,0,0, 0.2), inset 0 0 5px 1px rgba(255,255,255,0.5), inset 0 -10px 15px rgba(0,0,0,0.2), 0 7px 5px rgba(255,255,255,0.5)
-
-//Background for the volume knob 
-//See knobKnob.css for the knob style
-.vc-volume-wrap
-  display: none
-  width: 118px
-  height: 118px
-  position: absolute
-  bottom: 0px
-  left: 50%
-  margin-left: -318px
-  @include background(linear-gradient(top, rgba(170,170,170,0.35) 0%, rgba(255,255,255,0.44) 50%, rgba(255,255,255,0.53) 100%))
-  border: 1px solid rgba(0,0,0,0.1)
-  border-radius: 50%
-  padding: 8px
-  box-shadow: inset 0 1px 0px rgba(0,0,0,0.05), 0 1px 0 rgba(255,255,255,0.6), 0 -1px 0 rgba(255,255,255,0.4), inset 0 2px 19px rgba(0,0,0,0.05), 0 2px 1px rgba(0,0,0,0.06)
-  //@mixin box-sizing(content-box)
-
-
-.vc-volume-wrap:after
-  content: 'Volume'
-  margin-top: 15px
-  display: block
-
-/* Text style for controls */
-ul.vc-controls li,
-.vc-volume-wrap:after
-  font-family: 'Aldrich'
-  font-size: 10px
-  font-weight: 300
-  text-transform: uppercase
-  letter-spacing: 1px
-  color: #666
-  text-shadow: 0 1px 1px rgba(255,255,255,0.8)
-
-
-// About css
-
-.flex-boxes 
-  $base-border-radius: 3px !default
-  $base-background-color: white !default
-  $dark-gray: #333 !default
-  $light-gray: #DDD !default
-  $base-font-color: $dark-gray !default
-  $flex-box-border-color: $light-gray
-  $flex-box-border: 1px solid $flex-box-border-color
-  $flex-box-background: lighten($light-gray, 10%)
-  $flex-box-gutter: 0.4em
-  $flex-box-width: 18em
-  $flex-box-color: transparentize($base-font-color, 0.3)
-  $flex-box-top-colors: tomato, #72BFBF, #92B1E3, #E3D743, #CCC, #F6C05C
-
-  @include clearfix
-  @include display(flex)
-  @include justify-content(center)
-  @include align-items(stretch)
-  @include flex-wrap(wrap)
-  clear: both
-  text-align: center
-
-  .flex-box 
-    @include transition (all 0.2s ease-in-out)
-    @include flex(2 2 15em)
-    @include align-self(stretch)
-    background: $flex-box-background
-    border-radius: $base-border-radius
-    box-shadow: inset 0 0 1px $flex-box-border-color, 0 2px 4px darken($base-background-color, 10%)
-    display: block
-    margin: $flex-box-gutter
-    padding: 2em 2em 3em 2em
-    text-decoration: none
-
-    @for $i from 1 to 7  
-      // assign colors from $flex-box-top-colors list
-      &:nth-child(#{$i}) 
-        $color-from-list: nth($flex-box-top-colors, $i)
-        border-top: 6px solid $color-from-list
-        
-        &:focus, &:hover 
-          background-color: transparentize($color-from-list, 0.9)
-
-    img 
-      display: block
-      height: 3em
-      margin-bottom: 2em
-      margin: auto
-      opacity: 0.4
-
-    .flex-title 
-      color: $flex-box-color
-      font-size: 1.2em
-      font-weight: 800
-      margin-bottom: 0.5em
-
-    p 
-      color: transparentize($flex-box-color, 0.1)
-      line-height: 1.5em
-      margin: auto
-  
-  .flex-box-big 
-    @include flex(1 1 40em)
diff --git a/README.md b/README.md
index 3497a2b..91eed33 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,20 @@
 # Playbot-web
 
-This README outlines the details of collaborating on this Ember application.
-A short introduction of this app could easily go here.
+Playbot website lets you listen to thousands of carefully chosen tracks. These tracks cover mainly electro substyles and are aggregated by members of the Nightiies organization.
+The website plays youtube and soundcloud tracks and list them accordindly to some user defined parameters (date of sharing, poster, tag ...).
+All the tracks follow on from each other -randomly or not depending of the display mode- making it perfect as background music player.
+
+Playbotweb deploys an ember.js frond-end.
+
+# Playbot
+
+Playbot is an irc tool developped to share musics or videos : users give away sounds and the software stores and manages them. The playbot-web website uses this database to offer handpicked tracks.
+
+# Playbot API
+
+The link between playbot database and the website is a Rails API.
+
+# Playbot-web installation
 
 ## Prerequisites
 
diff --git a/app/controllers/cassette.js b/app/controllers/cassette.js
index 880cde8..d7b9ed8 100644
--- a/app/controllers/cassette.js
+++ b/app/controllers/cassette.js
@@ -52,9 +52,13 @@ var CassetteController = Ember.Controller.extend({
 
   actions: {
     playButton: function() {
+      var audio = new Audio('/assets/samples/click.ogg');
+      audio.play();
       this.play();
     },
     stopButton: function() {
+      var audio = new Audio('/assets/samples/click.ogg');
+      audio.play();
       var track = this.model.tracks.content[this.get('n')];
       stop_cassette(track);
     },
diff --git a/app/index.html b/app/index.html
index 3624921..d21de89 100644
--- a/app/index.html
+++ b/app/index.html
@@ -4,8 +4,9 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <title>Playbot</title>
-    <meta name="description" content="">
+    <meta name="description" content="Listen to handpicked electro tracks.">
     <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="icon" href="/assets/favicon-coffee.ico">
     <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
 
     {{content-for 'head'}}
diff --git a/app/models/track.js b/app/models/track.js
index c99ebbe..00acda8 100644
--- a/app/models/track.js
+++ b/app/models/track.js
@@ -6,4 +6,6 @@ export default DS.Model.extend({
   author: DS.attr('string'),
   channel: DS.attr('string'),
   provider: DS.attr('string'),
+
+  tags: DS.hasMany('tag', {async: false})
 });
diff --git a/app/styles/app.sass b/app/styles/app.sass
index b8f2ff1..94e461f 100644
--- a/app/styles/app.sass
+++ b/app/styles/app.sass
@@ -26,7 +26,7 @@ html
 
 .everything  
   opacity: 1
-  @include transition(opacity 1s ease)
+  @include transition(opacity 0.5s ease)
 
 .preload //.pace-running
   height: 100vh
diff --git a/app/templates/about.hbs b/app/templates/about.hbs
index a38cb5b..a738e5d 100644
--- a/app/templates/about.hbs
+++ b/app/templates/about.hbs
@@ -3,10 +3,10 @@
 <a href="javascript:void(0)" class="flex-box flex-box-big">
     <i class="icon fa fa-question"/>
     <h1 class="flex-title">Help</h1>
-    <p>The main part of the website is the Tracks section, where you can filter the sounds by tags (ex: dub, rock), poster, date or origin. From this section, clicking icons in the top-right changes the design. The cassette <i class="fa fa-simplybuilt"/> view plays random tracks matching the filters.</p>
+    <p>The main part of the website is the Tracks section, where you can filter the music by tags (ex: dub, rock), poster, date or origin. From this section, clicking icons in the top-right changes the design. The cassette <i class="fa fa-simplybuilt"/> view plays random tracks matching the filters.</p>
     <p>Parse the users list and look for someone with the same taste as yours.
     </p>
-    <p>The channels are irc chat rooms where we rant on actual state of house music.
+    <p>The channels are irc chat rooms where we rant on present state of house music.
     </p>
 </a> 
 <a href="https://git.iiens.net/morignot2011/playbot/tree/master" class="flex-box">
diff --git a/app/templates/cassette.hbs b/app/templates/cassette.hbs
index 08efbf3..cd572a3 100644
--- a/app/templates/cassette.hbs
+++ b/app/templates/cassette.hbs
@@ -14,7 +14,7 @@
         <p>{{track.name}}</p>
         <p>{{track.channel}}</p>
         <p>{{track.author}}</p>
-        <p>{{#each tag in track.tag}}
+        <p>{{#each tag in track.tags}}
           {{tag.name}} 
           {{/each}}</p>
       </div>
@@ -34,7 +34,7 @@
         <i class='fa fa-stop'></i>  Stop
       </li>
       <li class="vc-control-switch" {{action "nextButton"}}>
-        Random
+        Next
       </li>
   </ul>
   <div class="vc-volume-wrap">
diff --git a/app/templates/tracks.hbs b/app/templates/tracks.hbs
index 856846e..9ece325 100644
--- a/app/templates/tracks.hbs
+++ b/app/templates/tracks.hbs
@@ -16,7 +16,7 @@
             </td>
             <td class='track_name'>{{track.name}}</td>
             <td class='track_tags'>
-              {{#each tag in track.tag}}
+              {{#each tag in track.tags}}
                 {{#link-to 'tracks' (query-params tag=tag.name page=1) bubbles=false}}{{tag.name}}{{/link-to}} 
               {{/each}}
             </td>
@@ -44,7 +44,7 @@
             </p>
             <p class='track'>
               <br/>
-              {{#each tag in track.tag}}
+              {{#each tag in track.tags}}
                 {{tag.name}} 
               {{/each}}
             </p>
diff --git a/public/assets/favicon-coffee.ico b/public/assets/favicon-coffee.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c105d0a0cbda181a8824cfca9ac0f6dedb0f1178
GIT binary patch
literal 1150
zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYILfs!CRn1GU!QV<Zo1mgch
zVvt&Ym>)>g3$x<|Oh2_~pgXdG_zMuj>_DbL;#v6Y!lM^v&KCmuVe0VFe}VR#2Vy&P
zvw&jw^ugrXfa-1oF@{@+(GRi{s7@KAmK^&j)ep26pZh-$;Rl@Ihwh)D!2b`71rTmv
YgkTW+0Y4N2#U6k#Clo{ZFg+j|01~0Ep8x;=

literal 0
HcmV?d00001

diff --git a/public/assets/samples/click.ogg b/public/assets/samples/click.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..692cafdea4d403a327217d1d43c60c6f1bb663f6
GIT binary patch
literal 5825
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

literal 0
HcmV?d00001

-- 
GitLab