├── .husky ├── .gitignore └── pre-commit ├── src ├── routes │ ├── +page.ts │ ├── +layout.svelte │ └── +page.svelte ├── global.d.ts ├── stores.ts ├── env.d.ts ├── lib │ ├── Nav.svelte │ ├── RandomFactsOverlay.svelte │ ├── BreakpointHelper.svelte │ ├── SpotifyButton.svelte │ ├── ImageUpload.svelte │ ├── Footer.svelte │ ├── PlaylistCreationSuccessModal.svelte │ ├── LoginWithSpotify.svelte │ └── PlaylistCreationForm.svelte ├── utils │ └── types.ts ├── app.html ├── app.css └── api.ts ├── static ├── concertmash.png ├── crowd-at-concert.jpg ├── Spotify_Logo_RGB_White.png └── favicon.svg ├── .env ├── lint-staged.config.js ├── .gitignore ├── prettier.config.js ├── vite.config.js ├── tsconfig.json ├── netlify.toml ├── svelte.config.js ├── README.md ├── eslint.config.js ├── package.json └── pnpm-lock.yaml /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | pnpm lint-staged 2 | -------------------------------------------------------------------------------- /src/routes/+page.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true; 2 | export const trailingSlash = 'ignore'; 3 | -------------------------------------------------------------------------------- /static/concertmash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcmxcdev/ConcertMash/HEAD/static/concertmash.png -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | VITE_SPOTIFY_CLIENT_ID=1dec37aed61d44f5b63eaced6b2000d5 2 | VITE_APP_BASE_URL=http://127.0.0.1:3000/ 3 | -------------------------------------------------------------------------------- /static/crowd-at-concert.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcmxcdev/ConcertMash/HEAD/static/crowd-at-concert.jpg -------------------------------------------------------------------------------- /static/Spotify_Logo_RGB_White.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mcmxcdev/ConcertMash/HEAD/static/Spotify_Logo_RGB_White.png -------------------------------------------------------------------------------- /lint-staged.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | '*.{js,cjs,json,ts,svelte}': () => [ 3 | 'pnpm format', 4 | 'pnpm lint:fix', 5 | 'pnpm validate', 6 | ], 7 | }; 8 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module 'svelte-filepond'; 4 | declare module 'filepond-plugin-image-exif-orientation'; 5 | declare module 'filepond-plugin-image-preview'; 6 | -------------------------------------------------------------------------------- /src/stores.ts: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store'; 2 | 3 | export const storedToken = writable(null); 4 | export const storedUser = writable< 5 | globalThis.SpotifyApi.CurrentUsersProfileResponse | undefined 6 | >(); 7 | -------------------------------------------------------------------------------- /static/favicon.svg: -------------------------------------------------------------------------------- 1 | 🎧 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # Output 4 | .output 5 | .vercel 6 | .netlify 7 | .wrangler 8 | /.svelte-kit 9 | /build 10 | 11 | # OS 12 | .DS_Store 13 | Thumbs.db 14 | 15 | # Env 16 | .env 17 | .env.* 18 | !.env.example 19 | !.env.test 20 | 21 | # Vite 22 | vite.config.js.timestamp-* 23 | vite.config.ts.timestamp-* 24 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | singleQuote: true, 3 | svelteAllowShorthand: true, 4 | plugins: ['prettier-plugin-svelte', 'prettier-plugin-tailwindcss'], 5 | overrides: [ 6 | { 7 | files: '*.svelte', 8 | options: { 9 | parser: 'svelte', 10 | }, 11 | }, 12 | ], 13 | }; 14 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | interface ImportMetaEnv extends Readonly> { 4 | readonly MODE: string; 5 | readonly VITE_SPOTIFY_CLIENT_ID: string; 6 | readonly VITE_APP_BASE_URL: string; 7 | } 8 | 9 | interface ImportMeta { 10 | readonly env: ImportMetaEnv; 11 | } 12 | -------------------------------------------------------------------------------- /src/lib/Nav.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import tailwindcss from '@tailwindcss/vite'; 3 | 4 | /** @type {import('vite').UserConfig} */ 5 | const config = { 6 | plugins: [tailwindcss(), sveltekit()], 7 | server: { 8 | port: 3000, 9 | }, 10 | preview: { 11 | port: 3000, 12 | }, 13 | ssr: { 14 | noExternal: ['@fortawesome/*'], 15 | }, 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 |