├── FUNDING.yml ├── server ├── config │ ├── allowed_api.example.js │ ├── recaptcha.example.js │ ├── google.example.js │ ├── cert_config.example.js │ ├── api_key.example.js │ ├── mongo_config.example.js │ └── mailconfig.example.js ├── VERSION.js ├── public │ ├── assets │ │ ├── images │ │ │ ├── q.png │ │ │ ├── Logo.png │ │ │ ├── s1.png │ │ │ ├── s2.png │ │ │ ├── s3.png │ │ │ ├── glight.png │ │ │ ├── gmark.png │ │ │ ├── btcdonate.png │ │ │ ├── ethdonate.png │ │ │ ├── facebook.png │ │ │ ├── favicon.ico │ │ │ ├── favicon.png │ │ │ ├── highlogo.png │ │ │ ├── loading.png │ │ │ ├── spotify.png │ │ │ ├── twitter.png │ │ │ ├── youtube.png │ │ │ ├── GitHub_Logo.png │ │ │ ├── google_play.png │ │ │ ├── squareicon.png │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── mstile-150x150.png │ │ │ ├── small-square.jpg │ │ │ ├── apple-touch-icon.png │ │ │ ├── squareicon_small.png │ │ │ ├── squareicon_small_old.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ ├── apple-touch-icon-precomposed.png │ │ │ ├── browserconfig.xml │ │ │ ├── safari-pinned-tab.svg │ │ │ └── z.svg │ │ ├── manifest.json │ │ ├── admin │ │ │ └── not_authenticated │ │ │ │ └── js │ │ │ │ └── main.js │ │ ├── css │ │ │ ├── animations.css │ │ │ └── globals.css │ │ ├── js │ │ │ ├── mobileremote.js │ │ │ ├── token_apply.js │ │ │ ├── callback.js │ │ │ ├── hostcontroller.js │ │ │ └── suggestions.js │ │ ├── sclib │ │ │ └── scapi.js │ │ └── html │ │ │ └── callback.html │ ├── partials │ │ ├── remote │ │ │ ├── volume.handlebars │ │ │ ├── buttons.handlebars │ │ │ ├── input.handlebars │ │ │ └── header.handlebars │ │ ├── channel │ │ │ ├── suggestions.handlebars │ │ │ ├── chat.handlebars │ │ │ ├── tabs.handlebars │ │ │ ├── playlist.handlebars │ │ │ ├── search.handlebars │ │ │ ├── players.handlebars │ │ │ ├── client_settings.handlebars │ │ │ ├── header.handlebars │ │ │ ├── settings.handlebars │ │ │ └── modal.handlebars │ │ ├── frontpage │ │ │ ├── channels.handlebars │ │ │ ├── search.handlebars │ │ │ ├── channel.handlebars │ │ │ └── header.handlebars │ │ ├── modal │ │ │ ├── cookie.handlebars │ │ │ └── about.handlebars │ │ ├── spinner.handlebars │ │ ├── contact.handlebars │ │ ├── donate.handlebars │ │ └── footer.handlebars │ ├── layouts │ │ ├── client │ │ │ ├── channel.handlebars │ │ │ ├── remote.handlebars │ │ │ ├── frontpage.handlebars │ │ │ ├── token.handlebars │ │ │ ├── embed.handlebars │ │ │ └── main.handlebars │ │ └── admin │ │ │ ├── not_authenticated.handlebars │ │ │ └── main.handlebars │ └── service-worker.js ├── README.md ├── models │ └── user.js ├── routing │ └── client │ │ ├── icons_routing.js │ │ └── router.js ├── handlers │ ├── aggregates.js │ ├── notifications.js │ ├── db.js │ └── frontpage.js ├── apps │ ├── genre_generator.js │ ├── client.js │ └── admin.js ├── pm2.js ├── app.js ├── EVENTS.md └── REST.md ├── pm2.json ├── .gitignore ├── package.json ├── README.md └── gulpfile.js /FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [kasperrt] 2 | custom: ["https://www.paypal.me/zoffmusic"] 3 | -------------------------------------------------------------------------------- /server/config/allowed_api.example.js: -------------------------------------------------------------------------------- 1 | var key = [""]; 2 | 3 | module.exports = key; 4 | -------------------------------------------------------------------------------- /server/VERSION.js: -------------------------------------------------------------------------------- 1 | VERSION = 6; 2 | 3 | try { 4 | module.exports = VERSION; 5 | } catch (e) {} 6 | -------------------------------------------------------------------------------- /server/public/assets/images/q.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/q.png -------------------------------------------------------------------------------- /server/public/assets/images/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/Logo.png -------------------------------------------------------------------------------- /server/public/assets/images/s1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/s1.png -------------------------------------------------------------------------------- /server/public/assets/images/s2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/s2.png -------------------------------------------------------------------------------- /server/public/assets/images/s3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/s3.png -------------------------------------------------------------------------------- /server/public/assets/images/glight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/glight.png -------------------------------------------------------------------------------- /server/public/assets/images/gmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/gmark.png -------------------------------------------------------------------------------- /server/public/assets/images/btcdonate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/btcdonate.png -------------------------------------------------------------------------------- /server/public/assets/images/ethdonate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/ethdonate.png -------------------------------------------------------------------------------- /server/public/assets/images/facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/facebook.png -------------------------------------------------------------------------------- /server/public/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/favicon.ico -------------------------------------------------------------------------------- /server/public/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/favicon.png -------------------------------------------------------------------------------- /server/public/assets/images/highlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/highlogo.png -------------------------------------------------------------------------------- /server/public/assets/images/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/loading.png -------------------------------------------------------------------------------- /server/public/assets/images/spotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/spotify.png -------------------------------------------------------------------------------- /server/public/assets/images/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/twitter.png -------------------------------------------------------------------------------- /server/public/assets/images/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/youtube.png -------------------------------------------------------------------------------- /server/public/assets/images/GitHub_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/GitHub_Logo.png -------------------------------------------------------------------------------- /server/public/assets/images/google_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/google_play.png -------------------------------------------------------------------------------- /server/public/assets/images/squareicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/squareicon.png -------------------------------------------------------------------------------- /server/config/recaptcha.example.js: -------------------------------------------------------------------------------- 1 | var recaptcha = { 2 | site: "xxxx", 3 | key: "xxxxx", 4 | } 5 | 6 | module.exports = recaptcha; 7 | -------------------------------------------------------------------------------- /server/public/assets/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/favicon-16x16.png -------------------------------------------------------------------------------- /server/public/assets/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/favicon-32x32.png -------------------------------------------------------------------------------- /server/public/assets/images/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/mstile-150x150.png -------------------------------------------------------------------------------- /server/public/assets/images/small-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/small-square.jpg -------------------------------------------------------------------------------- /server/config/google.example.js: -------------------------------------------------------------------------------- 1 | var google = { 2 | "analytics": "xxxx", 3 | "adsense": "xxxx", 4 | } 5 | 6 | module.exports = google; 7 | -------------------------------------------------------------------------------- /server/public/assets/images/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/apple-touch-icon.png -------------------------------------------------------------------------------- /server/public/assets/images/squareicon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/squareicon_small.png -------------------------------------------------------------------------------- /server/public/assets/images/squareicon_small_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/squareicon_small_old.png -------------------------------------------------------------------------------- /server/config/cert_config.example.js: -------------------------------------------------------------------------------- 1 | var cert = { 2 | privateKey: 'XX', 3 | certificate: 'XX', 4 | ca: 'XX' 5 | } 6 | 7 | module.exports = cert; 8 | -------------------------------------------------------------------------------- /server/public/assets/images/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/android-chrome-192x192.png -------------------------------------------------------------------------------- /server/public/assets/images/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/android-chrome-512x512.png -------------------------------------------------------------------------------- /server/public/assets/images/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zoff-music/zoff/HEAD/server/public/assets/images/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /server/config/api_key.example.js: -------------------------------------------------------------------------------- 1 | var api_key = { 2 | youtube: "xxxx", 3 | soundcloud: "xx" // This can be excluded if you don't have a soundcloud key 4 | }; 5 | 6 | try { 7 | module.exports = api_key; 8 | } catch (e) {} 9 | -------------------------------------------------------------------------------- /server/public/partials/remote/volume.handlebars: -------------------------------------------------------------------------------- 1 |
5 | -------------------------------------------------------------------------------- /server/config/mongo_config.example.js: -------------------------------------------------------------------------------- 1 | var mongo_config = { 2 | config: 'mydb', 3 | secret: 'secret', 4 | users: 'users', 5 | host: 'localhost', 6 | port: '27017', 7 | expire: 86400, 8 | }; 9 | 10 | module.exports = mongo_config; 11 | -------------------------------------------------------------------------------- /server/public/assets/images/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 |
9 |
10 |
11 |
12 |
13 |
14 | ## Install
15 |
16 | Prerequisites:
17 |
18 | ```
19 | MongoDB : https://www.mongodb.org/
20 | NodeJS : https://nodejs.org/en/
21 | npm : https://www.npmjs.com/
22 | ```
23 |
24 | Clone this repository into a folder, and navigate to it. Use ```$ npm install``` in the project folder.
25 |
26 | For the server to run, you have to have the files
27 |
28 | ```
29 | api_key.js
30 | mongo_config.js
31 | ```
32 |
33 | in ```/server/config```. There are ```*.example.js``` files for all the ones mentioned above. If you're going to deploy the server with a certificate, you also need to create the ```cert_config.js``` in ```/server/config/```. If you want the mailing to work, take a look at ```mailconfig.example.js``` and ```recaptcha.example.js```. You'll need ```mailconfig.js``` and ```recaptcha.js``` for this to work.
34 |
35 | If you want to use Google Analytics, have a look at ```analytics.example.js``` in ```server/config/```.
36 |
37 | Use ```$ npm start``` to start the server. (Alternative you can use the ```pm2.json``` in the project-root, if you prefer pm2 for running the apps.)
38 |
39 | More info in server/ README
40 |
41 | ### About
42 |
43 | Zoff is mainly a webbased service. The website uses NodeJS with Socket.IO, MongoDB and express on the backend, with JavaScript and Materialize on the frontend.
44 |
45 | The team consists of Kasper Rynning-Tønnesen and Nicolas Almagro Tonne, and the project has been worked on since late 2014.
46 |
47 | ### Contact
48 |
49 | The team can be reached on contact@zoff.me
50 |
51 | ### Screenshots of desktop version:
52 |
53 | 
54 |
55 | 
56 |
57 | 
58 |
59 | 
60 |
61 | 
62 |
63 | 
64 |
65 | ### Embedded player:
66 |
67 | 
68 |
69 | ### Screenshots of the mobile version:
70 |
71 | 
72 | 
73 | 
74 |
75 | ### Legal
76 |
77 | Creative Commons License
78 | Zoff is licensed under a
79 | Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Norway License..
80 | Do not redistribute without permission from the developers.
81 |
82 | Copyright © 2019
83 | Kasper Rynning-Tønnesen and Nicolas Almagro Tonne
84 |
--------------------------------------------------------------------------------
/server/public/layouts/client/token.handlebars:
--------------------------------------------------------------------------------
1 | Here is your api token
22 |Use it wisely, and don't lose it!
24 |As of now, the tokens have a limit of 20 requests a second. If you need a higher limit, just contact the team and we'll set you up for as much as you need.
25 | {{else}} 26 |Apply for a API-token with your email here! You'll get an email on the specified address, with a link. Follow that link, and the token will be shown to you! Take good care of it, and don't lose it. It won't be shown to you again.
28 |If you're wondering anything about how the api works, there is a guide on our GitHub. You can also click HERE to be taken to the detailed README.
29 |As of now, the tokens have a limit of 20 requests a second. If you need a higher limit, just contact the team and we'll set you up for as much as you need.
30 |If you want to restrict the token for use on one domain only, you can change the Origin from * to the website of your choice (if you want for https://zoff.me, then you'd input zoff.me).
31 | {{/if}} 32 |Any lost tokens can easily be deleted by our admins, so just send us an email if something goes awry. Just click the CONTACT button in the footer, and we will be with you as fast as we can!
61 |81 | When enabling intelligent playlist, playlist elements are not updated and moved around when the playlist is in focus. If things are jumping too much around in the playlist when voting, you should enable this. 82 |
83 | {{#unless client}} 84 |85 | By enabling local mode, you won't receive updates in position of the currently playing song, you'll be able to vote as many times as you please, and you can skip to a specific location in the song. 86 |
87 | {{/unless}} 88 |This site supports chromecasting!
69 |