├── .prettierrc
├── static
├── favicon.png
└── README.md
├── components
├── README.md
├── Footer.vue
├── Header.vue
├── Progress.vue
└── NowPlaying.vue
├── .editorconfig
├── layouts
├── README.md
└── default.vue
├── pages
├── README.md
├── index.vue
└── auth.vue
├── assets
├── README.md
├── spotify.svg
└── twitter.svg
├── plugins
└── README.md
├── middleware
└── README.md
├── store
├── README.md
└── index.js
├── README.md
├── docker-compose.yml
├── package.json
├── LICENSE
├── nuxt.config.js
├── .gitignore
└── api
└── index.js
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true
4 | }
5 |
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cherscarlett/cherislistening/HEAD/static/favicon.png
--------------------------------------------------------------------------------
/components/README.md:
--------------------------------------------------------------------------------
1 | # COMPONENTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | The components directory contains your Vue.js Components.
6 |
7 | _Nuxt.js doesn't supercharge these components._
8 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/layouts/README.md:
--------------------------------------------------------------------------------
1 | # LAYOUTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Application Layouts.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).
8 |
--------------------------------------------------------------------------------
/pages/README.md:
--------------------------------------------------------------------------------
1 | # PAGES
2 |
3 | This directory contains your Application Views and Routes.
4 | The framework reads all the `*.vue` files inside this directory and creates the router of your application.
5 |
6 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).
7 |
--------------------------------------------------------------------------------
/assets/README.md:
--------------------------------------------------------------------------------
1 | # ASSETS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked).
8 |
--------------------------------------------------------------------------------
/plugins/README.md:
--------------------------------------------------------------------------------
1 | # PLUGINS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains Javascript plugins that you want to run before mounting the root Vue.js application.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins).
8 |
--------------------------------------------------------------------------------
/static/README.md:
--------------------------------------------------------------------------------
1 | # STATIC
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your static files.
6 | Each file inside this directory is mapped to `/`.
7 |
8 | Example: `/static/robots.txt` is mapped as `/robots.txt`.
9 |
10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).
11 |
--------------------------------------------------------------------------------
/middleware/README.md:
--------------------------------------------------------------------------------
1 | # MIDDLEWARE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your application middleware.
6 | Middleware let you define custom functions that can be run before rendering either a page or a group of pages.
7 |
8 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing#middleware).
9 |
--------------------------------------------------------------------------------
/store/README.md:
--------------------------------------------------------------------------------
1 | # STORE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Vuex Store files.
6 | Vuex Store option is implemented in the Nuxt.js framework.
7 |
8 | Creating a file in this directory automatically activates the option in the framework.
9 |
10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).
11 |
--------------------------------------------------------------------------------
/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Cher Is Listening
2 |
3 | > A Spotify Now Playing App
4 |
5 | [Demo](http://cherislistening.herokuapp.com/)
6 |
7 | [Tutorial](https://www.smashingmagazine.com/2019/03/spotify-app-vue-nuxt-javascript/)
8 |
9 | ## Build Setup
10 |
11 | ```bash
12 | # install dependencies
13 | $ npm install
14 |
15 | # serve with hot reload at localhost:3000
16 | $ npm run dev
17 |
18 | # build for production and launch server
19 | $ npm run build
20 | $ npm start
21 |
22 | # generate static project
23 | $ npm run generate
24 | ```
25 |
26 | For detailed explanation on how things work, checkout [Nuxt.js docs](https://nuxtjs.org).
27 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '2'
2 |
3 | services:
4 | nuxt:
5 | image: node:latest
6 | command: npm run dev
7 | working_dir: /app
8 | ports:
9 | - 3000:
10 | environment:
11 | - NUXT_HOST=0.0.0.0
12 | - NUXT_PORT=3000
13 | - REDIS_URL=redis://redis:6379
14 | - CLIENT_URL=http://localhost:3000
15 | volumes:
16 | - .:/app
17 | depends_on:
18 | - redis
19 | networks:
20 | default:
21 | internal:
22 |
23 | redis:
24 | image: redis:latest
25 | ports:
26 | - 6379:6379
27 | networks:
28 | internal:
29 |
30 | networks:
31 | default:
32 | internal:
33 | internal: true
34 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cherislistening",
3 | "version": "1.0.0",
4 | "description": "A Spotify Now Playing App",
5 | "author": "Cher Scarlett",
6 | "private": true,
7 | "scripts": {
8 | "dev": "nodemon --watch api --exec \"nuxt\"",
9 | "build": "nuxt build",
10 | "start": "nuxt start",
11 | "generate": "nuxt generate",
12 | "heroku-postbuild": "npm run build"
13 | },
14 | "dependencies": {
15 | "@nuxtjs/axios": "^5.3.6",
16 | "@nuxtjs/dotenv": "^1.3.0",
17 | "async-redis": "^1.1.5",
18 | "cross-env": "^5.2.0",
19 | "express": "^4.18.1",
20 | "nuxt": "^2.3.4"
21 | },
22 | "devDependencies": {
23 | "eslint-config-prettier": "^3.1.0",
24 | "eslint-plugin-prettier": "2.6.2",
25 | "nodemon": "^1.18.9",
26 | "prettier": "1.14.3"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/assets/spotify.svg:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Cher Scarlett
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |