├── .npmrc
├── static
└── favicon.png
├── src
├── lib
│ ├── stores.ts
│ ├── components
│ │ ├── logo.svelte
│ │ ├── footer.svelte
│ │ ├── BottomBar.svelte
│ │ ├── SignoutForm.svelte
│ │ ├── navigation.svelte
│ │ ├── sign-in.svelte
│ │ └── sign-up.svelte
│ ├── _helpers
│ │ ├── convertNameToInitials.ts
│ │ ├── parseTrack.ts
│ │ ├── getAllUrlParams.ts
│ │ └── parseMessage.ts
│ ├── server
│ │ ├── db
│ │ │ ├── client.ts
│ │ │ └── schema.ts
│ │ ├── lucia.ts
│ │ ├── email-send.ts
│ │ ├── log.ts
│ │ └── tokens.ts
│ ├── utils
│ │ └── string.ts
│ └── config
│ │ ├── constants.ts
│ │ ├── zod-schemas.ts
│ │ └── email-messages.ts
├── routes
│ ├── +layout.server.ts
│ ├── (protected)
│ │ ├── +layout.server.ts
│ │ ├── dashboard
│ │ │ └── +page.svelte
│ │ ├── +layout.svelte
│ │ └── profile
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ ├── auth
│ │ ├── password
│ │ │ ├── reset
│ │ │ │ ├── success
│ │ │ │ │ └── +page.svelte
│ │ │ │ ├── +page.server.ts
│ │ │ │ └── +page.svelte
│ │ │ └── update-[token]
│ │ │ │ ├── success
│ │ │ │ └── +page.svelte
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.server.ts
│ │ ├── +layout.svelte
│ │ ├── sign-out
│ │ │ └── +page.server.ts
│ │ ├── email-verification
│ │ │ ├── +page.svelte
│ │ │ ├── [token]
│ │ │ │ └── +server.ts
│ │ │ └── +page.server.ts
│ │ ├── sign-in
│ │ │ ├── +page.svelte
│ │ │ └── +page.server.ts
│ │ └── sign-up
│ │ │ ├── +page.svelte
│ │ │ └── +page.server.ts
│ ├── +layout.ts
│ ├── inlang
│ │ └── [language].json
│ │ │ └── +server.ts
│ ├── +error.svelte
│ ├── (legal)
│ │ ├── +layout@.svelte
│ │ ├── terms
│ │ │ └── +page.svelte
│ │ └── privacy
│ │ │ └── +page.svelte
│ ├── +page.svelte
│ └── +layout.svelte
├── app.postcss
├── app.html
├── app.d.ts
├── hooks.server.ts
└── theme.postcss
├── postcss.config.cjs
├── .env.example
├── .gitignore
├── .eslintignore
├── .prettierignore
├── .prettierrc
├── drizzle.config.ts
├── migrations
├── meta
│ ├── _journal.json
│ └── 0000_snapshot.json
└── 0000_closed_golden_guardian.sql
├── vite.config.ts
├── .github
└── dependabot.yml
├── tsconfig.json
├── .eslintrc.cjs
├── inlang.config.js
├── svelte.config.js
├── tailwind.config.ts
├── README.md
├── LICENSE
├── languages
├── en.json
├── de.json
└── es.json
└── package.json
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
2 | resolution-mode=highest
3 |
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ak4zh/slide/HEAD/static/favicon.png
--------------------------------------------------------------------------------
/src/lib/stores.ts:
--------------------------------------------------------------------------------
1 | import { writable } from "svelte/store";
2 |
3 | export const loading = writable(false);
--------------------------------------------------------------------------------
/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
--------------------------------------------------------------------------------
/src/routes/+layout.server.ts:
--------------------------------------------------------------------------------
1 | export const load = async (event: { locals: { user: any } }) => {
2 | return { user: event.locals.user };
3 | };
4 |
--------------------------------------------------------------------------------
/src/routes/(protected)/+layout.server.ts:
--------------------------------------------------------------------------------
1 | export const load = async (event: { locals: { user: any } }) => {
2 | return { user: event.locals.user };
3 | };
4 |
--------------------------------------------------------------------------------
/src/lib/components/logo.svelte:
--------------------------------------------------------------------------------
1 |
5 |
6 |
If you are seeing this page, you are logged in.
8 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "drizzle-kit"; 2 | import * as dotenv from "dotenv"; 3 | dotenv.config(); 4 | 5 | export default { 6 | schema: "./src/lib/server/db/schema.ts", 7 | out: "./migrations", 8 | connectionString: process.env.DATABASE_URL, 9 | } satisfies Config; -------------------------------------------------------------------------------- /src/lib/_helpers/convertNameToInitials.ts: -------------------------------------------------------------------------------- 1 | export default function convertNameToInitials(firstName: string, lastName: string): string { 2 | const firstInitial = Array.from(firstName)[0]; 3 | const lastInitial = Array.from(lastName)[0]; 4 | return `${firstInitial}${lastInitial}`; 5 | } 6 | -------------------------------------------------------------------------------- /migrations/meta/_journal.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "5", 3 | "dialect": "pg", 4 | "entries": [ 5 | { 6 | "idx": 0, 7 | "version": "5", 8 | "when": 1692811865662, 9 | "tag": "0000_closed_golden_guardian", 10 | "breakpoints": true 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /src/routes/auth/password/reset/success/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |8 | {i('auth.password.reset.success.checkEmail')} 9 |
10 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | import inlangPlugin from '@inlang/sdk-js/adapter-sveltekit'; 4 | import { purgeCss } from 'vite-plugin-tailwind-purgecss'; 5 | 6 | export default defineConfig({ 7 | plugins: [inlangPlugin(), sveltekit(), purgeCss()] 8 | }); 9 | -------------------------------------------------------------------------------- /src/routes/+layout.ts: -------------------------------------------------------------------------------- 1 | /* This file was created by inlang. 2 | It is needed in order to circumvent a current limitation of SvelteKit. See https://github.com/inlang/inlang/issues/647 3 | You can remove this comment and modify the file as you like. We just need to make sure it exists. 4 | Please do not delete it (inlang will recreate it if needed). */ -------------------------------------------------------------------------------- /src/routes/auth/password/update-[token]/success/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |8 | Your password has been updated. You may now sign in with your new password. 9 |
10 | -------------------------------------------------------------------------------- /src/routes/inlang/[language].json/+server.ts: -------------------------------------------------------------------------------- 1 | /* This file was created by inlang. 2 | It is needed in order to circumvent a current limitation of SvelteKit. See https://github.com/inlang/inlang/issues/647 3 | You can remove this comment and modify the file as you like. We just need to make sure it exists. 4 | Please do not delete it (inlang will recreate it if needed). */ -------------------------------------------------------------------------------- /src/lib/_helpers/parseTrack.ts: -------------------------------------------------------------------------------- 1 | export default async function parseTrack(track: unknown): Promise