├── .npmrc ├── src ├── lib │ ├── components │ │ ├── input.svelte │ │ ├── loading-dots.svelte │ │ ├── bookmark-meta.svelte │ │ ├── avatar-circle.svelte │ │ ├── reader.svelte │ │ ├── toasts.svelte │ │ ├── context-menu.svelte │ │ ├── paygate.svelte │ │ ├── header.svelte │ │ ├── discovery-bar.svelte │ │ ├── player-controls.svelte │ │ └── button.svelte │ ├── icons │ │ ├── play-button.svg │ │ ├── pause-button.svg │ │ ├── arrow.svg │ │ ├── kebab-menu.svg │ │ ├── checkmark.svg │ │ ├── plus-icon.svg │ │ ├── double-up-arrow.svg │ │ ├── close.svg │ │ ├── hamburger.svg │ │ ├── arrow-diag.svg │ │ ├── player-repeat.svg │ │ ├── sparkle.svg │ │ ├── close-button.svg │ │ ├── logo-icon.svg │ │ ├── share.svg │ │ ├── trash.svg │ │ ├── apple.svg │ │ ├── icon-warning.svg │ │ ├── google-g.svg │ │ ├── player-backward.svg │ │ └── player-forward.svg │ ├── directives │ │ └── clickAway.ts │ ├── constants │ │ └── sources.ts │ ├── utils │ │ └── date-time.ts │ └── store.ts ├── routes │ ├── +layout.server.ts │ ├── (app) │ │ ├── discover │ │ │ └── [source] │ │ │ │ └── +page.ts │ │ ├── read │ │ │ └── +page.svelte │ │ ├── add │ │ │ └── +page.svelte │ │ ├── +page.svelte │ │ ├── +layout.svelte │ │ └── settings │ │ │ └── +page.svelte │ ├── (auth) │ │ └── +layout.svelte │ └── +layout.svelte ├── app.html ├── app.css └── app.d.ts ├── android ├── app │ ├── .gitignore │ ├── src │ │ ├── main │ │ │ ├── res │ │ │ │ ├── drawable │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-night │ │ │ │ │ └── splash.png │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ ├── ic_launcher_background.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-ldpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ ├── ic_launcher_background.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ ├── ic_launcher_background.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── drawable-land-hdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-ldpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-mdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-hdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-ldpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-mdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ ├── ic_launcher_background.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ ├── ic_launcher_background.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── drawable-land-xhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-xxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-xxxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-xhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-xxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-xxxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ ├── ic_launcher_background.png │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ ├── drawable-land-night-hdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-night-ldpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-night-mdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-night-xhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-night-xxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-night-hdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-night-ldpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-night-mdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-night-xhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-night-xxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-land-night-xxxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── drawable-port-night-xxxhdpi │ │ │ │ │ └── splash.png │ │ │ │ ├── values │ │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── xml │ │ │ │ │ └── file_paths.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── layout │ │ │ │ │ └── activity_main.xml │ │ │ │ └── drawable-v24 │ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ └── java │ │ │ │ └── so │ │ │ │ └── play │ │ │ │ └── myqueue │ │ │ │ └── MainActivity.java │ │ ├── test │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── getcapacitor │ │ │ │ └── myapp │ │ │ │ └── ExampleUnitTest.java │ │ └── androidTest │ │ │ └── java │ │ │ └── com │ │ │ └── getcapacitor │ │ │ └── myapp │ │ │ └── ExampleInstrumentedTest.java │ ├── capacitor.build.gradle │ ├── proguard-rules.pro │ └── build.gradle ├── properties.local ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── misc.xml │ └── jarRepositories.xml ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── settings.gradle ├── variables.gradle ├── build.gradle ├── gradle.properties ├── capacitor.settings.gradle └── .gitignore ├── .vercel └── output │ ├── functions │ └── fn.func │ │ ├── package.json │ │ ├── .svelte-kit │ │ ├── output │ │ │ └── server │ │ │ │ ├── entries │ │ │ │ ├── pages │ │ │ │ │ ├── _layout.server.ts.js │ │ │ │ │ └── _layout.svelte.js │ │ │ │ └── fallbacks │ │ │ │ │ └── error.svelte.js │ │ │ │ ├── nodes │ │ │ │ ├── 1.js │ │ │ │ └── 0.js │ │ │ │ └── chunks │ │ │ │ ├── stores.js │ │ │ │ └── index.js │ │ └── vercel-tmp │ │ │ ├── index.js │ │ │ └── manifest.js │ │ └── .vc-config.json │ └── static │ ├── _app │ ├── version.json │ └── immutable │ │ ├── assets │ │ ├── bookmark.c0ed984a.css │ │ ├── bookmark.797c9cfd.css │ │ ├── play-button.5cf4408c.svg │ │ ├── pause-button.bcf8363a.svg │ │ ├── arrow.0442db2f.svg │ │ ├── kebab-menu.e7e75b4f.svg │ │ ├── checkmark.820bef7d.svg │ │ ├── plus-icon.c7ab19ac.svg │ │ ├── double-up-arrow.5f973f70.svg │ │ ├── _page.943090e2.css │ │ ├── _page.9e37c7ea.css │ │ ├── button.1698fcca.css │ │ ├── button.88c6d09b.css │ │ ├── loading-dots.06f9720b.css │ │ ├── loading-dots.f5edac5b.css │ │ ├── arrow-diag.1eeb49d6.svg │ │ ├── player-repeat.e39dd467.svg │ │ ├── logo-icon.9e0b6d4b.svg │ │ ├── share.4643a3dd.svg │ │ ├── trash.968515df.svg │ │ ├── apple.68cb52e4.svg │ │ ├── icon-warning.10416118.svg │ │ ├── google-g.bca07c9b.svg │ │ ├── player-backward.5ba1069e.svg │ │ └── player-forward.bb7b90e3.svg │ │ ├── chunks │ │ ├── 0.3cf8dd5f.js │ │ ├── 1.d963dda9.js │ │ ├── 2.8545ff8c.js │ │ ├── 3.991f0a9f.js │ │ ├── 4.a6315881.js │ │ ├── 5.b1c3bf8d.js │ │ ├── 7.88aa02df.js │ │ ├── 9.5adbee70.js │ │ ├── 10.145bb0cb.js │ │ ├── 8.3a1a40b0.js │ │ ├── 6.525278dd.js │ │ ├── navigation.eb682a3d.js │ │ ├── stores.68838911.js │ │ ├── _page.0ddcfea3.js │ │ ├── web.f27a4d44.js │ │ ├── index.1e0a1e55.js │ │ ├── index.29fcc035.js │ │ ├── web.f978dcbb.js │ │ ├── preload-helper.41c905a7.js │ │ ├── web.1bd1ea5b.js │ │ ├── plus-icon.e3782aa1.js │ │ ├── loading-dots.e3f7c445.js │ │ ├── logo-icon.0848b318.js │ │ ├── avatar-circle.72291414.js │ │ ├── index.73dd7c3f.js │ │ └── singletons.4d3f7a01.js │ │ └── entry │ │ ├── (app)-discover-_source_-page.ts.6655414c.js │ │ ├── error.svelte.f4f925a6.js │ │ └── _layout.svelte.10e6098e.js │ ├── favicon.png │ ├── logos │ ├── logo128.png │ ├── logo16.png │ ├── logo180.png │ ├── logo192.png │ ├── logo32.png │ └── logo48.png │ ├── images │ └── sources │ │ ├── bbc.png │ │ ├── cnn.png │ │ ├── medium.png │ │ ├── add-url.png │ │ ├── guardian.png │ │ ├── my-queue.png │ │ ├── banners │ │ ├── bbc.png │ │ ├── cnn.png │ │ ├── guardian.png │ │ ├── medium.png │ │ ├── techcrunch.png │ │ └── newyorktimes.png │ │ ├── techcrunch.png │ │ └── newyorktimes.png │ ├── fonts │ ├── FrankRuhlLibre-Bold.ttf │ ├── FrankRuhlLibre-Medium.ttf │ ├── FrankRuhlLibre-Regular.ttf │ └── FrankRuhlLibre-SemiBold.ttf │ ├── .well-known │ ├── apple-app-site-association │ └── assetlinks.json │ ├── add.html │ ├── index.html │ ├── read.html │ ├── signin.html │ ├── signup.html │ ├── settings.html │ └── discover │ ├── bbc.html │ ├── cnn.html │ ├── medium.html │ ├── guardian.html │ ├── techcrunch.html │ └── newyorktimes.html ├── bigtime.keystore ├── icons ├── icon-128.webp ├── icon-192.webp ├── icon-256.webp ├── icon-48.webp ├── icon-512.webp ├── icon-72.webp └── icon-96.webp ├── static ├── favicon.png ├── logos │ ├── logo128.png │ ├── logo16.png │ ├── logo180.png │ ├── logo192.png │ ├── logo32.png │ └── logo48.png ├── images │ └── sources │ │ ├── bbc.png │ │ ├── cnn.png │ │ ├── medium.png │ │ ├── add-url.png │ │ ├── guardian.png │ │ ├── my-queue.png │ │ ├── banners │ │ ├── bbc.png │ │ ├── cnn.png │ │ ├── guardian.png │ │ ├── medium.png │ │ ├── techcrunch.png │ │ └── newyorktimes.png │ │ ├── techcrunch.png │ │ └── newyorktimes.png ├── fonts │ ├── FrankRuhlLibre-Bold.ttf │ ├── FrankRuhlLibre-Medium.ttf │ ├── FrankRuhlLibre-Regular.ttf │ └── FrankRuhlLibre-SemiBold.ttf └── .well-known │ ├── apple-app-site-association │ └── assetlinks.json ├── resources ├── splash.png ├── icon-only.png ├── splash-dark.png ├── icon-background.png └── icon-foreground.png ├── ios ├── App │ ├── App │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── AppIcon-20x20@1x.png │ │ │ │ ├── AppIcon-20x20@2x.png │ │ │ │ ├── AppIcon-20x20@3x.png │ │ │ │ ├── AppIcon-29x29@1x.png │ │ │ │ ├── AppIcon-29x29@2x.png │ │ │ │ ├── AppIcon-29x29@3x.png │ │ │ │ ├── AppIcon-40x40@1x.png │ │ │ │ ├── AppIcon-40x40@2x.png │ │ │ │ ├── AppIcon-40x40@3x.png │ │ │ │ ├── AppIcon-512@2x.png │ │ │ │ ├── AppIcon-60x60@2x.png │ │ │ │ ├── AppIcon-60x60@3x.png │ │ │ │ ├── AppIcon-76x76@1x.png │ │ │ │ ├── AppIcon-76x76@2x.png │ │ │ │ ├── AppIcon-20x20@2x-1.png │ │ │ │ ├── AppIcon-29x29@2x-1.png │ │ │ │ ├── AppIcon-40x40@2x-1.png │ │ │ │ └── AppIcon-83.5x83.5@2x.png │ │ │ └── Splash.imageset │ │ │ │ ├── Default@1x~universal~anyany.png │ │ │ │ ├── Default@2x~universal~anyany.png │ │ │ │ ├── Default@3x~universal~anyany.png │ │ │ │ ├── Default@1x~universal~anyany-dark.png │ │ │ │ ├── Default@2x~universal~anyany-dark.png │ │ │ │ ├── Default@3x~universal~anyany-dark.png │ │ │ │ └── Contents.json │ │ ├── App.entitlements │ │ ├── GoogleService-Info.plist │ │ ├── Base.lproj │ │ │ ├── Main.storyboard │ │ │ └── LaunchScreen.storyboard │ │ └── Info.plist │ ├── App.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── App.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Podfile └── .gitignore ├── .gitignore ├── postcss.config.cjs ├── vite.config.js ├── .eslintignore ├── .prettierignore ├── .prettierrc ├── types ├── types.ts └── supabase.ts ├── .well-known └── assetlinks.json ├── .eslintrc.cjs ├── capacitor.config.ts ├── jsconfig.json ├── tailwind.config.cjs ├── manifest.json ├── svelte.config.js ├── package.json └── README.md /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /src/lib/components/input.svelte: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build/* 2 | !/build/.npmkeep 3 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/package.json: -------------------------------------------------------------------------------- 1 | {"type":"module"} -------------------------------------------------------------------------------- /.vercel/output/static/_app/version.json: -------------------------------------------------------------------------------- 1 | {"version":"1690300564999"} -------------------------------------------------------------------------------- /android/properties.local: -------------------------------------------------------------------------------- 1 | sdk.dir = /Users/nick/Library/Android/sdk -------------------------------------------------------------------------------- /android/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /bigtime.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/bigtime.keystore -------------------------------------------------------------------------------- /icons/icon-128.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-128.webp -------------------------------------------------------------------------------- /icons/icon-192.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-192.webp -------------------------------------------------------------------------------- /icons/icon-256.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-256.webp -------------------------------------------------------------------------------- /icons/icon-48.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-48.webp -------------------------------------------------------------------------------- /icons/icon-512.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-512.webp -------------------------------------------------------------------------------- /icons/icon-72.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-72.webp -------------------------------------------------------------------------------- /icons/icon-96.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/icons/icon-96.webp -------------------------------------------------------------------------------- /src/routes/+layout.server.ts: -------------------------------------------------------------------------------- 1 | export const ssr = false; 2 | export const prerender = true; 3 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/favicon.png -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/resources/splash.png -------------------------------------------------------------------------------- /resources/icon-only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/resources/icon-only.png -------------------------------------------------------------------------------- /static/logos/logo128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/logos/logo128.png -------------------------------------------------------------------------------- /static/logos/logo16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/logos/logo16.png -------------------------------------------------------------------------------- /static/logos/logo180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/logos/logo180.png -------------------------------------------------------------------------------- /static/logos/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/logos/logo192.png -------------------------------------------------------------------------------- /static/logos/logo32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/logos/logo32.png -------------------------------------------------------------------------------- /static/logos/logo48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/logos/logo48.png -------------------------------------------------------------------------------- /resources/splash-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/resources/splash-dark.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/bookmark.c0ed984a.css: -------------------------------------------------------------------------------- 1 | .breakword.svelte-psbqjl{word-break:break-word} -------------------------------------------------------------------------------- /resources/icon-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/resources/icon-background.png -------------------------------------------------------------------------------- /resources/icon-foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/resources/icon-foreground.png -------------------------------------------------------------------------------- /static/images/sources/bbc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/bbc.png -------------------------------------------------------------------------------- /static/images/sources/cnn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/cnn.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/bookmark.797c9cfd.css: -------------------------------------------------------------------------------- 1 | .breakword.svelte-psbqjl{word-break:break-word} 2 | -------------------------------------------------------------------------------- /static/images/sources/medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/medium.png -------------------------------------------------------------------------------- /.vercel/output/static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/favicon.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /static/images/sources/add-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/add-url.png -------------------------------------------------------------------------------- /static/images/sources/guardian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/guardian.png -------------------------------------------------------------------------------- /static/images/sources/my-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/my-queue.png -------------------------------------------------------------------------------- /static/fonts/FrankRuhlLibre-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/fonts/FrankRuhlLibre-Bold.ttf -------------------------------------------------------------------------------- /static/images/sources/banners/bbc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/banners/bbc.png -------------------------------------------------------------------------------- /static/images/sources/banners/cnn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/banners/cnn.png -------------------------------------------------------------------------------- /static/images/sources/techcrunch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/techcrunch.png -------------------------------------------------------------------------------- /.vercel/output/static/logos/logo128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/logos/logo128.png -------------------------------------------------------------------------------- /.vercel/output/static/logos/logo16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/logos/logo16.png -------------------------------------------------------------------------------- /.vercel/output/static/logos/logo180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/logos/logo180.png -------------------------------------------------------------------------------- /.vercel/output/static/logos/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/logos/logo192.png -------------------------------------------------------------------------------- /.vercel/output/static/logos/logo32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/logos/logo32.png -------------------------------------------------------------------------------- /.vercel/output/static/logos/logo48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/logos/logo48.png -------------------------------------------------------------------------------- /static/fonts/FrankRuhlLibre-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/fonts/FrankRuhlLibre-Medium.ttf -------------------------------------------------------------------------------- /static/fonts/FrankRuhlLibre-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/fonts/FrankRuhlLibre-Regular.ttf -------------------------------------------------------------------------------- /static/images/sources/newyorktimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/newyorktimes.png -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /static/fonts/FrankRuhlLibre-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/fonts/FrankRuhlLibre-SemiBold.ttf -------------------------------------------------------------------------------- /static/images/sources/banners/guardian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/banners/guardian.png -------------------------------------------------------------------------------- /static/images/sources/banners/medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/banners/medium.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/bbc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/bbc.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/cnn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/cnn.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable/splash.png -------------------------------------------------------------------------------- /static/images/sources/banners/techcrunch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/banners/techcrunch.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/0.3cf8dd5f.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/_layout.svelte.10e6098e.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/1.d963dda9.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/error.svelte.f4f925a6.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/medium.png -------------------------------------------------------------------------------- /static/images/sources/banners/newyorktimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/static/images/sources/banners/newyorktimes.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/2.8545ff8c.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(app)-layout.svelte.2bb572e1.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/3.991f0a9f.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(auth)-layout.svelte.0d2de697.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/4.a6315881.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(app)-page.svelte.0aef0563.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/add-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/add-url.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/guardian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/guardian.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/my-queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/my-queue.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/5.b1c3bf8d.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(app)-add-page.svelte.fb51aadb.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/7.88aa02df.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(app)-read-page.svelte.c8d528d4.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/9.5adbee70.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(auth)-signin-page.svelte.a8a9654a.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/fonts/FrankRuhlLibre-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/fonts/FrankRuhlLibre-Bold.ttf -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/banners/bbc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/banners/bbc.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/banners/cnn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/banners/cnn.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/techcrunch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/techcrunch.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-night/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/10.145bb0cb.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(auth)-signup-page.svelte.65d12472.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/8.3a1a40b0.js: -------------------------------------------------------------------------------- 1 | import{default as t}from"../entry/(app)-settings-page.svelte.3564d222.js";export{t as component}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/fonts/FrankRuhlLibre-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/fonts/FrankRuhlLibre-Medium.ttf -------------------------------------------------------------------------------- /.vercel/output/static/fonts/FrankRuhlLibre-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/fonts/FrankRuhlLibre-Regular.ttf -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/newyorktimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/newyorktimes.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /.vercel/output/static/fonts/FrankRuhlLibre-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/fonts/FrankRuhlLibre-SemiBold.ttf -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/banners/guardian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/banners/guardian.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/banners/medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/banners/medium.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/banners/techcrunch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/banners/techcrunch.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /.vercel/output/static/images/sources/banners/newyorktimes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/.vercel/output/static/images/sources/banners/newyorktimes.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-night-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-night-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-night-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-night-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-night-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-ldpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-night-ldpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-night-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-night-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/entry/(app)-discover-_source_-page.ts.6655414c.js: -------------------------------------------------------------------------------- 1 | import"../chunks/db.a3b95309.js";import{l}from"../chunks/_page.0ddcfea3.js";export{l as load}; 2 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@1x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@3x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@1x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@3x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@1x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@3x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@2x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-60x60@3x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@1x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-76x76@2x.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_layout.server.ts.js: -------------------------------------------------------------------------------- 1 | const ssr = false; 2 | const prerender = true; 3 | export { 4 | prerender, 5 | ssr 6 | }; 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-20x20@2x-1.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-29x29@2x-1.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-40x40@2x-1.png -------------------------------------------------------------------------------- /android/app/src/main/java/so/play/myqueue/MainActivity.java: -------------------------------------------------------------------------------- 1 | package so.play.myqueue; 2 | 3 | import com.getcapacitor.BridgeActivity; 4 | 5 | public class MainActivity extends BridgeActivity {} 6 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany.png -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.vc-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtime": "nodejs16.x", 3 | "handler": ".svelte-kit/vercel-tmp/index.js", 4 | "launcherType": "Nodejs", 5 | "experimentalResponseStreaming": true 6 | } -------------------------------------------------------------------------------- /android/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/Splash.imageset/Default@1x~universal~anyany-dark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/Splash.imageset/Default@2x~universal~anyany-dark.png -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nick-barth/myqueue/HEAD/ios/App/App/Assets.xcassets/Splash.imageset/Default@3x~universal~anyany-dark.png -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | const tailwindcss = require('tailwindcss'); 2 | const autoprefixer = require('autoprefixer'); 3 | 4 | module.exports = { 5 | plugins: [require('tailwindcss'), require('autoprefixer')] 6 | }; 7 | -------------------------------------------------------------------------------- /src/lib/icons/play-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/6.525278dd.js: -------------------------------------------------------------------------------- 1 | import{_ as r}from"./_page.0ddcfea3.js";import{default as t}from"../entry/(app)-discover-_source_-page.svelte.7b44ea62.js";export{t as component,r as universal}; 2 | -------------------------------------------------------------------------------- /src/routes/(app)/discover/[source]/+page.ts: -------------------------------------------------------------------------------- 1 | import db from '$lib/db'; 2 | 3 | export async function load({ params }) { 4 | const articles = await db.discovery.get(params.source); 5 | return { ...params, articles }; 6 | } 7 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | import svg from '@poppanator/sveltekit-svg'; 4 | 5 | export default defineConfig({ 6 | plugins: [sveltekit(), svg()] 7 | }); 8 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | include ':capacitor-cordova-android-plugins' 3 | project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/') 4 | 5 | apply from: 'capacitor.settings.gradle' -------------------------------------------------------------------------------- /static/.well-known/apple-app-site-association: -------------------------------------------------------------------------------- 1 | { 2 | "applinks": { 3 | "apps": [], 4 | "details": [ 5 | { 6 | "appID": "9AWBZ8ZJT7.so.play.myqueue", 7 | "paths": ["*"] 8 | } 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/play-button.5cf4408c.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.vercel/output/static/.well-known/apple-app-site-association: -------------------------------------------------------------------------------- 1 | { 2 | "applinks": { 3 | "apps": [], 4 | "details": [ 5 | { 6 | "appID": "9AWBZ8ZJT7.so.play.myqueue", 7 | "paths": ["*"] 8 | } 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/navigation.eb682a3d.js: -------------------------------------------------------------------------------- 1 | import{j as a}from"./singletons.4d3f7a01.js";a.disable_scroll_handling;const o=a.goto;a.invalidate;a.invalidateAll;a.preload_data;a.preload_code;a.before_navigate;a.after_navigate;export{o as g}; 2 | -------------------------------------------------------------------------------- /src/lib/icons/pause-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/lib/icons/arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/lib/icons/kebab-menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | App/build 2 | App/Pods 3 | App/output 4 | App/App/public 5 | DerivedData 6 | xcuserdata 7 | 8 | # Cordova plugins for Capacitor 9 | capacitor-cordova-ios-plugins 10 | 11 | # Generated Config files 12 | App/App/capacitor.config.json 13 | App/App/config.xml 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "pluginSearchDirs": ["."], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/pause-button.bcf8363a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/stores.68838911.js: -------------------------------------------------------------------------------- 1 | import{s as e}from"./singletons.4d3f7a01.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p}; 2 | -------------------------------------------------------------------------------- /src/lib/icons/checkmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/lib/icons/plus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /types/types.ts: -------------------------------------------------------------------------------- 1 | import type { Database } from './supabase'; 2 | import type { Session } from '@supabase/gotrue-js/src/lib/types'; 3 | 4 | export type SessionType = Session; 5 | 6 | export type UserType = Session['user']; 7 | 8 | export type BookmarkType = Database['public']['Tables']['bookmarks']['Row']; 9 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/arrow.0442db2f.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/lib/icons/double-up-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/kebab-menu.e7e75b4f.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ios/App/App.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/_page.0ddcfea3.js: -------------------------------------------------------------------------------- 1 | import{d as t}from"./db.a3b95309.js";async function r({params:e}){const o=await t.discovery.get(e.source);return{...e,articles:o}}const c=Object.freeze(Object.defineProperty({__proto__:null,load:r},Symbol.toStringTag,{value:"Module"}));export{c as _,r as l}; 2 | -------------------------------------------------------------------------------- /ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/lib/icons/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.well-known/assetlinks.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "relation": ["delegate_permission/common.handle_all_urls"], 3 | "target" : { "namespace": "android_app", "package_name": "so.play.myqueue", 4 | "sha256_cert_fingerprints": ["54:43:9D:6D:46:F5:1F:C3:EC:AD:D0:01:38:75:F0:06:79:F0:61:73:B3:6B:93:5D:01:81:A1:68:F7:19:7F:35"] } 5 | }] -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/checkmark.820bef7d.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/plus-icon.c7ab19ac.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/double-up-arrow.5f973f70.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | My Queue 4 | My Queue 5 | so.play.myqueue 6 | so.play.myqueue 7 | 8 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/_page.943090e2.css: -------------------------------------------------------------------------------- 1 | @keyframes svelte-10icyb1-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}.gradient-animation.svelte-10icyb1{background:linear-gradient(90deg, #c4e2fc, #a0e99d);background-size:400% 400%;animation:svelte-10icyb1-gradient 1.5s ease infinite} -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/_page.9e37c7ea.css: -------------------------------------------------------------------------------- 1 | @keyframes svelte-10icyb1-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.gradient-animation.svelte-10icyb1{background:linear-gradient(90deg,#c4e2fc,#a0e99d);background-size:400% 400%;animation:svelte-10icyb1-gradient 1.5s ease infinite} 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/button.1698fcca.css: -------------------------------------------------------------------------------- 1 | @keyframes svelte-1cecrxy-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.gradient-animation.svelte-1cecrxy{background:linear-gradient(90deg,#c1ebff,#d8bbfe);background-size:400% 400%;animation:svelte-1cecrxy-gradient 1.5s ease infinite} 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/button.88c6d09b.css: -------------------------------------------------------------------------------- 1 | @keyframes svelte-1cecrxy-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}.gradient-animation.svelte-1cecrxy{background:linear-gradient(90deg, #c1ebff, #d8bbfe);background-size:400% 400%;animation:svelte-1cecrxy-gradient 1.5s ease infinite} -------------------------------------------------------------------------------- /src/lib/icons/hamburger.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['eslint:recommended', 'prettier'], 4 | plugins: ['svelte3'], 5 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 6 | parserOptions: { 7 | sourceType: 'module', 8 | ecmaVersion: 2020 9 | }, 10 | env: { 11 | browser: true, 12 | es2017: true, 13 | node: true 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/loading-dots.06f9720b.css: -------------------------------------------------------------------------------- 1 | .dot.svelte-12aohcs{display:inline-block;width:4px;height:4px;border-radius:50%;animation:svelte-12aohcs-bounce .6s infinite alternate}.dot.svelte-12aohcs:nth-last-child(2){animation-delay:.25s}.dot.svelte-12aohcs:nth-last-child(3){animation-delay:.35s}@keyframes svelte-12aohcs-bounce{to{transform:translateY(4px)}} 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/loading-dots.f5edac5b.css: -------------------------------------------------------------------------------- 1 | .dot.svelte-12aohcs{display:inline-block;width:4px;height:4px;border-radius:50%;animation:svelte-12aohcs-bounce 600ms infinite alternate}.dot.svelte-12aohcs:nth-last-child(2){animation-delay:250ms}.dot.svelte-12aohcs:nth-last-child(3){animation-delay:350ms}@keyframes svelte-12aohcs-bounce{to{transform:translateY(4px)}} -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/web.f27a4d44.js: -------------------------------------------------------------------------------- 1 | import{W as o}from"./index.e036d59b.js";class e extends o{constructor(){super(),this._lastWindow=null}async open(s){this._lastWindow=window.open(s.url,s.windowName||"_blank")}async close(){return new Promise((s,n)=>{this._lastWindow!=null?(this._lastWindow.close(),this._lastWindow=null,s()):n("No active window to close!")})}}const i=new e;export{i as Browser,e as BrowserWeb}; 2 | -------------------------------------------------------------------------------- /android/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/lib/directives/clickAway.ts: -------------------------------------------------------------------------------- 1 | export function clickOutside(node: HTMLElement, onEventFunction: () => void) { 2 | const handleClick = (event: Event) => { 3 | var path = event.composedPath(); 4 | 5 | if (!path.includes(node)) { 6 | onEventFunction(); 7 | } 8 | }; 9 | 10 | document.addEventListener('click', handleClick); 11 | 12 | return { 13 | destroy() { 14 | document.removeEventListener('click', handleClick); 15 | } 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /src/lib/icons/arrow-diag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ios/App/App/App.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.applesignin 6 | 7 | Default 8 | 9 | com.apple.developer.associated-domains 10 | 11 | applinks:play.myqueue.so 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/index.1e0a1e55.js: -------------------------------------------------------------------------------- 1 | import{J as f,s as l}from"./index.485fcb8d.js";const e=[];function h(n,u=f){let i;const o=new Set;function r(t){if(l(n,t)&&(n=t,i)){const c=!e.length;for(const s of o)s[1](),e.push(s,n);if(c){for(let s=0;s{o.delete(s),o.size===0&&i&&(i(),i=null)}}return{set:r,update:b,subscribe:p}}export{h as w}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/arrow-diag.1eeb49d6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.getcapacitor.myapp; 2 | 3 | import static org.junit.Assert.*; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | 14 | @Test 15 | public void addition_isCorrect() throws Exception { 16 | assertEquals(4, 2 + 2); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/routes/(app)/read/+page.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | {#if $currentStore} 14 |
15 | 16 |
17 | {/if} 18 | -------------------------------------------------------------------------------- /src/lib/icons/player-repeat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | %sveltekit.head% 10 | 11 | 12 |
%sveltekit.body%
13 | 14 | 15 | -------------------------------------------------------------------------------- /android/variables.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | minSdkVersion = 22 3 | compileSdkVersion = 33 4 | targetSdkVersion = 33 5 | androidxActivityVersion = '1.7.0' 6 | androidxAppCompatVersion = '1.6.1' 7 | androidxCoordinatorLayoutVersion = '1.2.0' 8 | androidxCoreVersion = '1.10.0' 9 | androidxFragmentVersion = '1.5.6' 10 | coreSplashScreenVersion = '1.0.1' 11 | androidxWebkitVersion = '1.6.1' 12 | junitVersion = '4.13.2' 13 | androidxJunitVersion = '1.1.5' 14 | androidxEspressoCoreVersion = '3.5.1' 15 | cordovaAndroidVersion = '10.1.1' 16 | } -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/1.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export const index = 1; 4 | export const component = async () => (await import('../entries/fallbacks/error.svelte.js')).default; 5 | export const file = '_app/immutable/entry/error.svelte.f4f925a6.js'; 6 | export const imports = ["_app/immutable/entry/error.svelte.f4f925a6.js","_app/immutable/chunks/index.485fcb8d.js","_app/immutable/chunks/stores.68838911.js","_app/immutable/chunks/singletons.4d3f7a01.js","_app/immutable/chunks/index.1e0a1e55.js"]; 7 | export const stylesheets = []; 8 | export const fonts = []; 9 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/player-repeat.e39dd467.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/fallbacks/error.svelte.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, a as subscribe, e as escape } from "../../chunks/index2.js"; 2 | import { p as page } from "../../chunks/stores.js"; 3 | const Error = create_ssr_component(($$result, $$props, $$bindings, slots) => { 4 | let $page, $$unsubscribe_page; 5 | $$unsubscribe_page = subscribe(page, (value) => $page = value); 6 | $$unsubscribe_page(); 7 | return `

${escape($page.status)}

8 |

${escape($page.error?.message)}

`; 9 | }); 10 | export { 11 | Error as default 12 | }; 13 | -------------------------------------------------------------------------------- /ios/App/App/GoogleService-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CLIENT_ID 6 | 831091108438-9h14cn7sispne9eemv2qv5hf45k2ol91.apps.googleusercontent.com 7 | REVERSED_CLIENT_ID 8 | com.googleusercontent.apps.831091108438-9h14cn7sispne9eemv2qv5hf45k2ol91 9 | PLIST_VERSION 10 | 1 11 | BUNDLE_ID 12 | so.play.myqueue 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/lib/icons/sparkle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/lib/constants/sources.ts: -------------------------------------------------------------------------------- 1 | export const sources = [ 2 | { 3 | title: 'Medium', 4 | source: 'medium', 5 | domain: 'medium.com' 6 | }, 7 | { 8 | title: 'Guardian', 9 | source: 'guardian', 10 | domain: 'theguardian.com' 11 | }, 12 | { 13 | title: 'TechCrunch', 14 | source: 'techcrunch', 15 | domain: 'techcrunch.com' 16 | }, 17 | { 18 | title: 'NYT', 19 | source: 'newyorktimes', 20 | domain: 'nytimes.com' 21 | }, 22 | { 23 | title: 'CNN', 24 | source: 'cnn', 25 | domain: 'cnn.com' 26 | }, 27 | { 28 | title: 'BBC', 29 | source: 'bbc', 30 | domain: 'bbc.co.uk' 31 | } 32 | ]; 33 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/index.29fcc035.js: -------------------------------------------------------------------------------- 1 | import{d as $}from"./index.73dd7c3f.js";import{a4 as w}from"./index.485fcb8d.js";function O(p,{from:t,to:s},d={}){const i=getComputedStyle(p),l=i.transform==="none"?"":i.transform,[c,h]=i.transformOrigin.split(" ").map(parseFloat),o=t.left+t.width*c/s.width-(s.left+c),r=t.top+t.height*h/s.height-(s.top+h),{delay:f=0,duration:e=n=>Math.sqrt(n)*120,easing:g=$}=d;return{delay:f,duration:w(e)?e(Math.sqrt(o*o+r*r)):e,easing:g,css:(n,a)=>{const x=a*o,y=a*r,m=n+a*t.width/s.width,u=n+a*t.height/s.height;return`transform: ${l} translate(${x}px, ${y}px) scale(${m}, ${u});`}}}export{O as f}; 2 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/stores.js: -------------------------------------------------------------------------------- 1 | import { h as getContext } from "./index2.js"; 2 | const getStores = () => { 3 | const stores = getContext("__svelte__"); 4 | return { 5 | page: { 6 | subscribe: stores.page.subscribe 7 | }, 8 | navigating: { 9 | subscribe: stores.navigating.subscribe 10 | }, 11 | updated: stores.updated 12 | }; 13 | }; 14 | const page = { 15 | /** @param {(value: any) => void} fn */ 16 | subscribe(fn) { 17 | const store = getStores().page; 18 | return store.subscribe(fn); 19 | } 20 | }; 21 | export { 22 | page as p 23 | }; 24 | -------------------------------------------------------------------------------- /capacitor.config.ts: -------------------------------------------------------------------------------- 1 | import { CapacitorConfig } from '@capacitor/cli'; 2 | import dotenv from 'dotenv'; 3 | import path from 'path'; 4 | 5 | dotenv.config({ path: path.resolve(__dirname, '.env') }); 6 | 7 | const config: CapacitorConfig = { 8 | plugins: { 9 | CapacitorCookies: { 10 | enabled: true 11 | }, 12 | GoogleAuth: { 13 | scopes: ['profile', 'email'], 14 | serverClientId: '831091108438-hihvt9nrfbd8qke8sfhru1tog8gsoggs.apps.googleusercontent.com', 15 | forceCodeForRefreshToken: true 16 | } 17 | }, 18 | appId: 'so.play.myqueue', 19 | appName: 'My Queue', 20 | webDir: 'build' 21 | }; 22 | 23 | export default config; 24 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias and https://kit.svelte.dev/docs/configuration#files 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./src/**/*.{html,js,svelte,ts}'], 4 | theme: { 5 | extend: { 6 | fontFamily: { 7 | frank: ['"Frank Ruhl Libre"', 'serif'], 8 | source: ['"Source Sans Pro"', 'sans-serif'] 9 | }, 10 | screens: { 11 | md: '942px' 12 | }, 13 | colors: { 14 | white: '#ffffff', 15 | accent: '#C4E2FC', 16 | primary: '#181818', 17 | background: '#eeeeee', 18 | backgroundDark: '#727272', 19 | success: '#A0E99D', 20 | warning: '#FFBB59', 21 | }, 22 | borderRadius: { 23 | primary: '80px' 24 | } 25 | } 26 | }, 27 | plugins: [] 28 | }; 29 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/web.f978dcbb.js: -------------------------------------------------------------------------------- 1 | import{W as t}from"./index.e036d59b.js";class s extends t{constructor(){super(),this.handleVisibilityChange=()=>{const e={isActive:document.hidden!==!0};this.notifyListeners("appStateChange",e),document.hidden?this.notifyListeners("pause",null):this.notifyListeners("resume",null)},document.addEventListener("visibilitychange",this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented("Not implemented on web.")}async getInfo(){throw this.unimplemented("Not implemented on web.")}async getLaunchUrl(){return{url:""}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented("Not implemented on web.")}}export{s as AppWeb}; 2 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | mavenCentral() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:8.0.2' 11 | classpath 'com.google.gms:google-services:4.3.15' 12 | 13 | // NOTE: Do not place your application dependencies here; they belong 14 | // in the individual module build.gradle files 15 | } 16 | } 17 | 18 | apply from: "variables.gradle" 19 | 20 | allprojects { 21 | repositories { 22 | google() 23 | mavenCentral() 24 | } 25 | } 26 | 27 | task clean(type: Delete) { 28 | delete rootProject.buildDir 29 | } 30 | -------------------------------------------------------------------------------- /src/lib/components/loading-dots.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 |
9 |
10 | 11 | 33 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/preload-helper.41c905a7.js: -------------------------------------------------------------------------------- 1 | const h="modulepreload",m=function(o,s){return new URL(o,s).href},u={},k=function(s,l,c){if(!l||l.length===0)return s();const a=document.getElementsByTagName("link");return Promise.all(l.map(e=>{if(e=m(e,c),e in u)return;u[e]=!0;const n=e.endsWith(".css"),f=n?'[rel="stylesheet"]':"";if(!!c)for(let r=a.length-1;r>=0;r--){const i=a[r];if(i.href===e&&(!n||i.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${f}`))return;const t=document.createElement("link");if(t.rel=n?"stylesheet":h,n||(t.as="script",t.crossOrigin=""),t.href=e,document.head.appendChild(t),n)return new Promise((r,i)=>{t.addEventListener("load",r),t.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${e}`)))})})).then(()=>s())};export{k as _}; 2 | -------------------------------------------------------------------------------- /src/lib/utils/date-time.ts: -------------------------------------------------------------------------------- 1 | import { intervalToDuration, formatDistance } from 'date-fns'; 2 | 3 | const zeroPad = (num: number | undefined) => String(num).padStart(2, '0'); 4 | 5 | export const formatToMmss = (seconds: number) => { 6 | if (!seconds) { 7 | return '0:00'; 8 | } 9 | const duration = intervalToDuration({ start: 0, end: seconds * 1000 }); 10 | const formatted = `${duration.minutes}:${zeroPad(duration.seconds)}`; 11 | return formatted; 12 | }; 13 | 14 | export const findTimeDifference = (time: string) => { 15 | const getSeconds = (dateString: Date) => dateString.getTime() / 1000; 16 | 17 | const gameEnd = getSeconds(new Date()); 18 | const gameStart = getSeconds(new Date(time)); 19 | 20 | const diff = gameEnd - gameStart; 21 | const minutes = Math.floor(diff / 60); 22 | 23 | return minutes; 24 | }; 25 | -------------------------------------------------------------------------------- /android/app/capacitor.build.gradle: -------------------------------------------------------------------------------- 1 | // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 | 3 | android { 4 | compileOptions { 5 | sourceCompatibility JavaVersion.VERSION_17 6 | targetCompatibility JavaVersion.VERSION_17 7 | } 8 | } 9 | 10 | apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" 11 | dependencies { 12 | implementation project(':capacitor-community-apple-sign-in') 13 | implementation project(':capacitor-app') 14 | implementation project(':capacitor-browser') 15 | implementation project(':capgo-native-audio') 16 | implementation project(':codetrix-studio-capacitor-google-auth') 17 | implementation project(':jofr-capacitor-media-session') 18 | 19 | } 20 | 21 | 22 | if (hasProperty('postBuildExtras')) { 23 | postBuildExtras() 24 | } 25 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/entry/error.svelte.f4f925a6.js: -------------------------------------------------------------------------------- 1 | import{S as x,i as H,s as S,k as _,q as h,a as g,l as d,m as v,r as b,h as m,c as k,b as f,I as E,u as $,J as q,H as y}from"../chunks/index.485fcb8d.js";import{p as C}from"../chunks/stores.68838911.js";function I(n){var u;let a,t=n[0].status+"",r,o,l,i=((u=n[0].error)==null?void 0:u.message)+"",c;return{c(){a=_("h1"),r=h(t),o=g(),l=_("p"),c=h(i)},l(e){a=d(e,"H1",{});var s=v(a);r=b(s,t),s.forEach(m),o=k(e),l=d(e,"P",{});var p=v(l);c=b(p,i),p.forEach(m)},m(e,s){f(e,a,s),E(a,r),f(e,o,s),f(e,l,s),E(l,c)},p(e,[s]){var p;s&1&&t!==(t=e[0].status+"")&&$(r,t),s&1&&i!==(i=((p=e[0].error)==null?void 0:p.message)+"")&&$(c,i)},i:q,o:q,d(e){e&&m(a),e&&m(o),e&&m(l)}}}function J(n,a,t){let r;return y(n,C,o=>t(0,r=o)),[r]}class w extends x{constructor(a){super(),H(this,a,J,I,S,{})}}export{w as default}; 2 | -------------------------------------------------------------------------------- /static/.well-known/assetlinks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "relation": [ 4 | "delegate_permission/common.handle_all_urls" 5 | ], 6 | "target": { 7 | "namespace": "android_app", 8 | "package_name": "so.play.myqueue", 9 | "sha256_cert_fingerprints": [ 10 | "F9:62:BF:BD:75:5A:FE:CC:8F:38:88:56:33:BF:82:B0:A5:F1:36:50:EB:78:58:9B:1A:25:57:C6:C6:7C:7C:DB" 11 | ] 12 | } 13 | }, 14 | { 15 | "relation": [ 16 | "delegate_permission/common.handle_all_urls" 17 | ], 18 | "target": { 19 | "namespace": "android_app", 20 | "package_name": "so.play.myqueue", 21 | "sha256_cert_fingerprints": [ 22 | "F6:84:6F:16:7A:E5:DC:A9:BC:EC:C5:DB:1C:8D:E2:57:99:7E:72:43:5C:D0:AF:B2:0E:95:0E:E5:A2:AC:09:45" 23 | ] 24 | } 25 | } 26 | ] 27 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /src/lib/icons/close-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.vercel/output/static/.well-known/assetlinks.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "relation": [ 4 | "delegate_permission/common.handle_all_urls" 5 | ], 6 | "target": { 7 | "namespace": "android_app", 8 | "package_name": "so.play.myqueue", 9 | "sha256_cert_fingerprints": [ 10 | "F9:62:BF:BD:75:5A:FE:CC:8F:38:88:56:33:BF:82:B0:A5:F1:36:50:EB:78:58:9B:1A:25:57:C6:C6:7C:7C:DB" 11 | ] 12 | } 13 | }, 14 | { 15 | "relation": [ 16 | "delegate_permission/common.handle_all_urls" 17 | ], 18 | "target": { 19 | "namespace": "android_app", 20 | "package_name": "so.play.myqueue", 21 | "sha256_cert_fingerprints": [ 22 | "F6:84:6F:16:7A:E5:DC:A9:BC:EC:C5:DB:1C:8D:E2:57:99:7E:72:43:5C:D0:AF:B2:0E:95:0E:E5:A2:AC:09:45" 23 | ] 24 | } 25 | } 26 | ] 27 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/web.1bd1ea5b.js: -------------------------------------------------------------------------------- 1 | import{W as e}from"./index.e036d59b.js";class n extends e{async setMetadata(a){if("mediaSession"in navigator)navigator.mediaSession.metadata=new MediaMetadata(a);else throw this.unavailable("Media Session API not available in this browser.")}async setPlaybackState(a){if("mediaSession"in navigator)navigator.mediaSession.playbackState=a.playbackState;else throw this.unavailable("Media Session API not available in this browser.")}async setActionHandler(a,i){if("mediaSession"in navigator)navigator.mediaSession.setActionHandler(a.action,i);else throw this.unavailable("Media Session API not available in this browser.")}async setPositionState(a){if("mediaSession"in navigator)navigator.mediaSession.setPositionState(a);else throw this.unavailable("Media Session API not available in this browser.")}}export{n as MediaSessionWeb}; 2 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "My Queue", 3 | "short_name": "My Queue", 4 | "start_url": "/", 5 | "scope": "/", 6 | "icons": [ 7 | { 8 | "src": "static/logo16.png", 9 | "sizes": "16x16", 10 | "type": "image/png" 11 | }, 12 | { 13 | "src": "static/logo32.png", 14 | "sizes": "32x32", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "static/logo128.png", 19 | "sizes": "48x48", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "static/logo128.png", 24 | "sizes": "128x128", 25 | "type": "image/png" 26 | }, 27 | { 28 | "src": "static/logo128.png", 29 | "sizes": "128x128", 30 | "type": "image/png" 31 | }, 32 | { 33 | "src": "static/logo192.png", 34 | "sizes": "128x128", 35 | "type": "image/png" 36 | } 37 | ], 38 | "theme_color": "#fff19f", 39 | "background_color": "#fff19f", 40 | "display": "standalone" 41 | } 42 | -------------------------------------------------------------------------------- /src/lib/icons/logo-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/logo-icon.9e0b6d4b.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.getcapacitor.myapp; 2 | 3 | import static org.junit.Assert.*; 4 | 5 | import android.content.Context; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | import androidx.test.platform.app.InstrumentationRegistry; 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * @see Testing documentation 15 | */ 16 | @RunWith(AndroidJUnit4.class) 17 | public class ExampleInstrumentedTest { 18 | 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 23 | 24 | assertEquals("com.getcapacitor.app", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/plus-icon.e3782aa1.js: -------------------------------------------------------------------------------- 1 | import{S as w,i as f,s as m,M as h,N as u,O as c,m as v,h as l,n as o,P as _,b as p,I as x,Q as k,J as g,R as d}from"./index.485fcb8d.js";function B(r){let e,s,n=[{xmlns:"http://www.w3.org/2000/svg"},{fill:"none"},{viewBox:"0 0 24 24"},r[0]],i={};for(let t=0;t{s(0,e=h(h({},e),d(n)))},e=d(e),[e]}class b extends w{constructor(e){super(),f(this,e,M,B,m,{})}}export{b as P}; 2 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #C4E2FC 4 | 7 | 8 | 14 | 15 | 20 | 21 | -------------------------------------------------------------------------------- /src/lib/icons/share.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/icons/trash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/routes/(app)/add/+page.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 15 |
16 |
17 |

Add

18 |
19 |

Add a story manually

20 |
21 |
22 |
23 |
24 |
25 |

Paste a url

26 | 27 |
28 |
29 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/nodes/0.js: -------------------------------------------------------------------------------- 1 | import * as server from '../entries/pages/_layout.server.ts.js'; 2 | 3 | export const index = 0; 4 | export const component = async () => (await import('../entries/pages/_layout.svelte.js')).default; 5 | export const file = '_app/immutable/entry/_layout.svelte.10e6098e.js'; 6 | export { server }; 7 | export const server_id = "src/routes/+layout.server.ts"; 8 | export const imports = ["_app/immutable/entry/_layout.svelte.10e6098e.js","_app/immutable/chunks/index.485fcb8d.js","_app/immutable/chunks/navigation.eb682a3d.js","_app/immutable/chunks/singletons.4d3f7a01.js","_app/immutable/chunks/index.1e0a1e55.js","_app/immutable/chunks/index.e036d59b.js","_app/immutable/chunks/stores.68838911.js","_app/immutable/chunks/db.a3b95309.js","_app/immutable/chunks/preload-helper.41c905a7.js","_app/immutable/chunks/mixpanel.cjs.2e5b2863.js"]; 9 | export const stylesheets = ["_app/immutable/assets/_layout.4caddf0f.css"]; 10 | export const fonts = []; 11 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Frank+Ruhl+Libre:wght@400;500;600;700&display=swap'); 2 | 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | @layer base { 8 | html { 9 | font-family: 'Source Sans Pro', sans-serif; 10 | } 11 | * { 12 | box-sizing: border-box; 13 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0) !important; 14 | -webkit-focus-ring-color: rgba(255, 255, 255, 0) !important; 15 | outline: none !important; 16 | } 17 | 18 | } 19 | 20 | @layer utilities { 21 | .no-scrollbar::-webkit-scrollbar { 22 | display: none; 23 | } 24 | 25 | /* Hide scrollbar for IE, Edge and Firefox */ 26 | .no-scrollbar { 27 | -ms-overflow-style: none; /* IE and Edge */ 28 | scrollbar-width: none; /* Firefox */ 29 | } 30 | } 31 | 32 | 33 | .read div h2 { 34 | font-size: 18px; 35 | font-weight: bold; 36 | margin-top: 12px; 37 | margin-bottom: 6px; 38 | } 39 | 40 | .read div p { 41 | margin-bottom: 12px; 42 | } 43 | 44 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/share.4643a3dd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/trash.968515df.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/lib/icons/apple.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 20 | 21 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-static'; 2 | // import adapter from '@sveltejs/adapter-vercel'; 3 | import { vitePreprocess } from '@sveltejs/kit/vite'; 4 | 5 | const sources = { 6 | guardian: 'Guardian', 7 | newyorktimes: 'New York Times', 8 | techcrunch: 'TechCrunch', 9 | cnn: 'CNN', 10 | medium: 'Medium', 11 | bbc: 'BBC' 12 | }; 13 | 14 | const discovers = Object.keys(sources).map((key) => `/discover/${key}`) 15 | const routes = ['/signup', '/', '/add', '/read', '/signin', '/settings', '/signin', ...discovers]; 16 | 17 | /** @type {import('@sveltejs/kit').Config} */ 18 | const config = { 19 | kit: { 20 | // adapter: adapter(), 21 | adapter: adapter({ 22 | // default options are shown. On some platforms 23 | // these options are set automatically — see below 24 | pages: 'build', 25 | assets: 'build', 26 | fallback: 'index.html', 27 | }), 28 | prerender: { 29 | entries: routes 30 | }, 31 | alias: { 32 | $types: 'types' 33 | } 34 | }, 35 | preprocess: vitePreprocess() 36 | }; 37 | 38 | export default config; 39 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | 19 | # AndroidX package structure to make it clearer which packages are bundled with the 20 | # Android operating system, and which are packaged with your app's APK 21 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 22 | android.useAndroidX=true 23 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/apple.68cb52e4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 14 | 20 | 21 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/lib/components/bookmark-meta.svelte: -------------------------------------------------------------------------------- 1 | 26 | 27 | 36 | -------------------------------------------------------------------------------- /src/lib/icons/icon-warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ios/App/App/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/lib/icons/google-g.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/components/avatar-circle.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | 35 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/icon-warning.10416118.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/(auth)/+layout.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 |
16 |
17 |

Listen to articles

18 |
19 | 20 |
21 | {#if $page.url.pathname.includes('signup')} 22 |

I already have an account

23 | Sign in 24 | {:else} 25 |

I don't have an account

26 | Sign up 27 | {/if} 28 |
29 |
30 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/google-g.bca07c9b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /android/.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /ios/App/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers' 2 | 3 | platform :ios, '13.0' 4 | use_frameworks! 5 | 6 | # workaround to avoid Xcode caching of Pods that requires 7 | # Product -> Clean Build Folder after new Cordova plugins installed 8 | # Requires CocoaPods 1.6 or newer 9 | install! 'cocoapods', :disable_input_output_paths => true 10 | 11 | def capacitor_pods 12 | pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' 13 | pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' 14 | pod 'CapacitorCommunityAppleSignIn', :path => '../../node_modules/@capacitor-community/apple-sign-in' 15 | pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app' 16 | pod 'CapacitorBrowser', :path => '../../node_modules/@capacitor/browser' 17 | pod 'CapgoNativeAudio', :path => '../../node_modules/@capgo/native-audio' 18 | pod 'CodetrixStudioCapacitorGoogleAuth', :path => '../../node_modules/@codetrix-studio/capacitor-google-auth' 19 | end 20 | 21 | target 'App' do 22 | capacitor_pods 23 | # Add your Pods here 24 | end 25 | 26 | post_install do |installer| 27 | assertDeploymentTarget(installer) 28 | end 29 | -------------------------------------------------------------------------------- /android/capacitor.settings.gradle: -------------------------------------------------------------------------------- 1 | // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN 2 | include ':capacitor-android' 3 | project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor') 4 | 5 | include ':capacitor-community-apple-sign-in' 6 | project(':capacitor-community-apple-sign-in').projectDir = new File('../node_modules/@capacitor-community/apple-sign-in/android') 7 | 8 | include ':capacitor-app' 9 | project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android') 10 | 11 | include ':capacitor-browser' 12 | project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/browser/android') 13 | 14 | include ':capgo-native-audio' 15 | project(':capgo-native-audio').projectDir = new File('../node_modules/@capgo/native-audio/android') 16 | 17 | include ':codetrix-studio-capacitor-google-auth' 18 | project(':codetrix-studio-capacitor-google-auth').projectDir = new File('../node_modules/@codetrix-studio/capacitor-google-auth/android') 19 | 20 | include ':jofr-capacitor-media-session' 21 | project(':jofr-capacitor-media-session').projectDir = new File('../node_modules/@jofr/capacitor-media-session/android') 22 | -------------------------------------------------------------------------------- /src/lib/components/reader.svelte: -------------------------------------------------------------------------------- 1 | 27 | 28 |
33 |
34 |

35 |

{bookmark.title}

36 |
{@html bookmark.reader}
37 |
38 |
39 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/entries/pages/_layout.svelte.js: -------------------------------------------------------------------------------- 1 | import { c as create_ssr_component, a as subscribe, e as escape, b as add_attribute } from "../../chunks/index2.js"; 2 | import { u as userStore } from "../../chunks/store.js"; 3 | import { p as page } from "../../chunks/stores.js"; 4 | import { P as PUBLIC_MIXPANEL_KEY, a as PUBLIC_TITLE } from "../../chunks/db.js"; 5 | import mixpanel from "mixpanel-browser"; 6 | import "@capacitor/app"; 7 | import { Capacitor } from "@capacitor/core"; 8 | const app = ""; 9 | const Layout = create_ssr_component(($$result, $$props, $$bindings, slots) => { 10 | let $$unsubscribe_page; 11 | $$unsubscribe_page = subscribe(page, (value) => value); 12 | mixpanel.init(PUBLIC_MIXPANEL_KEY); 13 | userStore.subscribe((v) => { 14 | }); 15 | let isIos = false; 16 | if (Capacitor.getPlatform() === "ios") { 17 | isIos = true; 18 | } 19 | $$unsubscribe_page(); 20 | return `${$$result.head += `${$$result.title = `${escape(PUBLIC_TITLE)}`, ""}`, ""} 21 | 22 | ${slots.default ? slots.default({}) : ``}`; 23 | }); 24 | export { 25 | Layout as default 26 | }; 27 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/loading-dots.e3f7c445.js: -------------------------------------------------------------------------------- 1 | import{S as $,i as I,s as D,k as p,a as b,l as _,m as g,h as d,c as w,n as l,a8 as n,b as E,I as v,J as y}from"./index.485fcb8d.js";/* empty css */function V(r){let e,t,i,o,c,m,u,h,f;return{c(){e=p("div"),t=p("div"),o=b(),c=p("div"),u=b(),h=p("div"),this.h()},l(a){e=_(a,"DIV",{class:!0});var s=g(e);t=_(s,"DIV",{class:!0}),g(t).forEach(d),o=w(s),c=_(s,"DIV",{class:!0}),g(c).forEach(d),u=w(s),h=_(s,"DIV",{class:!0}),g(h).forEach(d),s.forEach(d),this.h()},h(){l(t,"class",i=n(`dot ${r[0]?"bg-white":"bg-primary"}`)+" svelte-12aohcs"),l(c,"class",m=n(`dot ${r[0]?"bg-white":"bg-primary"}`)+" svelte-12aohcs"),l(h,"class",f=n(`dot ${r[0]?"bg-white":"bg-primary"}`)+" svelte-12aohcs"),l(e,"class","flex gap-1 flex-row-reverse")},m(a,s){E(a,e,s),v(e,t),v(e,o),v(e,c),v(e,u),v(e,h)},p(a,[s]){s&1&&i!==(i=n(`dot ${a[0]?"bg-white":"bg-primary"}`)+" svelte-12aohcs")&&l(t,"class",i),s&1&&m!==(m=n(`dot ${a[0]?"bg-white":"bg-primary"}`)+" svelte-12aohcs")&&l(c,"class",m),s&1&&f!==(f=n(`dot ${a[0]?"bg-white":"bg-primary"}`)+" svelte-12aohcs")&&l(h,"class",f)},i:y,o:y,d(a){a&&d(e)}}}function L(r,e,t){let{white:i=!1}=e;return r.$$set=o=>{"white"in o&&t(0,i=o.white)},[i]}class q extends ${constructor(e){super(),I(this,e,L,V,D,{white:0})}}export{q as L}; 2 | -------------------------------------------------------------------------------- /src/lib/components/toasts.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | {#if $toastsStore} 17 |
22 | {#each $toastsStore as toast (toast.id)} 23 | 38 | {/each} 39 |
40 | {/if} 41 | -------------------------------------------------------------------------------- /src/lib/components/context-menu.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 | 48 | -------------------------------------------------------------------------------- /ios/App/App/Assets.xcassets/Splash.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Default@1x~universal~anyany.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "appearances" : [ 10 | { 11 | "appearance" : "luminosity", 12 | "value" : "dark" 13 | } 14 | ], 15 | "filename" : "Default@1x~universal~anyany-dark.png", 16 | "idiom" : "universal", 17 | "scale" : "1x" 18 | }, 19 | { 20 | "filename" : "Default@2x~universal~anyany.png", 21 | "idiom" : "universal", 22 | "scale" : "2x" 23 | }, 24 | { 25 | "appearances" : [ 26 | { 27 | "appearance" : "luminosity", 28 | "value" : "dark" 29 | } 30 | ], 31 | "filename" : "Default@2x~universal~anyany-dark.png", 32 | "idiom" : "universal", 33 | "scale" : "2x" 34 | }, 35 | { 36 | "filename" : "Default@3x~universal~anyany.png", 37 | "idiom" : "universal", 38 | "scale" : "3x" 39 | }, 40 | { 41 | "appearances" : [ 42 | { 43 | "appearance" : "luminosity", 44 | "value" : "dark" 45 | } 46 | ], 47 | "filename" : "Default@3x~universal~anyany-dark.png", 48 | "idiom" : "universal", 49 | "scale" : "3x" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/lib/icons/player-backward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/player-backward.5ba1069e.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/logo-icon.0848b318.js: -------------------------------------------------------------------------------- 1 | import{S as x,i as E,s as M,M as v,N as o,O as f,m as c,h,n,P as _,b as Z,I as g,Q as B,J as m,R as w}from"./index.485fcb8d.js";function C(u){let t,l,s,r,i,p=[{xmlns:"http://www.w3.org/2000/svg"},{fill:"none"},{viewBox:"0 0 45 57"},u[0]],d={};for(let e=0;e{l(0,t=v(v({},t),w(s)))},t=w(t),[t]}class L extends x{constructor(t){super(),E(this,t,b,C,M,{})}}export{L}; 2 | -------------------------------------------------------------------------------- /src/lib/icons/player-forward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | import { SupabaseClient, Session } from '@supabase/supabase-js'; 2 | import { Database } from './DatabaseDefinitions'; 3 | 4 | declare global { 5 | declare module '*.svg?component' { 6 | import type { ComponentType, SvelteComponentTyped } from 'svelte'; 7 | import type { SVGAttributes } from 'svelte/elements'; 8 | 9 | const content: ComponentType>>; 10 | 11 | export default content; 12 | } 13 | 14 | declare module '*.svg?src' { 15 | const content: string; 16 | export default content; 17 | } 18 | 19 | declare module '*.svg?url' { 20 | const content: string; 21 | export default content; 22 | } 23 | 24 | declare module '*.svg?dataurl' { 25 | const content: string; 26 | export default content; 27 | } 28 | 29 | declare module '*.svg?dataurl=base64' { 30 | const content: string; 31 | export default content; 32 | } 33 | 34 | declare module '*.svg?dataurl=enc' { 35 | const content: string; 36 | export default content; 37 | } 38 | 39 | declare module '*.svg?dataurl=unenc' { 40 | const content: string; 41 | export default content; 42 | } 43 | 44 | namespace App { 45 | interface Locals { 46 | supabase: SupabaseClient; 47 | getSession(): Promise; 48 | } 49 | interface PageData { 50 | session: Session | null; 51 | } 52 | // interface Error {} 53 | // interface Platform {} 54 | } 55 | } 56 | 57 | declare namespace svelte.JSX { 58 | interface HTMLAttributes { 59 | onclick_outside?: (e: CustomEvent) => void; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/assets/player-forward.bb7b90e3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/(app)/+page.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 |
21 | {#if $bookmarkStore && $bookmarkStore.length > 0} 22 |
23 |
24 |
25 | 26 |
27 |
28 |

My Queue

29 |

30 | Stories: {$bookmarkStore.length}{#if !$planStore} /5{/if} 31 | Total listening time: {Math.floor(totalTime / 60)} 32 | {Math.floor(totalTime / 60) > 1 ? 'mins' : 'min'} 33 |

34 |
35 |
36 |
37 | 38 |
39 |
40 | {#each $bookmarkStore as bookmark (bookmark.id)} 41 |
42 | 43 |
44 | {/each} 45 | {:else} 46 |
Empty queue
47 | {/if} 48 |
49 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/output/server/chunks/index.js: -------------------------------------------------------------------------------- 1 | import { k as noop, l as safe_not_equal } from "./index2.js"; 2 | const subscriber_queue = []; 3 | function readable(value, start) { 4 | return { 5 | subscribe: writable(value, start).subscribe 6 | }; 7 | } 8 | function writable(value, start = noop) { 9 | let stop; 10 | const subscribers = /* @__PURE__ */ new Set(); 11 | function set(new_value) { 12 | if (safe_not_equal(value, new_value)) { 13 | value = new_value; 14 | if (stop) { 15 | const run_queue = !subscriber_queue.length; 16 | for (const subscriber of subscribers) { 17 | subscriber[1](); 18 | subscriber_queue.push(subscriber, value); 19 | } 20 | if (run_queue) { 21 | for (let i = 0; i < subscriber_queue.length; i += 2) { 22 | subscriber_queue[i][0](subscriber_queue[i + 1]); 23 | } 24 | subscriber_queue.length = 0; 25 | } 26 | } 27 | } 28 | } 29 | function update(fn) { 30 | set(fn(value)); 31 | } 32 | function subscribe(run, invalidate = noop) { 33 | const subscriber = [run, invalidate]; 34 | subscribers.add(subscriber); 35 | if (subscribers.size === 1) { 36 | stop = start(set) || noop; 37 | } 38 | run(value); 39 | return () => { 40 | subscribers.delete(subscriber); 41 | if (subscribers.size === 0 && stop) { 42 | stop(); 43 | stop = null; 44 | } 45 | }; 46 | } 47 | return { set, update, subscribe }; 48 | } 49 | export { 50 | readable as r, 51 | writable as w 52 | }; 53 | -------------------------------------------------------------------------------- /src/lib/components/paygate.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 |
22 |
26 |
27 |
28 | 29 |
30 |
31 |
32 |
33 | You have reached the maximum of 5 articles you can add with your free account. Delete articles before you can add new ones. 36 |
37 |
38 | Or upgrade to 39 | My Queue Plus and add an unlimited number of articles in your 40 | queue. 41 |
42 | 48 |
49 |
50 |
51 | -------------------------------------------------------------------------------- /src/lib/store.ts: -------------------------------------------------------------------------------- 1 | import type { BookmarkType, UserType } from '$types/types'; 2 | import { writable, get } from 'svelte/store'; 3 | import Welcome from './welcome.json'; 4 | import mixpanel from 'mixpanel-browser'; 5 | 6 | // This file is disgusting I apologize to those who must witness 7 | // Hackathon things 8 | 9 | export const bookmarkStore = writable(); 10 | export const currentStore = writable(null); 11 | export const readingStore = writable(false); 12 | export const pausedStore = writable(true); 13 | export const userStore = writable(); 14 | export const toastsStore = writable([]); 15 | export const audioStore = writable(null); 16 | export const planStore = writable<'premium' | null>(null); 17 | export const paygateStore = writable<'article-limit' | null>(null); 18 | 19 | bookmarkStore.subscribe((value) => { 20 | if (value && value.length === 0) { 21 | bookmarkStore.update((v) => [Welcome]); 22 | currentStore.update((v) => Welcome); 23 | } 24 | }); 25 | 26 | interface ToastType { 27 | id?: number; 28 | content: string; 29 | timeout?: number; 30 | type: 'info' | 'success' | 'error'; 31 | } 32 | 33 | export const addToast = (toast: ToastType) => { 34 | const id = Math.floor(Math.random() * 10000); 35 | 36 | const newToast = { 37 | id, 38 | timeout: 5000, 39 | ...toast 40 | }; 41 | 42 | toastsStore.update((all) => [newToast, ...all]); 43 | 44 | if (newToast.timeout) setTimeout(() => dismissToast(id), newToast.timeout); 45 | }; 46 | 47 | export const dismissToast = (id: number) => { 48 | toastsStore.update((all) => all.filter((t) => t.id !== id)); 49 | }; 50 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/vercel-tmp/index.js: -------------------------------------------------------------------------------- 1 | import { installPolyfills } from '@sveltejs/kit/node/polyfills'; 2 | import { getRequest, setResponse } from '@sveltejs/kit/node'; 3 | import { Server } from '../output/server/index.js'; 4 | import { manifest } from './manifest.js'; 5 | 6 | installPolyfills(); 7 | 8 | const server = new Server(manifest); 9 | 10 | await server.init({ 11 | env: /** @type {Record} */ (process.env) 12 | }); 13 | 14 | const DATA_SUFFIX = '/__data.json'; 15 | 16 | /** 17 | * @param {import('http').IncomingMessage} req 18 | * @param {import('http').ServerResponse} res 19 | */ 20 | export default async (req, res) => { 21 | if (req.url) { 22 | const [path, search] = req.url.split('?'); 23 | 24 | const params = new URLSearchParams(search); 25 | let pathname = params.get('__pathname'); 26 | 27 | if (pathname) { 28 | params.delete('__pathname'); 29 | // Optional routes' pathname replacements look like `/foo/$1/bar` which means we could end up with an url like /foo//bar 30 | pathname = pathname.replace(/\/+/g, '/'); 31 | req.url = `${pathname}${path.endsWith(DATA_SUFFIX) ? DATA_SUFFIX : ''}?${params}`; 32 | } 33 | } 34 | 35 | /** @type {Request} */ 36 | let request; 37 | 38 | try { 39 | request = await getRequest({ base: `https://${req.headers.host}`, request: req }); 40 | } catch (err) { 41 | res.statusCode = /** @type {any} */ (err).status || 400; 42 | return res.end('Invalid request body'); 43 | } 44 | 45 | setResponse( 46 | res, 47 | await server.respond(request, { 48 | getClientAddress() { 49 | return /** @type {string} */ (request.headers.get('x-forwarded-for')); 50 | } 51 | }) 52 | ); 53 | }; 54 | -------------------------------------------------------------------------------- /src/routes/(app)/+layout.svelte: -------------------------------------------------------------------------------- 1 | 29 | 30 | {#if user} 31 | {#if isPaygateShown} 32 | 33 | {/if} 34 | 35 |
36 |
37 |
38 | {#if !isLoading} 39 | 40 | {/if} 41 |
42 | 53 |
54 |
55 | {/if} 56 | -------------------------------------------------------------------------------- /src/lib/components/header.svelte: -------------------------------------------------------------------------------- 1 | 19 | 20 |
21 |
22 | 23 |
24 | 25 |
26 | {#if user?.user_metadata.avatar_url} 27 | User's profile 32 | {/if} 33 | {#if !user?.user_metadata.avatar_url} 34 |
35 | {user?.email?.charAt(0)} 36 |
37 | {/if} 38 |
39 | 52 |
53 |
54 | -------------------------------------------------------------------------------- /.vercel/output/functions/fn.func/.svelte-kit/vercel-tmp/manifest.js: -------------------------------------------------------------------------------- 1 | export const manifest = { 2 | appDir: "_app", 3 | appPath: "_app", 4 | assets: new Set([".DS_Store",".well-known/apple-app-site-association",".well-known/assetlinks.json","favicon.png","fonts/FrankRuhlLibre-Bold.ttf","fonts/FrankRuhlLibre-Medium.ttf","fonts/FrankRuhlLibre-Regular.ttf","fonts/FrankRuhlLibre-SemiBold.ttf","images/sources/add-url.png","images/sources/banners/bbc.png","images/sources/banners/cnn.png","images/sources/banners/guardian.png","images/sources/banners/medium.png","images/sources/banners/newyorktimes.png","images/sources/banners/techcrunch.png","images/sources/bbc.png","images/sources/cnn.png","images/sources/guardian.png","images/sources/medium.png","images/sources/my-queue.png","images/sources/newyorktimes.png","images/sources/techcrunch.png","logos/logo128.png","logos/logo16.png","logos/logo180.png","logos/logo192.png","logos/logo32.png","logos/logo48.png"]), 5 | mimeTypes: {".json":"application/json",".png":"image/png",".ttf":"font/ttf"}, 6 | _: { 7 | client: {"start":{"file":"_app/immutable/entry/start.5e1f6833.js","imports":["_app/immutable/entry/start.5e1f6833.js","_app/immutable/chunks/index.485fcb8d.js","_app/immutable/chunks/singletons.4d3f7a01.js","_app/immutable/chunks/index.1e0a1e55.js"],"stylesheets":[],"fonts":[]},"app":{"file":"_app/immutable/entry/app.bce9119f.js","imports":["_app/immutable/entry/app.bce9119f.js","_app/immutable/chunks/preload-helper.41c905a7.js","_app/immutable/chunks/index.485fcb8d.js"],"stylesheets":[],"fonts":[]}}, 8 | nodes: [ 9 | () => import('../output/server/nodes/0.js'), 10 | () => import('../output/server/nodes/1.js') 11 | ], 12 | routes: [ 13 | 14 | ], 15 | matchers: async () => { 16 | 17 | return { }; 18 | } 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /src/lib/components/discovery-bar.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 50 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/avatar-circle.72291414.js: -------------------------------------------------------------------------------- 1 | import{S as y,i as I,s as $,k as d,a as j,l as m,m as h,c as q,h as o,n,b as v,I as p,J as g,K as k,q as E,r as S,u as D}from"./index.485fcb8d.js";import{u as V}from"./index.e036d59b.js";import"./db.a3b95309.js";function w(i){let e,t;return{c(){e=d("img"),this.h()},l(s){e=m(s,"IMG",{class:!0,src:!0,alt:!0}),this.h()},h(){n(e,"class","flex items-center justify-center h-10 w-10"),k(e.src,t=i[0].user_metadata.avatar_url)||n(e,"src",t),n(e,"alt","User's profile")},m(s,a){v(s,e,a)},p(s,a){a&1&&!k(e.src,t=s[0].user_metadata.avatar_url)&&n(e,"src",t)},d(s){s&&o(e)}}}function A(i){var a,r;let e,t=((r=(a=i[0])==null?void 0:a.email)==null?void 0:r.charAt(0))+"",s;return{c(){e=d("div"),s=E(t),this.h()},l(c){e=m(c,"DIV",{class:!0});var f=h(e);s=S(f,t),f.forEach(o),this.h()},h(){n(e,"class","uppercase h-10 w-10 bg-[#c8c8c8] flex justify-center items-center")},m(c,f){v(c,e,f),p(e,s)},p(c,f){var l,u;f&1&&t!==(t=((u=(l=c[0])==null?void 0:l.email)==null?void 0:u.charAt(0))+"")&&D(s,t)},d(c){c&&o(e)}}}function C(i){var c,f;let e,t,s,a=((c=i[0])==null?void 0:c.user_metadata.avatar_url)&&w(i),r=!((f=i[0])!=null&&f.user_metadata.avatar_url)&&A(i);return{c(){e=d("div"),t=d("a"),a&&a.c(),s=j(),r&&r.c(),this.h()},l(l){e=m(l,"DIV",{class:!0});var u=h(e);t=m(u,"A",{href:!0,class:!0});var _=h(t);a&&a.l(_),s=q(_),r&&r.l(_),_.forEach(o),u.forEach(o),this.h()},h(){n(t,"href","/settings"),n(t,"class","overflow-hidden rounded-full h-10 w-10"),n(e,"class","w-full justify-end flex")},m(l,u){v(l,e,u),p(e,t),a&&a.m(t,null),p(t,s),r&&r.m(t,null)},p(l,[u]){var _,b;(_=l[0])!=null&&_.user_metadata.avatar_url?a?a.p(l,u):(a=w(l),a.c(),a.m(t,s)):a&&(a.d(1),a=null),(b=l[0])!=null&&b.user_metadata.avatar_url?r&&(r.d(1),r=null):r?r.p(l,u):(r=A(l),r.c(),r.m(t,null))},i:g,o:g,d(l){l&&o(e),a&&a.d(),r&&r.d()}}}function G(i,e,t){let s;return V.subscribe(a=>{t(0,s=a)}),[s]}class U extends y{constructor(e){super(),I(this,e,G,C,$,{})}}export{U as A}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/index.73dd7c3f.js: -------------------------------------------------------------------------------- 1 | import{a9 as w,aa as f}from"./index.485fcb8d.js";function d(t){const e=t-1;return e*e*e+1}function T(t){return t<.5?8*Math.pow(t,4):-8*Math.pow(t-1,4)+1}function $(t,{delay:e=0,duration:n=400,easing:s=w}={}){const r=+getComputedStyle(t).opacity;return{delay:e,duration:n,easing:s,css:a=>`opacity: ${a*r}`}}function v(t,{delay:e=0,duration:n=400,easing:s=d,x:r=0,y:a=0,opacity:l=0}={}){const i=getComputedStyle(t),c=+i.opacity,p=i.transform==="none"?"":i.transform,y=c*(1-l),[g,m]=f(r),[b,S]=f(a);return{delay:e,duration:n,easing:s,css:(u,h)=>` 2 | transform: ${p} translate(${(1-u)*g}${m}, ${(1-u)*b}${S}); 3 | opacity: ${c-y*h}`}}function I(t){if(t===null||t===!0||t===!1)return NaN;var e=Number(t);return isNaN(e)?e:e<0?Math.ceil(e):Math.floor(e)}function D(t,e){if(e.length1?"s":"")+" required, but only "+e.length+" present")}function o(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(n){return typeof n}:o=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},o(t)}function _(t){D(1,arguments);var e=Object.prototype.toString.call(t);return t instanceof Date||o(t)==="object"&&e==="[object Date]"?new Date(t.getTime()):typeof t=="number"||e==="[object Number]"?new Date(t):((typeof t=="string"||e==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function N(t){var e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),t.getTime()-e.getTime()}var O=6e4,C=36e5;export{I as a,O as b,$ as c,d,v as f,N as g,C as m,T as q,D as r,_ as t}; 4 | -------------------------------------------------------------------------------- /types/supabase.ts: -------------------------------------------------------------------------------- 1 | export type Json = string | number | boolean | null | { [key: string]: Json } | Json[]; 2 | 3 | export interface Database { 4 | public: { 5 | Tables: { 6 | bookmarks: { 7 | Row: { 8 | audio: string | null; 9 | authors: string[]; 10 | content: string | null; 11 | created_at: string | null; 12 | domain: string | null; 13 | id: number; 14 | image: string | null; 15 | published: string | null; 16 | read_time: number | null; 17 | title: string | null; 18 | url: string | null; 19 | language: string | null; 20 | user_id: string | null; 21 | reader: string | null; 22 | publisher: string | null; 23 | }; 24 | Insert: { 25 | audio?: string | null; 26 | authors?: string[]; 27 | content?: string | null; 28 | created_at?: string | null; 29 | domain?: string | null; 30 | id?: number; 31 | image?: string | null; 32 | published?: string | null; 33 | read_time?: number | null; 34 | title?: string | null; 35 | url?: string | null; 36 | language: string | null; 37 | user_id?: string | null; 38 | reader: string | null; 39 | publisher: string | null; 40 | }; 41 | Update: { 42 | audio?: string | null; 43 | authors?: string[]; 44 | content?: string | null; 45 | created_at?: string | null; 46 | domain?: string | null; 47 | id?: number; 48 | image?: string | null; 49 | published?: string | null; 50 | read_time?: number | null; 51 | title?: string | null; 52 | url?: string | null; 53 | language: string | null; 54 | user_id?: string | null; 55 | publisher: string | null; 56 | }; 57 | }; 58 | }; 59 | Views: { 60 | [_ in never]: never; 61 | }; 62 | Functions: { 63 | [_ in never]: never; 64 | }; 65 | Enums: { 66 | [_ in never]: never; 67 | }; 68 | CompositeTypes: { 69 | [_ in never]: never; 70 | }; 71 | }; 72 | } 73 | -------------------------------------------------------------------------------- /src/lib/components/player-controls.svelte: -------------------------------------------------------------------------------- 1 | 36 | 37 |
38 | 39 |
46 |
47 |
51 |
55 |
56 |
57 |
{displayTime}
58 |
{displayDuration}
59 |
60 |
61 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myqueue", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev --host", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "update-types": "npx supabase gen types typescript --project-id 'paddechpmdutxepollwl' --schema public > types/supabase.ts", 10 | "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", 11 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", 12 | "lint": "prettier --plugin-search-dir . --check . && eslint .", 13 | "format": "prettier --plugin-search-dir . --write ." 14 | }, 15 | "devDependencies": { 16 | "@capacitor/assets": "^2.0.4", 17 | "@poppanator/sveltekit-svg": "^3.0.0", 18 | "@sveltejs/adapter-auto": "^2.0.0", 19 | "@sveltejs/adapter-static": "^2.0.2", 20 | "@sveltejs/kit": "^1.5.0", 21 | "autoprefixer": "^10.4.14", 22 | "eslint": "^8.28.0", 23 | "eslint-config-prettier": "^8.5.0", 24 | "eslint-plugin-svelte3": "^4.0.0", 25 | "postcss": "^8.4.21", 26 | "prettier": "^2.8.0", 27 | "prettier-plugin-svelte": "^2.8.1", 28 | "svelte": "^3.54.0", 29 | "svelte-check": "^3.0.1", 30 | "tailwindcss": "^3.3.1", 31 | "typescript": "^5.0.0", 32 | "vite": "^4.2.0" 33 | }, 34 | "type": "module", 35 | "dependencies": { 36 | "@capacitor-community/apple-sign-in": "^5.0.0", 37 | "@capacitor/android": "^5.1.0", 38 | "@capacitor/app": "^5.0.3", 39 | "@capacitor/browser": "^5.0.6", 40 | "@capacitor/cli": "^5.0.5", 41 | "@capacitor/core": "^5.0.5", 42 | "@capacitor/ios": "^5.1.0", 43 | "@capgo/native-audio": "^6.0.13", 44 | "@codetrix-studio/capacitor-google-auth": "^3.3.2", 45 | "@felte/validator-zod": "^1.0.13", 46 | "@jofr/capacitor-media-session": "^3.0.0", 47 | "@supabase/auth-helpers-sveltekit": "^0.9.0", 48 | "@supabase/supabase-js": "^2.31.0", 49 | "@sveltejs/adapter-vercel": "^3.0.2", 50 | "@types/mixpanel-browser": "^2.38.1", 51 | "date-fns": "^2.29.3", 52 | "dotenv": "^16.3.1", 53 | "felte": "^1.2.7", 54 | "mixpanel-browser": "^2.46.0", 55 | "zod": "^3.21.4" 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /.vercel/output/static/add.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/read.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/signin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/signup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/settings.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/App/App/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /.vercel/output/static/discover/bbc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/discover/cnn.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/discover/medium.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/discover/guardian.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/discover/techcrunch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /.vercel/output/static/discover/newyorktimes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /src/lib/components/button.svelte: -------------------------------------------------------------------------------- 1 | 25 | 26 | 45 | 46 | 89 | -------------------------------------------------------------------------------- /ios/App/App/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | My Queue 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleURLTypes 22 | 23 | 24 | REVERSED_CLIENT_ID 25 | com.googleusercontent.apps.831091108438-9h14cn7sispne9eemv2qv5hf45k2ol91 26 | 27 | 28 | CFBundleTypeRole 29 | Editor 30 | CFBundleURLSchemes 31 | 32 | com.googleusercontent.apps.831091108438-9h14cn7sispne9eemv2qv5hf45k2ol91 33 | 34 | 35 | 36 | CFBundleVersion 37 | $(CURRENT_PROJECT_VERSION) 38 | LSRequiresIPhoneOS 39 | 40 | UILaunchStoryboardName 41 | LaunchScreen 42 | UIMainStoryboardFile 43 | Main 44 | UIRequiredDeviceCapabilities 45 | 46 | armv7 47 | 48 | UISupportedInterfaceOrientations 49 | 50 | UIInterfaceOrientationPortrait 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | UISupportedInterfaceOrientations~ipad 55 | 56 | UIInterfaceOrientationPortrait 57 | UIInterfaceOrientationPortraitUpsideDown 58 | UIInterfaceOrientationLandscapeLeft 59 | UIInterfaceOrientationLandscapeRight 60 | 61 | UIViewControllerBasedStatusBarAppearance 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # My Queue App 2 | 3 | 4 | 5 | 6 | 7 | ### My Queue 8 | Listen to your content! I'm constantly bookmarking articles and reading them on the train home from work, with My Queue, I can now save them to My Queue and listen to them playlist style on the way home. 9 | 10 | ### Svelte Hackathon 11 | Hey friends. This is the main frontend app for [My Queue](https://www.myqueue.so/), it's written with the big help of SvelteKit. I was just learning Svelte when I started this project, and I think I've made plenty of mistakes, specifically around state management & auth gating, I abused global stores and made a mess and I found the documentation for sveltekit auth gating too late, just a disaster. If anyone has any pointers on how to handle my stores or auth gating, let me know! I really ended up enjoying Svelte, so thanks for putting together this Hackathon and giving me some inspiration. 12 | 13 | ## App Features: 14 | - 📰 Scrape any article! Our scrapper is a work in progress, but we're quite happy with the results we've been able to achieve in a limited time. Give it a try. Let us know if it doesn't perform to expectation. 15 | - 🎧 Listen to any article. Currently we're using Google Text-To-Speech to translate your articles into any language supported by google. 16 | - 🐱‍👓 Read any article. We've started work on our custom reader, we're continuing to improve looks and functionality. 17 | - 🔒 Google Auth, and Email password auth. Still have to set up remaining user features. 18 | 19 | 20 | 21 | 22 | ## Stuff used: 23 | A lot of moving parts are involved in this project. We've got 24 | - Svelte App 25 | - [Vercel](https://vercel.com/) 26 | - Sveltekit 27 | - TypeScript 28 | - Vite 29 | - Tailwind 30 | - Supabase JS library 31 | - date-fns 32 | - felte 33 | - [Supabase](https://supabase.com/) 34 | - Auth 35 | - Postgres 36 | - Storage 37 | - Marketing site 38 | - Webflow 39 | - Sanitizing and parsing microservice 40 | - [railway](https://railway.app/) 41 | - node 42 | - express 43 | - Parsing microservice 44 | - [railway](https://railway.app/) 45 | - python 46 | - fastapi 47 | - [Chrome extension](https://chrome.google.com/webstore/detail/my-queue/jdhlmgdcnfbbdgaaddojenfeoaphgnlb) 48 | - react 49 | - tailwind 50 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 64 | 65 | 66 | {PUBLIC_TITLE} 67 | 68 | 69 |
70 | 71 |
72 | -------------------------------------------------------------------------------- /src/routes/(app)/settings/+page.svelte: -------------------------------------------------------------------------------- 1 | 26 | 27 |
28 |
29 |
30 |
31 | 32 |
33 |
34 |

My Queue

35 | {#if $userStore} 36 |

{$userStore.email}

37 | {/if} 38 |
39 |
40 |
41 | 42 |
43 |
44 |
45 | 50 |
51 | Support 52 |
53 | 54 |
55 |
56 |
Have a question or feedback about My Queue? Contact us.
57 |
58 | {#if $planStore} 59 | 60 | Manage my subscription 61 | 62 | {/if} 63 | 66 | 67 |
68 |
Danger zone
69 | 73 |
74 |
75 |
76 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | # Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore 2 | 3 | # Built application files 4 | *.apk 5 | *.aar 6 | *.ap_ 7 | *.aab 8 | 9 | # Files for the ART/Dalvik VM 10 | *.dex 11 | 12 | # Java class files 13 | *.class 14 | 15 | # Generated files 16 | bin/ 17 | gen/ 18 | out/ 19 | # Uncomment the following line in case you need and you don't have the release build type files in your app 20 | # release/ 21 | 22 | # Gradle files 23 | .gradle/ 24 | build/ 25 | 26 | # Local configuration file (sdk path, etc) 27 | local.properties 28 | 29 | # Proguard folder generated by Eclipse 30 | proguard/ 31 | 32 | # Log Files 33 | *.log 34 | 35 | # Android Studio Navigation editor temp files 36 | .navigation/ 37 | 38 | # Android Studio captures folder 39 | captures/ 40 | 41 | # IntelliJ 42 | *.iml 43 | .idea/workspace.xml 44 | .idea/tasks.xml 45 | .idea/gradle.xml 46 | .idea/assetWizardSettings.xml 47 | .idea/dictionaries 48 | .idea/libraries 49 | # Android Studio 3 in .gitignore file. 50 | .idea/caches 51 | .idea/modules.xml 52 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you 53 | .idea/navEditor.xml 54 | 55 | # Keystore files 56 | # Uncomment the following lines if you do not want to check your keystore files in. 57 | #*.jks 58 | #*.keystore 59 | 60 | # External native build folder generated in Android Studio 2.2 and later 61 | .externalNativeBuild 62 | .cxx/ 63 | 64 | # Google Services (e.g. APIs or Firebase) 65 | # google-services.json 66 | 67 | # Freeline 68 | freeline.py 69 | freeline/ 70 | freeline_project_description.json 71 | 72 | # fastlane 73 | fastlane/report.xml 74 | fastlane/Preview.html 75 | fastlane/screenshots 76 | fastlane/test_output 77 | fastlane/readme.md 78 | 79 | # Version control 80 | vcs.xml 81 | 82 | # lint 83 | lint/intermediates/ 84 | lint/generated/ 85 | lint/outputs/ 86 | lint/tmp/ 87 | # lint/reports/ 88 | 89 | # Android Profiling 90 | *.hprof 91 | 92 | # Cordova plugins for Capacitor 93 | capacitor-cordova-android-plugins 94 | 95 | # Copied web assets 96 | app/src/main/assets/public 97 | 98 | # Generated Config files 99 | app/src/main/assets/capacitor.config.json 100 | app/src/main/assets/capacitor.plugins.json 101 | app/src/main/res/xml/config.xml 102 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | namespace "so.play.myqueue" 5 | compileSdkVersion rootProject.ext.compileSdkVersion 6 | defaultConfig { 7 | applicationId "so.play.myqueue" 8 | minSdkVersion rootProject.ext.minSdkVersion 9 | targetSdkVersion rootProject.ext.targetSdkVersion 10 | versionCode 15 11 | versionName "1.0.2" 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | aaptOptions { 14 | // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. 15 | // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 16 | ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' 17 | } 18 | } 19 | buildTypes { 20 | release { 21 | minifyEnabled false 22 | debuggable false 23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 24 | } 25 | } 26 | } 27 | 28 | repositories { 29 | flatDir{ 30 | dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' 31 | } 32 | } 33 | 34 | dependencies { 35 | implementation fileTree(include: ['*.jar'], dir: 'libs') 36 | implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion" 37 | implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion" 38 | implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion" 39 | implementation project(':capacitor-android') 40 | testImplementation "junit:junit:$junitVersion" 41 | androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" 42 | androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" 43 | implementation project(':capacitor-cordova-android-plugins') 44 | } 45 | 46 | apply from: 'capacitor.build.gradle' 47 | 48 | try { 49 | def servicesJSON = file('google-services.json') 50 | if (servicesJSON.text) { 51 | apply plugin: 'com.google.gms.google-services' 52 | } 53 | } catch(Exception e) { 54 | logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work", e) 55 | } 56 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/entry/_layout.svelte.10e6098e.js: -------------------------------------------------------------------------------- 1 | import{S as P,i as $,s as S,C as k,a as A,k as C,D as L,h as f,c as v,l as U,m as N,n as g,b,E as w,F as D,G as T,g as y,d as G,H as M,o as O}from"../chunks/index.485fcb8d.js";import{g as _}from"../chunks/navigation.eb682a3d.js";import{r as B,u as p,C as j}from"../chunks/index.e036d59b.js";import{p as q}from"../chunks/stores.68838911.js";import{P as E,a as z,s as d,d as I}from"../chunks/db.a3b95309.js";import{m}from"../chunks/mixpanel.cjs.2e5b2863.js";import{_ as F}from"../chunks/preload-helper.41c905a7.js";const H=B("App",{web:()=>F(()=>import("../chunks/web.f978dcbb.js"),["../chunks/web.f978dcbb.js","../chunks/index.e036d59b.js","../chunks/index.1e0a1e55.js","../chunks/index.485fcb8d.js"],import.meta.url).then(o=>new o.AppWeb)});function K(o){let n,l,a,r,i;document.title=n=E;const u=o[2].default,e=k(u,o,o[1],null);return{c(){l=A(),a=C("main"),e&&e.c(),this.h()},l(s){L("svelte-mg3ozw",document.head).forEach(f),l=v(s),a=U(s,"MAIN",{class:!0});var c=N(a);e&&e.l(c),c.forEach(f),this.h()},h(){g(a,"class",r=`bg-background ${o[0]?"pt-20":"pt-10"}`)},m(s,t){b(s,l,t),b(s,a,t),e&&e.m(a,null),i=!0},p(s,[t]){(!i||t&0)&&n!==(n=E)&&(document.title=n),e&&e.p&&(!i||t&2)&&w(e,u,s,s[1],i?T(u,s[1],t,null):D(s[1]),null),(!i||t&1&&r!==(r=`bg-background ${s[0]?"pt-20":"pt-10"}`))&&g(a,"class",r)},i(s){i||(y(e,s),i=!0)},o(s){G(e,s),i=!1},d(s){s&&f(l),s&&f(a),e&&e.d(s)}}}function R(o,n,l){let a;M(o,q,e=>l(4,a=e));let{$$slots:r={},$$scope:i}=n;m.init(z),p.subscribe(e=>{}),O(()=>{d.auth.getSession().then(({data:e})=>{var s;(s=e.session)!=null&&s.user?(p.set(e.session.user),m.identify(e.session.user.id),m.people.set({$email:e.session.user.email}),I.billing.getUserPlan()):a.url.pathname.includes("/sign")||_("/signin")}),d.auth.onAuthStateChange((e,s)=>{e=="SIGNED_IN"&&(s!=null&&s.user)?(console.log("ok ok"),p.set(s.user),_("/")):e=="SIGNED_OUT"&&(p.set(null),_("/signin"))}),H.addListener("appUrlOpen",async function(e){var h;const s=e.url.split("&refresh_token")[1].split("&")[0].split("=")[1],{data:t,error:c}=await d.auth.refreshSession({refresh_token:s});(h=t.session)!=null&&h.user&&(p.set(t.session.user),m.identify(t.session.user.id),m.people.set({$email:t.session.user.email}),I.billing.getUserPlan(),_("/"))})});let u=!1;return j.getPlatform()==="ios"&&(u=!0),o.$$set=e=>{"$$scope"in e&&l(1,i=e.$$scope)},[u,i,r]}class x extends P{constructor(n){super(),$(this,n,R,K,S,{})}}export{x as default}; 2 | -------------------------------------------------------------------------------- /.vercel/output/static/_app/immutable/chunks/singletons.4d3f7a01.js: -------------------------------------------------------------------------------- 1 | import{w as u}from"./index.1e0a1e55.js";var _;const g=((_=globalThis.__sveltekit_v4kz2u)==null?void 0:_.base)??"";var h;const v=((h=globalThis.__sveltekit_v4kz2u)==null?void 0:h.assets)??g,k="1690300564999",R="sveltekit:snapshot",T="sveltekit:scroll",I="sveltekit:index",f={tap:1,hover:2,viewport:3,eager:4,off:-1};function S(e){let t=e.baseURI;if(!t){const n=e.getElementsByTagName("base");t=n.length?n[0].href:e.URL}return t}function y(){return{x:pageXOffset,y:pageYOffset}}function i(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const d={...f,"":f.hover};function b(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function x(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=b(e)}}function O(e,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const o=e instanceof SVGAElement?e.target.baseVal:e.target,l=!n||!!o||m(n,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external")||e.hasAttribute("download");return{url:n,external:l,target:o}}function U(e){let t=null,n=null,o=null,l=null,r=null,a=null,s=e;for(;s&&s!==document.documentElement;)o===null&&(o=i(s,"preload-code")),l===null&&(l=i(s,"preload-data")),t===null&&(t=i(s,"keepfocus")),n===null&&(n=i(s,"noscroll")),r===null&&(r=i(s,"reload")),a===null&&(a=i(s,"replacestate")),s=b(s);return{preload_code:d[o??"off"],preload_data:d[l??"off"],keep_focus:t==="off"?!1:t===""?!0:null,noscroll:n==="off"?!1:n===""?!0:null,reload:r==="off"?!1:r===""?!0:null,replace_state:a==="off"?!1:a===""?!0:null}}function p(e){const t=u(e);let n=!0;function o(){n=!0,t.update(a=>a)}function l(a){n=!1,t.set(a)}function r(a){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&a(s=c)})}return{notify:o,set:l,subscribe:r}}function E(){const{set:e,subscribe:t}=u(!1);let n;async function o(){clearTimeout(n);const l=await fetch(`${v}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(l.ok){const a=(await l.json()).version!==k;return a&&(e(!0),clearTimeout(n)),a}else throw new Error(`Version check failed: ${l.status}`)}return{subscribe:t,check:o}}function m(e,t){return e.origin!==location.origin||!e.pathname.startsWith(t)}let w;function L(e){w=e.client}const N={url:p({}),page:p({}),navigating:u(null),updated:E()};export{I,f as P,T as S,R as a,O as b,U as c,y as d,g as e,x as f,S as g,L as h,m as i,w as j,N as s}; 2 | --------------------------------------------------------------------------------