···11+# sv
22+33+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
44+55+## Creating a project
66+77+If you're seeing this, you've probably already done this step. Congrats!
88+99+```sh
1010+# create a new project
1111+npx sv create my-app
1212+```
1313+1414+To recreate this project with the same configuration:
1515+1616+```sh
1717+# recreate this project
1818+npx sv@0.16.2 create --template minimal --types ts --add prettier eslint vitest="usages:unit" playwright tailwindcss="plugins:typography" sveltekit-adapter="adapter:node" --no-install web
1919+```
2020+2121+## Developing
2222+2323+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
2424+2525+```sh
2626+npm run dev
2727+2828+# or start the server and open the app in a new browser tab
2929+npm run dev -- --open
3030+```
3131+3232+## Building
3333+3434+To create a production version of your app:
3535+3636+```sh
3737+npm run build
3838+```
3939+4040+You can preview the production build with `npm run preview`.
4141+4242+> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
···11+// `$icon/<name>` is a vite alias for unplugin-icons' `~icons/lucide/<name>`
22+// virtual module (see vite.config.ts). mirror its ambient type here so tsc /
33+// svelte-check resolve the aliased imports. must stay a global .d.ts (no export)
44+declare module '$icon/*' {
55+ import type { Component } from 'svelte';
66+ import type { SvelteHTMLElements } from 'svelte/elements';
77+88+ const component: Component<SvelteHTMLElements['svg']>;
99+1010+ export default component;
1111+}
···11+<script lang="ts">
22+ import { getAuth } from '$lib/auth.svelte';
33+ import MarketingHome from '$lib/components/home/MarketingHome.svelte';
44+55+ const auth = getAuth();
66+</script>
77+88+<svelte:head>
99+ <title>Tangled · The next-generation social coding platform</title>
1010+ <meta
1111+ name="description"
1212+ content="The next-generation social coding platform. Host repositories on your infrastructure with knots, use stacked pull requests, and run CI with spindles."
1313+ />
1414+</svelte:head>
1515+1616+{#if auth.currentUser}
1717+ <section class="mx-auto flex w-full max-w-screen-lg flex-col gap-2 px-6 py-8">
1818+ <h1 class="text-2xl font-semibold">Home</h1>
1919+ </section>
2020+{:else}
2121+ <MarketingHome />
2222+{/if}
+13
web/src/routes/about/+page.svelte
···11+<script lang="ts">
22+ import MarketingHome from '$lib/components/home/MarketingHome.svelte';
33+</script>
44+55+<svelte:head>
66+ <title>About · Tangled</title>
77+ <meta
88+ name="description"
99+ content="The next-generation social coding platform. Host repositories on your infrastructure with knots, use stacked pull requests, and run CI with spindles."
1010+ />
1111+</svelte:head>
1212+1313+<MarketingHome />