├── .env.example ├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .npmrc ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── eslint.config.js ├── package.json ├── playwright.config.ts ├── postcss.config.js ├── src ├── app.d.ts ├── app.html ├── lib │ ├── animations.ts │ ├── array.ts │ ├── auth.ts │ ├── href.test.ts │ ├── href.ts │ ├── images │ │ ├── github.svg │ │ ├── jukelab-dark.svg │ │ └── jukelab.svg │ ├── photobooth.ts │ ├── playlist.json │ ├── recordutil.test.ts │ ├── recordutil.ts │ ├── spotify │ │ ├── api.test.ts │ │ ├── api.ts │ │ ├── auth.ts │ │ └── to.ts │ ├── storage.ts │ ├── string.ts │ ├── supabase │ │ ├── auth.ts │ │ └── broadcast.svelte.ts │ ├── themes.ts │ ├── time.ts │ └── types │ │ ├── audio.ts │ │ ├── database.ts │ │ └── music.ts ├── routes │ ├── +layout.svelte │ ├── +layout.ts │ ├── +page.svelte │ ├── Header.svelte │ ├── about │ │ └── +page.svelte │ ├── app.css │ ├── audio │ │ ├── +page.svelte │ │ ├── Audio.svelte │ │ ├── Broadcast.svelte │ │ ├── Controls.svelte │ │ ├── Play.svelte │ │ ├── PlaySkip.svelte │ │ ├── Pos.svelte │ │ └── Vol.svelte │ ├── auth │ │ └── callback │ │ │ └── +page.svelte │ └── spotify │ │ ├── +page.svelte │ │ ├── Audio.svelte │ │ ├── Avatar.svelte │ │ ├── Login.svelte │ │ ├── Menu.svelte │ │ ├── Queue.svelte │ │ ├── Sleep.svelte.ts │ │ ├── Title.svelte │ │ ├── desktop │ │ ├── +page.server.ts │ │ ├── +page.svelte │ │ ├── Attract.svelte │ │ ├── PlayDialog.svelte │ │ ├── README.md │ │ ├── ThemeDialog.svelte │ │ └── attract │ │ │ ├── DVD.svelte │ │ │ ├── Standard.svelte │ │ │ └── Vinyl.svelte │ │ ├── keypad │ │ ├── +page.svelte │ │ └── README.md │ │ ├── log.svelte.ts │ │ ├── playlist.svelte.ts │ │ ├── remote │ │ └── +page.svelte │ │ └── vinyl │ │ └── +page.svelte └── svelte-lottie-player.d.ts ├── static ├── dice.svg ├── favicon.png ├── jukebox.png ├── playlist.json ├── robots.txt ├── snow.svg ├── steps.mp3 ├── token.png └── vinyl.png ├── supabase ├── .gitignore ├── config.toml ├── functions │ └── tokens │ │ └── index.ts ├── migrations │ ├── 20241104092543_create_channels_table.sql │ └── 20241116005255_create_tokens_table.sql └── seed.sql ├── svelte.config.js ├── tailwind.config.ts ├── tests └── test.ts ├── tsconfig.json └── vite.config.ts /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/.env.example -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/.prettierignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/.prettierrc -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/README.md -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/eslint.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/package.json -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/playwright.config.ts -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/postcss.config.js -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/app.d.ts -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/app.html -------------------------------------------------------------------------------- /src/lib/animations.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/animations.ts -------------------------------------------------------------------------------- /src/lib/array.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/array.ts -------------------------------------------------------------------------------- /src/lib/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/auth.ts -------------------------------------------------------------------------------- /src/lib/href.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/href.test.ts -------------------------------------------------------------------------------- /src/lib/href.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/href.ts -------------------------------------------------------------------------------- /src/lib/images/github.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/images/github.svg -------------------------------------------------------------------------------- /src/lib/images/jukelab-dark.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/images/jukelab-dark.svg -------------------------------------------------------------------------------- /src/lib/images/jukelab.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/images/jukelab.svg -------------------------------------------------------------------------------- /src/lib/photobooth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/photobooth.ts -------------------------------------------------------------------------------- /src/lib/playlist.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/playlist.json -------------------------------------------------------------------------------- /src/lib/recordutil.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/recordutil.test.ts -------------------------------------------------------------------------------- /src/lib/recordutil.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/recordutil.ts -------------------------------------------------------------------------------- /src/lib/spotify/api.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/spotify/api.test.ts -------------------------------------------------------------------------------- /src/lib/spotify/api.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/spotify/api.ts -------------------------------------------------------------------------------- /src/lib/spotify/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/spotify/auth.ts -------------------------------------------------------------------------------- /src/lib/spotify/to.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/spotify/to.ts -------------------------------------------------------------------------------- /src/lib/storage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/storage.ts -------------------------------------------------------------------------------- /src/lib/string.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/string.ts -------------------------------------------------------------------------------- /src/lib/supabase/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/supabase/auth.ts -------------------------------------------------------------------------------- /src/lib/supabase/broadcast.svelte.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/supabase/broadcast.svelte.ts -------------------------------------------------------------------------------- /src/lib/themes.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/themes.ts -------------------------------------------------------------------------------- /src/lib/time.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/time.ts -------------------------------------------------------------------------------- /src/lib/types/audio.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/types/audio.ts -------------------------------------------------------------------------------- /src/lib/types/database.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/types/database.ts -------------------------------------------------------------------------------- /src/lib/types/music.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/lib/types/music.ts -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/+layout.svelte -------------------------------------------------------------------------------- /src/routes/+layout.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true; 2 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/+page.svelte -------------------------------------------------------------------------------- /src/routes/Header.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/Header.svelte -------------------------------------------------------------------------------- /src/routes/about/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/about/+page.svelte -------------------------------------------------------------------------------- /src/routes/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/app.css -------------------------------------------------------------------------------- /src/routes/audio/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/+page.svelte -------------------------------------------------------------------------------- /src/routes/audio/Audio.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/Audio.svelte -------------------------------------------------------------------------------- /src/routes/audio/Broadcast.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/Broadcast.svelte -------------------------------------------------------------------------------- /src/routes/audio/Controls.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/Controls.svelte -------------------------------------------------------------------------------- /src/routes/audio/Play.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/Play.svelte -------------------------------------------------------------------------------- /src/routes/audio/PlaySkip.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/PlaySkip.svelte -------------------------------------------------------------------------------- /src/routes/audio/Pos.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/Pos.svelte -------------------------------------------------------------------------------- /src/routes/audio/Vol.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/audio/Vol.svelte -------------------------------------------------------------------------------- /src/routes/auth/callback/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/auth/callback/+page.svelte -------------------------------------------------------------------------------- /src/routes/spotify/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/+page.svelte -------------------------------------------------------------------------------- /src/routes/spotify/Audio.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Audio.svelte -------------------------------------------------------------------------------- /src/routes/spotify/Avatar.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Avatar.svelte -------------------------------------------------------------------------------- /src/routes/spotify/Login.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Login.svelte -------------------------------------------------------------------------------- /src/routes/spotify/Menu.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Menu.svelte -------------------------------------------------------------------------------- /src/routes/spotify/Queue.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Queue.svelte -------------------------------------------------------------------------------- /src/routes/spotify/Sleep.svelte.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Sleep.svelte.ts -------------------------------------------------------------------------------- /src/routes/spotify/Title.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/Title.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/+page.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/+page.server.ts -------------------------------------------------------------------------------- /src/routes/spotify/desktop/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/+page.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/Attract.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/Attract.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/PlayDialog.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/PlayDialog.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/README.md -------------------------------------------------------------------------------- /src/routes/spotify/desktop/ThemeDialog.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/ThemeDialog.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/attract/DVD.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/attract/DVD.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/attract/Standard.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/attract/Standard.svelte -------------------------------------------------------------------------------- /src/routes/spotify/desktop/attract/Vinyl.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/desktop/attract/Vinyl.svelte -------------------------------------------------------------------------------- /src/routes/spotify/keypad/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/keypad/+page.svelte -------------------------------------------------------------------------------- /src/routes/spotify/keypad/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/keypad/README.md -------------------------------------------------------------------------------- /src/routes/spotify/log.svelte.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/log.svelte.ts -------------------------------------------------------------------------------- /src/routes/spotify/playlist.svelte.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/playlist.svelte.ts -------------------------------------------------------------------------------- /src/routes/spotify/remote/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/remote/+page.svelte -------------------------------------------------------------------------------- /src/routes/spotify/vinyl/+page.svelte: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/routes/spotify/vinyl/+page.svelte -------------------------------------------------------------------------------- /src/svelte-lottie-player.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/src/svelte-lottie-player.d.ts -------------------------------------------------------------------------------- /static/dice.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/dice.svg -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/favicon.png -------------------------------------------------------------------------------- /static/jukebox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/jukebox.png -------------------------------------------------------------------------------- /static/playlist.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/playlist.json -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/robots.txt -------------------------------------------------------------------------------- /static/snow.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/snow.svg -------------------------------------------------------------------------------- /static/steps.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/steps.mp3 -------------------------------------------------------------------------------- /static/token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/token.png -------------------------------------------------------------------------------- /static/vinyl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/static/vinyl.png -------------------------------------------------------------------------------- /supabase/.gitignore: -------------------------------------------------------------------------------- 1 | # Supabase 2 | .branches 3 | .temp 4 | .env 5 | -------------------------------------------------------------------------------- /supabase/config.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/supabase/config.toml -------------------------------------------------------------------------------- /supabase/functions/tokens/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/supabase/functions/tokens/index.ts -------------------------------------------------------------------------------- /supabase/migrations/20241104092543_create_channels_table.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/supabase/migrations/20241104092543_create_channels_table.sql -------------------------------------------------------------------------------- /supabase/migrations/20241116005255_create_tokens_table.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/supabase/migrations/20241116005255_create_tokens_table.sql -------------------------------------------------------------------------------- /supabase/seed.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/svelte.config.js -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tests/test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/tests/test.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/tsconfig.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nzoschke/jukelab/HEAD/vite.config.ts --------------------------------------------------------------------------------