├── .github
├── PULL_REQUEST_TEMPLATE.md
├── format_urls.py
├── workflows
│ ├── gh-pages.yml
│ ├── link-check-config.json
│ ├── link-check.yml
│ ├── new-site.yml
│ └── test.yml
└── yamllint.yml
├── .gitignore
├── .pre-commit-config.yaml
├── license
├── readme.md
├── site
├── .env.example
├── .prettierrc.yml
├── eslint.config.js
├── package.json
├── playwright.config.ts
├── src
│ ├── app.css
│ ├── app.d.ts
│ ├── app.html
│ ├── lib
│ │ ├── ContributorList.svelte
│ │ ├── Filters.svelte
│ │ ├── Person.svelte
│ │ ├── Screenshot.svelte
│ │ ├── SiteDetails.svelte
│ │ ├── SiteList.svelte
│ │ ├── SitePreview.svelte
│ │ ├── index.ts
│ │ └── stores.ts
│ ├── routes
│ │ ├── +error.svelte
│ │ ├── +layout.svelte
│ │ ├── +layout.ts
│ │ ├── +page.server.ts
│ │ ├── +page.svelte
│ │ └── [slug]
│ │ │ ├── +page.server.ts
│ │ │ └── +page.svelte
│ ├── sites.yml
│ └── tasks
│ │ ├── fetch-github-metadata.ts
│ │ ├── index.ts
│ │ ├── screenshots.ts
│ │ └── update-readme.ts
├── static
│ ├── awesome-sveltekit-banner.svg
│ ├── favicon.svg
│ └── screenshots
│ │ ├── asm-editor.avif
│ │ ├── asm-editor.small.avif
│ │ ├── auth-starter-app.avif
│ │ ├── auth-starter-app.small.avif
│ │ ├── barnsworthburning.avif
│ │ ├── barnsworthburning.small.avif
│ │ ├── beatbump.avif
│ │ ├── beatbump.small.avif
│ │ ├── chat-ui.avif
│ │ ├── chat-ui.small.avif
│ │ ├── concertmash.avif
│ │ ├── concertmash.small.avif
│ │ ├── connorrothschild.com.avif
│ │ ├── connorrothschild.com.small.avif
│ │ ├── coolify.avif
│ │ ├── coolify.small.avif
│ │ ├── cryptgeon.avif
│ │ ├── cryptgeon.small.avif
│ │ ├── cybernetic.dev.avif
│ │ ├── cybernetic.dev.small.avif
│ │ ├── digital-criticism.avif
│ │ ├── digital-criticism.small.avif
│ │ ├── dotfyle.avif
│ │ ├── dotfyle.small.avif
│ │ ├── editable-website.avif
│ │ ├── editable-website.small.avif
│ │ ├── elementari.avif
│ │ ├── elementari.small.avif
│ │ ├── evidence.avif
│ │ ├── evidence.small.avif
│ │ ├── files.avif
│ │ ├── files.small.avif
│ │ ├── fireship.avif
│ │ ├── fireship.small.avif
│ │ ├── flayks.avif
│ │ ├── flayks.small.avif
│ │ ├── flowbite.avif
│ │ ├── flowbite.small.avif
│ │ ├── fluent-svelte.avif
│ │ ├── fluent-svelte.small.avif
│ │ ├── gitpod.avif
│ │ ├── gitpod.small.avif
│ │ ├── graphcms-starter-blog.avif
│ │ ├── graphcms-starter-blog.small.avif
│ │ ├── guess-the-year.avif
│ │ ├── guess-the-year.small.avif
│ │ ├── hexapipes.avif
│ │ ├── hexapipes.small.avif
│ │ ├── houdini-graphql.avif
│ │ ├── houdini-graphql.small.avif
│ │ ├── houses-of-world.avif
│ │ ├── houses-of-world.small.avif
│ │ ├── immich.avif
│ │ ├── immich.small.avif
│ │ ├── inlang.avif
│ │ ├── inlang.small.avif
│ │ ├── intl-explorer.avif
│ │ ├── intl-explorer.small.avif
│ │ ├── joy-of-code.avif
│ │ ├── joy-of-code.small.avif
│ │ ├── jschallenger.avif
│ │ ├── jschallenger.small.avif
│ │ ├── layer-cake.avif
│ │ ├── layer-cake.small.avif
│ │ ├── learn.svelte.dev.avif
│ │ ├── learn.svelte.dev.small.avif
│ │ ├── level-up-tutorials.avif
│ │ ├── level-up-tutorials.small.avif
│ │ ├── macos-themed-portfolio.avif
│ │ ├── macos-themed-portfolio.small.avif
│ │ ├── macos-web.avif
│ │ ├── macos-web.small.avif
│ │ ├── markushatvan.com.avif
│ │ ├── markushatvan.com.small.avif
│ │ ├── matt-fantinel.avif
│ │ ├── matt-fantinel.small.avif
│ │ ├── mermaid-live-editor.avif
│ │ ├── mermaid-live-editor.small.avif
│ │ ├── modern-fluid-typography-editor.avif
│ │ ├── modern-fluid-typography-editor.small.avif
│ │ ├── multi-monitor-calculator.avif
│ │ ├── multi-monitor-calculator.small.avif
│ │ ├── neovim-craft.avif
│ │ ├── neovim-craft.small.avif
│ │ ├── official-sveltekit-docs.avif
│ │ ├── official-sveltekit-docs.small.avif
│ │ ├── ollama-web-ui.avif
│ │ ├── ollama-web-ui.small.avif
│ │ ├── pancake.avif
│ │ ├── pancake.small.avif
│ │ ├── paper-trader-game.avif
│ │ ├── paper-trader-game.small.avif
│ │ ├── pixel-art-together.avif
│ │ ├── pixel-art-together.small.avif
│ │ ├── puruvj.dev.avif
│ │ ├── puruvj.dev.small.avif
│ │ ├── qwer.avif
│ │ ├── qwer.small.avif
│ │ ├── scientific-diagrams.avif
│ │ ├── scientific-diagrams.small.avif
│ │ ├── shadcn-svelte.avif
│ │ ├── shadcn-svelte.small.avif
│ │ ├── significa.co.avif
│ │ ├── significa.co.small.avif
│ │ ├── sk-incognito.avif
│ │ ├── sk-incognito.small.avif
│ │ ├── skeleton.avif
│ │ ├── skeleton.small.avif
│ │ ├── stemroller.avif
│ │ ├── stemroller.small.avif
│ │ ├── svead.avif
│ │ ├── svead.small.avif
│ │ ├── svelte-command-palette.avif
│ │ ├── svelte-command-palette.small.avif
│ │ ├── svelte-commerce.avif
│ │ ├── svelte-commerce.small.avif
│ │ ├── svelte-cubed.avif
│ │ ├── svelte-cubed.small.avif
│ │ ├── svelte-french-toast.avif
│ │ ├── svelte-french-toast.small.avif
│ │ ├── svelte-headless-ui.avif
│ │ ├── svelte-headless-ui.small.avif
│ │ ├── svelte-intl-precompile.avif
│ │ ├── svelte-intl-precompile.small.avif
│ │ ├── svelte-legos.avif
│ │ ├── svelte-legos.small.avif
│ │ ├── svelte-material-ui.avif
│ │ ├── svelte-material-ui.small.avif
│ │ ├── svelte-multiselect.avif
│ │ ├── svelte-multiselect.small.avif
│ │ ├── svelte-put.avif
│ │ ├── svelte-put.small.avif
│ │ ├── svelte-realworld.avif
│ │ ├── svelte-realworld.small.avif
│ │ ├── svelte-society.avif
│ │ ├── svelte-society.small.avif
│ │ ├── svelte-summit-fall-2021.avif
│ │ ├── svelte-summit-fall-2021.small.avif
│ │ ├── svelte.dev.avif
│ │ ├── svelte.dev.small.avif
│ │ ├── sveltekit-embed.avif
│ │ ├── sveltekit-embed.small.avif
│ │ ├── sveltekit-experiments.avif
│ │ ├── sveltekit-experiments.small.avif
│ │ ├── sveltekit-mdsvex-blog.avif
│ │ ├── sveltekit-mdsvex-blog.small.avif
│ │ ├── sveltekit-on-edge.avif
│ │ ├── sveltekit-on-edge.small.avif
│ │ ├── sveltekit-static-blog-starter.avif
│ │ ├── sveltekit-static-blog-starter.small.avif
│ │ ├── sveltekit-typescript-showcase.avif
│ │ ├── sveltekit-typescript-showcase.small.avif
│ │ ├── sveltelab.avif
│ │ ├── sveltelab.small.avif
│ │ ├── sveltestrap.avif
│ │ ├── sveltestrap.small.avif
│ │ ├── svelvet.avif
│ │ ├── svelvet.small.avif
│ │ ├── swyxkit.avif
│ │ ├── swyxkit.small.avif
│ │ ├── team-health-check.avif
│ │ ├── team-health-check.small.avif
│ │ ├── the-pudding.avif
│ │ ├── the-pudding.small.avif
│ │ ├── threlte.avif
│ │ ├── threlte.small.avif
│ │ ├── trpc-sveltekit.avif
│ │ ├── trpc-sveltekit.small.avif
│ │ ├── urara.avif
│ │ ├── urara.small.avif
│ │ ├── vert.avif
│ │ ├── vert.small.avif
│ │ ├── watch-this.avif
│ │ ├── watch-this.small.avif
│ │ ├── windmill.avif
│ │ └── windmill.small.avif
├── svelte.config.js
├── tests
│ └── site.test.ts
├── tsconfig.json
└── vite.config.ts
├── sites.yml
└── tools.yml
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | New sites should be added to sites.yml, not the auto-generated readme. They should also be
2 |
3 | - open source: While a site with private code can give design and feature ideas, there's little educational value if you can't inspect how it was made.
4 | - novel: Not just another blog or todo app. Ideally, some application or technology not already covered in this collection.
5 | - popular: At least 50 stars on GitHub or reasonable expectation to reach that number soon.
6 |
7 | If you're unsure if a site belongs here, [open a discussion](https://github.com/janosh/awesome-sveltekit/discussions).
8 |
9 | If your new site includes a tool/language/package in its `uses: [...]` field that's
10 | not already used by another site, make sure you add a link to that tool in tools.yml.
11 |
--------------------------------------------------------------------------------
/.github/format_urls.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import re
3 |
4 |
5 | def main() -> int:
6 | for filename in ("sites.yml", "readme.md"):
7 | with open(filename) as file:
8 | text = file.read()
9 |
10 | text = text.replace("www.", "")
11 |
12 | # remove trailing slash from URLs
13 | if filename == "readme.md":
14 | # target markdown inline links [link](url/)
15 | text = re.sub(r"/\)", ")", text)
16 |
17 | # target URLs with a slash followed by white space, question mark (start of
18 | # query string) or end of line
19 | text = re.sub(
20 | "(.*https?://.+)/(\\s|\\?|$)", r"\g<1>\g<2>", text, flags=re.MULTILINE
21 | )
22 |
23 | with open(filename, "w") as file:
24 | file.write(text)
25 |
26 | return 0
27 |
28 |
29 | if __name__ == "__main__":
30 | raise SystemExit(main())
31 |
--------------------------------------------------------------------------------
/.github/workflows/gh-pages.yml:
--------------------------------------------------------------------------------
1 | name: GitHub Pages
2 |
3 | on:
4 | pull_request:
5 | branches: [main]
6 | push:
7 | branches: [main]
8 | workflow_dispatch:
9 |
10 | jobs:
11 | build:
12 | uses: janosh/workflows/.github/workflows/nodejs-gh-pages.yml@main
13 | with:
14 | working-directory: site
15 |
--------------------------------------------------------------------------------
/.github/workflows/link-check-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "aliveStatusCodes": [0, 200, 403, 429, 500, 503]
3 | }
4 |
--------------------------------------------------------------------------------
/.github/workflows/link-check.yml:
--------------------------------------------------------------------------------
1 | name: Link check
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: '0 0 1 * *' # monthly
7 | push:
8 | branches: [main]
9 | pull_request:
10 | branches: [main]
11 |
12 | jobs:
13 | link-check:
14 | runs-on: ubuntu-latest
15 | steps:
16 | - name: Check out repo
17 | uses: actions/checkout@v4
18 |
19 | - name: Discover broken links
20 | uses: lycheeverse/lychee-action@v2
21 | with:
22 | args: --exclude '%7B' --exclude-path ./site/src/sites.yml -- ./**/*.{md,svelte,ts,yml}
23 | env:
24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25 |
--------------------------------------------------------------------------------
/.github/workflows/new-site.yml:
--------------------------------------------------------------------------------
1 | name: Update readme + site screenshots on changed sites.yml
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: '0 0 1 */3 *' # https://crontab.guru/every-quarter
7 |
8 | jobs:
9 | new-site:
10 | runs-on: ubuntu-latest
11 | if: github.repository_owner == 'janosh'
12 | steps:
13 | - name: Check out repo
14 | uses: actions/checkout@v4
15 | with:
16 | ref: ${{ github.head_ref }}
17 |
18 | - name: Set up node
19 | uses: actions/setup-node@v4
20 | with:
21 | node-version: 19
22 | cache: npm
23 | cache-dependency-path: site/package.json
24 |
25 | - name: Install dependencies
26 | run: npm install puppeteer js-yaml imagemin imagemin-webp
27 |
28 | - name: Update existing site screenshots and repo contributors on scheduled runs
29 | if: github.event_name == 'schedule'
30 | run: ACTION=update-existing cd site && npm run dev
31 |
32 | - name: Add screenshots for new sites and update readme
33 | if: github.event_name != 'schedule'
34 | run: cd site && npm run dev
35 |
36 | - name: Push changes if any
37 | run: |
38 | if git diff --quiet site/static/screenshots readme.md; then
39 | echo "No changes to commit"
40 | exit 0
41 | fi
42 | git config user.name 'Janosh Riebesell'
43 | git config user.email janosh.riebesell@gmail.com
44 | git add readme.md site/static/screenshots
45 | git commit -m 'update readme + screenshots'
46 | git push
47 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Tests
2 |
3 | on:
4 | pull_request:
5 | branches: [main]
6 | push:
7 | branches: [main]
8 | workflow_dispatch:
9 |
10 | jobs:
11 | tests:
12 | uses: janosh/workflows/.github/workflows/npm-test.yml@main
13 | with:
14 | working-directory: site
15 | test-cmd: ''
16 | install-e2e: npx playwright install chromium
17 | e2e-test-cmd: npx playwright test tests/*.ts
18 |
--------------------------------------------------------------------------------
/.github/yamllint.yml:
--------------------------------------------------------------------------------
1 | extends: default
2 |
3 | rules:
4 | line-length:
5 | max: 120
6 | document-start: disable
7 | truthy:
8 | check-keys: false
9 | comments:
10 | min-spaces-from-content: 1
11 | braces:
12 | max-spaces-inside: 1
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | node_modules
3 |
4 | # production build
5 | .svelte-kit
6 | build
7 |
8 | # secrets
9 | .env
10 |
11 | # tests
12 | test-results
13 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | ci:
2 | autoupdate_schedule: quarterly
3 | skip: [eslint]
4 |
5 | default_stages: [pre-commit]
6 |
7 | default_install_hook_types: [pre-commit, commit-msg]
8 |
9 | repos:
10 | - repo: https://github.com/pre-commit/pre-commit-hooks
11 | rev: v5.0.0
12 | hooks:
13 | - id: check-case-conflict
14 | - id: check-symlinks
15 | - id: check-yaml
16 | - id: destroyed-symlinks
17 | - id: end-of-file-fixer
18 | - id: mixed-line-ending
19 | - id: trailing-whitespace
20 | - id: file-contents-sorter
21 | files: ^tools\.yml$
22 |
23 | - repo: https://github.com/pre-commit/mirrors-prettier
24 | rev: v4.0.0-alpha.8
25 | hooks:
26 | - id: prettier
27 | args: [--config, site/.prettierrc.yml, --write] # edit files in-place
28 | additional_dependencies:
29 | - prettier
30 | - prettier-plugin-svelte
31 | - svelte
32 |
33 | - repo: https://github.com/adrienverge/yamllint
34 | rev: v1.37.1
35 | hooks:
36 | - id: yamllint
37 | args: [--config-file, .github/yamllint.yml]
38 |
39 | - repo: https://github.com/igorshubovych/markdownlint-cli
40 | rev: v0.44.0
41 | hooks:
42 | - id: markdownlint
43 | # MD013: line too long
44 | # MD033: no inline HTML
45 | # MD041: first line in a file should be a top-level heading
46 | args: [--disable, MD013, MD033, MD041, '--']
47 |
48 | - repo: https://github.com/codespell-project/codespell
49 | rev: v2.4.1
50 | hooks:
51 | - id: codespell
52 | exclude: ^site/src/sites.yml$
53 | args: [--ignore-words-list, 'ons,linz', --check-filenames]
54 | stages: [pre-commit, commit-msg]
55 |
56 | - repo: https://github.com/crate-ci/typos
57 | rev: v1.32.0
58 | hooks:
59 | - id: typos
60 | types: [text]
61 | args: []
62 | exclude: ^site/src/sites.yml|.pre-commit-config.yaml$
63 |
64 | - repo: https://github.com/pre-commit/mirrors-eslint
65 | rev: v9.27.0
66 | hooks:
67 | - id: eslint
68 | types: [file]
69 | args: [--fix, --config, site/eslint.config.js]
70 | files: \.(js|ts|svelte)$
71 | additional_dependencies:
72 | - 'typescript-eslint'
73 | - eslint
74 | - eslint-plugin-svelte
75 | - globals
76 | - svelte
77 | - typescript
78 | - '@stylistic/eslint-plugin'
79 |
80 | - repo: local
81 | hooks:
82 | - id: avif-screenshots
83 | name: Screenshots must use AVIF format
84 | entry: screenshot filenames must end in .avif
85 | language: fail
86 | files: '^site/static/screenshots/.*(? [[link](url)]'
90 | entry: '\]\]\('
91 | language: pygrep
92 | types: [markdown]
93 |
94 | - id: no-http
95 | name: URLs must use HTTPS
96 | entry: 'http:'
97 | language: pygrep
98 | types_or: [markdown, yaml]
99 | exclude: .pre-commit-config.yaml
100 |
101 | - id: no-repeated-whitespace
102 | name: No repeated spaces
103 | entry: '\S+\s{2,}'
104 | language: pygrep
105 | types: [text]
106 | exclude_types: [javascript, ts]
107 |
108 | - id: format-urls
109 | name: Format URLs
110 | entry: .github/format_urls.py
111 | language: python
112 | files: ^(sites.yml|readme.md|.github/format_urls.py)$
113 |
--------------------------------------------------------------------------------
/license:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Janosh Riebesell
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | The software is provided "as is", without warranty of any kind, express or
16 | implied, including but not limited to the warranties of merchantability,
17 | fitness for a particular purpose and noninfringement. In no event shall the
18 | authors or copyright holders be liable for any claim, damages or other
19 | liability, whether in an action of contract, tort or otherwise, arising from,
20 | out of or in connection with the software or the use or other dealings in the
21 | software.
22 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | [](https://github.com/sindresorhus/awesome)
8 | [](https://github.com/janosh/awesome-sveltekit/pulls)
9 | [](https://github.com/janosh/awesome-sveltekit/actions/workflows/test.yml)
10 | [](https://github.com/janosh/awesome-sveltekit/actions/workflows/gh-pages.yml)
11 | [](https://results.pre-commit.ci/latest/github/janosh/awesome-sveltekit/main)
12 |
13 |
14 |
15 |
16 |
17 | Awesome examples of SvelteKit in the wild. Visit **[janosh.github.io/awesome-sveltekit](https://janosh.github.io/awesome-sveltekit)** to view this list with screenshots plus search and sort functionality (e.g. based on GH stars).
18 |
19 | ## Sites
20 |
21 | 1. **[Ollama Web UI](https://ollamahub.com)**
22 | [[code](https://github.com/ollama-webui/ollama-webui)]
23 |
24 |
25 |
26 |
27 | ChatGPT-Style Web UI Client for Ollama 🦙.
28 |
29 | uses: [highlight.js], [MarkedJS], [KaTeX], [TypeScript], [Tailwind]
30 |
31 | 1. **[Svelte.dev](https://svelte.dev)**
32 | [[code](https://github.com/sveltejs/svelte/tree/master/sites/svelte.dev)]
33 |
34 |
35 |
36 |
37 | Cybernetically enhanced web apps.
38 |
39 | uses: [CodeMirror], [Mapbox], [Docker]
40 |
41 | 1. **[Immich](https://immich.app)**
42 | [[code](https://github.com/immich-app/immich)]
43 |
44 |
45 |
46 |
47 | Self-hosted photo and video backup solution directly from your mobile phone.
48 |
49 | uses: [NestJS], [TypeScript], [Tailwind], [Flutter], [Python]
50 |
51 | 1. **[Coolify](https://coolify.io)**
52 | [[code](https://github.com/coollabsio/coolify)]
53 |
54 |
55 |
56 |
57 | An open-source & self-hostable Heroku / Netlify alternative.
58 |
59 | uses: [PNPM], [TypeScript], [Tailwind], [sveltekit-i18n], [PostCSS], [Husky]
60 |
61 | 1. **[Official SvelteKit docs](https://kit.svelte.dev)**
62 | [[code](https://github.com/sveltejs/kit/tree/main/documentation/docs)]
63 |
64 |
65 |
66 |
67 | The fastest way to build Svelte apps.
68 |
69 | uses: [Netlify], [PNPM]
70 |
71 | 1. **[Gitpod](https://gitpod.io)**
72 | [[code](https://github.com/gitpod-io/gitpod)]
73 |
74 |
75 |
76 |
77 | Gitpod streamlines developer workflows by providing prebuilt, collaborative development environments in your browser - powered by VS Code.
78 |
79 | uses: [MDsveX], [Tailwind], [Netlify]
80 |
81 | 1. **[Windmill](https://windmill.dev)**
82 | [[code](https://github.com/windmill-labs/windmill/blob/-/frontend)]
83 |
84 |
85 |
86 |
87 | An OSS developer platform to build multi-step automations and internal apps from minimal Python and Typescript scripts.
88 |
89 | uses: [TypeScript], [Tailwind], [cssnano], [Cypress], [PostCSS], [svelte-highlight], [svelte-markdown]
90 |
91 | 1. **[Chat UI](https://huggingface.co/chat)**
92 | [[code](https://github.com/huggingface/chat-ui)]
93 |
94 |
95 |
96 |
97 | Powers the HuggingChat app. Making the community's best AI chat models available to everyone.
98 |
99 | uses: [Huggingface Inference], [Huggingface Hub], [Tailwind]
100 |
101 | 1. **[shadcn-svelte](https://shadcn-svelte.com)**
102 | [[code](https://github.com/huntabyte/shadcn-svelte/tree/main/sites/docs)]
103 |
104 |
105 |
106 |
107 | shadcn/ui, but for Svelte.
108 |
109 | uses: [TypeScript], [Vercel], [Tailwind], [PNPM], [Changesets], [vitest], [Prism], [MarkedJS]
110 |
111 | 1. **[Skeleton](https://skeleton.dev)**
112 | [[code](https://github.com/Brain-Bones/skeleton)]
113 |
114 |
115 |
116 |
117 | A fully featured web UI toolkit for Svelte + Tailwind. Supports SvelteKit, Vite, and Astro.
118 |
119 | uses: [Vitest], [PostCSS], [highlight.js], [Tailwind], [Typescript], [jsdom]
120 |
121 | 1. **[evidence](https://evidence.dev)**
122 | [[code](https://github.com/evidence-dev/evidence/blob/-/sites/example-project)]
123 |
124 |
125 |
126 |
127 | Evidence enables analysts to deliver a polished business intelligence system using SQL and markdown.
128 |
129 | uses: [PNPM], [Changesets], [echarts], [uvu]
130 |
131 | 1. **[mermaid-live-editor](https://mermaid.live)**
132 | [[code](https://github.com/mermaid-js/mermaid-live-editor)]
133 |
134 |
135 |
136 |
137 | Edit, live preview and share mermaid charts and diagrams.
138 |
139 | uses: [TypeScript], [Docker], [Tailwind], [PostCSS], [Cypress], [Husky]
140 |
141 | 1. **[Fireship](https://fireship.io)**
142 | [[code](https://github.com/fireship-io/fireship.io)]
143 |
144 |
145 |
146 |
147 | The Fireship PRO course platform frontend built with Svelte, Tailwind CSS, Hugo (for static content management), Firebase for Auth and DB, Flamethrower for routing.
148 |
149 | uses: [Tailwind], [Hugo], [Firebase], [Flamethrower], [Sass], [PostCSS], [Algolia]
150 |
151 | 1. **[Svelte Material UI](https://sveltematerialui.com)**
152 | [[code](https://github.com/hperrin/svelte-material-ui/blob/-/packages/site)]
153 |
154 |
155 |
156 |
157 | Svelte Material UI Components.
158 |
159 | uses: [MDsveX], [TypeScript], [highlight.js], [remark], [Sass]
160 |
161 | 1. **[VERT](https://vert.sh)**
162 | [[code](https://github.com/VERT-sh/VERT)]
163 |
164 |
165 |
166 |
167 | A file converter that converts files client-side while being completely ad-free.
168 |
169 | uses: [TypeScript], [Tailwind], [Coolify], [WASM], [FFmpeg], [libvips], [Plausible]
170 |
171 | 1. **[Threlte](https://threlte.xyz)**
172 | [[code](https://github.com/threlte/threlte/blob/-/apps/docs)]
173 |
174 |
175 |
176 |
177 | Threlte is a component library for Svelte to build and render three.js scenes declaratively and state-driven in Svelte apps.
178 |
179 | uses: [TypeScript], [Three.js], [Tailwind], [PostCSS], [Algolia], [Iconify]
180 |
181 | 1. **[StemRoller](https://stemroller.com)**
182 | [[code](https://github.com/stemrollerapp/stemroller)]
183 |
184 |
185 |
186 |
187 | Isolate vocals, drums, bass, and other instrumental stems from any song
188 |
189 | uses: [Electron], [Tailwind], [Lodash], [PostCSS], [ytdl-core]
190 |
191 | 1. **[Flowbite](https://flowbite-svelte.com)**
192 | [[code](https://github.com/themesberg/flowbite-svelte)]
193 |
194 |
195 |
196 |
197 | Official Svelte components built for Flowbite and Tailwind CSS. All interactivity handled by Svelte.
198 |
199 | uses: [PNPM], [TypeScript], [Tailwind], [MDsveX], [Prism], [PostCSS], [Playwright]
200 |
201 | 1. **[macos-web](https://macos-web.app)**
202 | [[code](https://github.com/PuruVJ/macos-web)]
203 |
204 |
205 |
206 |
207 | Replicate some of the macOS desktop experience on the web.
208 |
209 | uses: [TypeScript], [Vercel], [SCSS], [PNPM], [Iconify]
210 |
211 | 1. **[svelte-realworld](https://github.com/gothinkster/realworld)**
212 | [[code](https://github.com/sveltejs/realworld)]
213 |
214 |
215 |
216 |
217 | SvelteKit implementation of the RealWorld app.
218 |
219 | uses: [Netlify], [MarkedJS]
220 |
221 | 1. **[Svelte Headless UI](https://svelte-headlessui.goss.io)**
222 | [[code](https://github.com/rgossiaux/svelte-headlessui)]
223 |
224 |
225 |
226 |
227 | Unofficial Svelte port of Headless UI components.
228 |
229 | uses: [MDsveX], [TypeScript], [PostCSS], [Tailwind], [cssnano], [Jest], [rehype]
230 |
231 | 1. **[Svelte Commerce](https://demo.litekart.in)**
232 | [[code](https://github.com/itswadesh/svelte-commerce)]
233 |
234 |
235 |
236 |
237 | Headless, Authentication, Cart & Checkout, TailwindCSS, Server Rendered, Proxy + API Integrated, Animations, Stores, Lazy Loading, Loading Indicators, Carousel, Instant Search, Faceted Filters, Typescript, Open Source, MIT license. 1 command deploy to your own server, 1 click deploy to Netlify/Vercel.
238 |
239 | uses: [Vercel], [Tailwind], [TypeScript], [svelte-toasts], [PostCSS], [cssnano]
240 |
241 | 1. **[editable-website](https://editable.website)**
242 | [[code](https://github.com/michael/editable-website)]
243 |
244 |
245 |
246 |
247 | A SvelteKit template for building CMS-free editable websites.
248 |
249 | uses: [Tailwind], [ProseMirror], [AWS]
250 |
251 | 1. **[Layer Cake](https://layercake.graphics)**
252 | [[code](https://github.com/mhkeller/layercake)]
253 |
254 |
255 |
256 |
257 | Graphics framework for Svelte with colorful demo page. Can generate responsive graphics server-side that work without JavaScript.
258 |
259 | uses: [D3], [GitHub Pages], [JSDoc], [Mocha], [Underscore]
260 |
261 | 1. **[inlang](https://inlang.com)**
262 | [[code](https://github.com/inlang/monorepo)]
263 |
264 |
265 |
266 |
267 | Translate software products 2x faster.
268 |
269 | uses: [TypeScript], [Vercel], [IBM Carbon], [Tailwind], [Supabase]
270 |
271 | 1. **[Pancake](https://pancake-charts.surge.sh)**
272 | [[code](https://github.com/Rich-Harris/pancake)]
273 |
274 |
275 |
276 |
277 | Experimental Svelte charting library. Visualize data with a combination of HTML, SVG and canvas/WebGL. Designed with server-side rendering in mind, so graphs potentially work without JavaScript. Blog post .
278 |
279 | uses: [D3], [surge.sh], [TypeScript]
280 |
281 | 1. **[Sveltestrap](https://sveltestrap.js.org)**
282 | [[code](https://github.com/bestguy/sveltestrap)]
283 |
284 |
285 |
286 |
287 | Bootstrap 4 & 5 components for Svelte.
288 |
289 | uses: [Storybook], [Babel], [Testing Library], [Jest], [PostCSS], [Prism]
290 |
291 | 1. **[Svelte Cubed](https://svelte-cubed.vercel.app)**
292 | [[code](https://github.com/Rich-Harris/svelte-cubed)]
293 |
294 |
295 |
296 |
297 | Three.js component library for Svelte. Abandoned. Check out threlte instead.
298 |
299 | uses: [TypeScript], [PNPM], [Vercel], [MDsveX]
300 |
301 | 1. **[Beatbump](https://beatbump.io)**
302 | [[code](https://github.com/snuffyDev/beatbump)]
303 |
304 |
305 |
306 |
307 | Alternative frontend for YouTube Music.
308 |
309 | uses: [TypeScript], [PostCSS], [SCSS]
310 |
311 | 1. **[Cryptgeon](https://cryptgeon.org)**
312 | [[code](https://github.com/cupcakearmy/cryptgeon/blob/-/packages/frontend)]
313 |
314 |
315 |
316 |
317 | A secure, open source notes and file sharing service inspired by PrivNote written in Rust & Svelte.
318 |
319 | uses: [svelte-intl-precompile], [sanitize-html]
320 |
321 | 1. **[Dotfyle](https://dotfyle.com)**
322 | [[code](https://github.com/codicocodes/dotfyle)]
323 |
324 |
325 |
326 |
327 | Discover and share Neovim configurations and plugins.
328 |
329 | uses: [TypeScript], [PNPM], [tRPC-SvelteKit], [Prisma], [Tailwind], [Octokit]
330 |
331 | 1. **[svelte-french-toast](https://svelte-french-toast.com)**
332 | [[code](https://github.com/kbrgl/svelte-french-toast)]
333 |
334 |
335 |
336 |
337 | Svelte port of react-hot-toast, a lightweight, customizable toast notification library.
338 |
339 | uses: [TypeScript], [Prism], [Tailwind], [PostCSS], [PNPM]
340 |
341 | 1. **[Houdini GraphQL](https://houdinigraphql.com)**
342 | [[code](https://github.com/HoudiniGraphQL/houdini)]
343 |
344 |
345 |
346 |
347 | Documentation site for Houdini.
348 |
349 | uses: [PNPM], [MDsveX], [Husky], [highlight.js]
350 |
351 | 1. **[svelte-put](https://svelte-put.vnphanquang.com)**
352 | [[code](https://github.com/vnphanquang/svelte-put)]
353 |
354 |
355 |
356 |
357 | Useful svelte stuff to put in your projects.
358 |
359 | uses: [Changesets], [MDsveX], [PostCSS], [PNPM], [Turbo]
360 |
361 | 1. **[tRPC-SvelteKit](https://icflorescu.github.io/trpc-sveltekit)**
362 | [[code](https://github.com/icflorescu/trpc-sveltekit)]
363 |
364 |
365 |
366 |
367 | End-to-end type-safe APIs for your SvelteKit applications.
368 |
369 | uses: [TypeScript], [tRPC]
370 |
371 | 1. **[svelte-legos](https://svelte-legos.surge.sh)**
372 | [[code](https://github.com/ankurrsinghal/svelte-legos)]
373 |
374 |
375 |
376 |
377 | A library of Svelte actions.
378 |
379 | uses: [TypeScript], [vitest], [Tailwind], [PostCSS], [Prism]
380 |
381 | 1. **[sveltekit-typescript-showcase](https://github.com/ivanhofer/sveltekit-typescript-showcase)**
382 | [[code](https://github.com/ivanhofer/sveltekit-typescript-showcase)]
383 |
384 |
385 |
386 |
387 | This repository shows how Svelte and SvelteKit work together with TypeScript.
388 |
389 | uses: [TypeScript]
390 |
391 | 1. **[swyxkit](https://swyxkit.netlify.app)**
392 | [[code](https://github.com/sw-yx/swyxkit)]
393 |
394 |
395 |
396 |
397 | An opinionated blog starter for SvelteKit + Tailwind + Netlify. Refreshed for 2022!
398 |
399 | uses: [Tailwind], [Netlify]
400 |
401 | 1. **[Fluent Svelte](https://fluent-svelte.vercel.app)**
402 | [[code](https://github.com/Tropix126/fluent-svelte)]
403 |
404 |
405 |
406 |
407 | A faithful implementation of Microsoft's Fluent design system in Svelte.
408 |
409 | uses: [MDsveX], [SCSS], [TypeScript], [remark], [rehype], [PNPM], [PostCSS], [Prism]
410 |
411 | 1. **[Urara](https://urara-demo.netlify.app)**
412 | [[code](https://github.com/importantimport/urara)]
413 |
414 |
415 |
416 |
417 | Sweet & Powerful SvelteKit Blog Template.
418 |
419 | uses: [MDsveX], [PostCSS], [Tailwind], [DaisyUI], [TypeScript], [PNPM]
420 |
421 | 1. **[learn.svelte.dev](https://learn.svelte.dev)**
422 | [[code](https://github.com/sveltejs/learn.svelte.dev)]
423 |
424 |
425 |
426 |
427 | A soup-to-nuts interactive tutorial on how to build apps with Svelte.
428 |
429 | uses: [Vercel], [PNPM], [Prism], [MarkedJS], [CodeMirror]
430 |
431 | 1. **[QWER](https://svelte-qwer.vercel.app)**
432 | [[code](https://github.com/kwchang0831/svelte-QWER)]
433 |
434 |
435 |
436 |
437 | ✒︎ Simply Awesome Blog Starter built with SvelteKit and ❤
438 |
439 | uses: [UnoCSS], [TypeScript], [MarkedJS], [PNPM], [Vercel]
440 |
441 | 1. **[SvelteKit static blog starter](https://sveltekit-static-starter.netlify.app)**
442 | [[code](https://github.com/josh-collinsworth/sveltekit-blog-starter)]
443 |
444 |
445 |
446 |
447 | A pre-configured SvelteKit static blog starter, with Sass, Markdown, MDSvex, Rehype and background preloading.
448 |
449 | uses: [Netlify], [MDsveX], [Sass], [Husky]
450 |
451 | 1. **[Joy of Code](https://joyofcode.xyz)**
452 | [[code](https://github.com/mattcroat/joy-of-code)]
453 |
454 |
455 |
456 |
457 | 🌸 Joy of Code is a digital garden growing curious minds.
458 |
459 | uses: [GitHub API], [Monaco], [Playwright], [Google Analytics], [Supabase], [Vercel], [PNPM], [Sass], [TypeScript], [remark], [rehype]
460 |
461 | 1. **[Files](https://files.community)**
462 | [[code](https://github.com/files-community/website)]
463 |
464 |
465 |
466 |
467 | 3rd Party File Manager for Windows.
468 |
469 | uses: [PNPM], [TypeScript], [SCSS], [Vercel]
470 |
471 | 1. **[SvelteLab](https://sveltelab.dev)**
472 | [[code](https://github.com/sveltelab/sveltelab)]
473 |
474 |
475 |
476 |
477 | Supercharged REPL for Svelte (think StackBlitz specialized for Svelte)
478 |
479 | uses: [Playwright], [vitest], [Iconify], [MarkedJS], [TypeScript], [PNPM], [Pocketbase], [Vercel], [Tailwind]
480 |
481 | 1. **[Svelte Society](https://sveltesociety.dev)**
482 | [[code](https://github.com/svelte-society/sveltesociety.dev)]
483 |
484 |
485 |
486 |
487 | Global network of Svelte fans striving to promote Svelte and its ecosystem.
488 |
489 | uses: [TypeScript], [Gitpod]
490 |
491 | 1. **[Watch This](https://github.com/StephDietz/watch-this/issues/28)**
492 | [[code](https://github.com/StephDietz/watch-this)]
493 |
494 |
495 |
496 |
497 | Uses OpenAI GPT-3 API and streaming Vercel edge functions to generate cinema recommendations based on user input.
498 |
499 | uses: [TypeScript], [Vercel], [Tailwind]
500 |
501 | 1. **[Modern Fluid Typography Editor](https://modern-fluid-typography.vercel.app)**
502 | [[code](https://github.com/codeAdrian/modern-fluid-typography-editor)]
503 |
504 |
505 |
506 |
507 | Easily create and fine-tune fluid typography values with Modern CSS clamp()
.
508 |
509 | uses: [TypeScript], [PostCSS], [Chart.js], [cssnano]
510 |
511 | 1. **[neovim craft](https://neovimcraft.com)**
512 | [[code](https://github.com/neurosnap/neovimcraft)]
513 |
514 |
515 |
516 |
517 | Curated list of neovim plugins.
518 |
519 | uses: [TypeScript], [Husky]
520 |
521 | 1. **[Matt Fantinel](https://fantinel.dev)**
522 | [[code](https://github.com/matfantinel/matfantinel.github.io)]
523 |
524 |
525 |
526 |
527 | Personal website and blog of Matt Fantinel, web developer.
528 |
529 | uses: [MDsveX], [SCSS], [Iconoir], [Plausible]
530 |
531 | 1. **[Svelte MultiSelect](https://janosh.github.io/svelte-multiselect)**
532 | [[code](https://github.com/janosh/svelte-multiselect)]
533 |
534 |
535 |
536 |
537 | Keyboard-friendly, accessible and highly customizable multi-select component.
538 |
539 | uses: [Vitest], [Playwright], [Typescript], [PNPM], [pre-commit], [rehype], [jsdom], [GitHub Pages], [mdsvexamples]
540 |
541 | 1. **[Scientific Diagrams](https://janosh.github.io/diagrams)**
542 | [[code](https://github.com/janosh/diagrams)]
543 |
544 |
545 |
546 |
547 | 100+ MIT-licensed scientific diagrams created with CeTZ (Typst) and/or TikZ (LaTeX). Mostly about physics, chemistry, and machine learning.
548 |
549 | uses: [TypeScript], [svelte-multiselect], [pre-commit], [PNPM], [svelte-enhanced-img]
550 |
551 | 1. **[Svelte Intl Precompile](https://svelte-intl-precompile.com/en/docs/configuration)**
552 | [[code](https://github.com/cibernox/svelte-intl-precompile)]
553 |
554 |
555 |
556 |
557 | I18n library for Svelte that analyzes your keys at build time for maximum performance and minimal footprint. Built as a SvelteKit plugin so good to use as a reference if you want to build one yourself.
558 |
559 | uses: [JS-Yaml], [JSON5]
560 |
561 | 1. **[Significa.co](https://significa.co)**
562 | [[code](https://github.com/significa/significa.co)]
563 |
564 |
565 |
566 |
567 | Product Design and Development agency website, built with Sveltekit.
568 |
569 | uses: [TypeScript], [Vercel], [Tailwind], [AWS], [Dynamodb], [Notion], [Storyblock], [Matter.js], [Plausible]
570 |
571 | 1. **[SvelteKit on Edge](https://sveltekit-on-the-edge.vercel.app)**
572 | [[code](https://github.com/Rich-Harris/sveltekit-on-the-edge)]
573 |
574 |
575 |
576 |
577 | SvelteKit, running on the edge. In this case, Vercel's edge network. See https://twitter.com/leeerob/status/1517627769924034565 .
578 |
579 | uses: [PNPM], [Vercel]
580 |
581 | 1. **[SvelteKit Embed](https://sveltekit-embed.vercel.app)**
582 | [[code](https://github.com/spences10/sveltekit-embed)]
583 |
584 |
585 |
586 |
587 | SvelteKit embed components for YouTube, Vimeo, Twitter, Spotify, SoundCloud, StackBlitz, CodePen, AnchorFM, Simple Cast and more.
588 |
589 | uses: [TypeScript], [PNPM], [Vercel], [MDsveX], [Tailwind], [PostCSS], [Husky], [Playwright], [DaisyUI]
590 |
591 | 1. **[Pixel Art Together](https://pixelart.liveblocks.app)**
592 | [[code](https://github.com/liveblocks/pixel-art-together)]
593 |
594 |
595 |
596 |
597 | A multiplayer pixel art editor powered by Liveblocks.
598 |
599 | uses: [TypeScript], [Liveblocks], [Tailwind], [PostCSS], [panzoom]
600 |
601 | 1. **[Hexapipes](https://hexapipes.vercel.app)**
602 | [[code](https://github.com/gereleth/hexapipes)]
603 |
604 |
605 |
606 |
607 | Browser game where the goal is to correctly line up pipes placed on hexagonal puzzle pieces.
608 |
609 | uses: [Vercel]
610 |
611 | 1. **[svelte-command-palette](https://svelte-command-palette.vercel.app)**
612 | [[code](https://github.com/rohitpotato/svelte-command-palette)]
613 |
614 |
615 |
616 |
617 | Dead simple command palette with fuzzy search.
618 |
619 | uses: [TypeScript], [Playwright], [PostCSS], [Tailwind], [Release It], [Vercel]
620 |
621 | 1. **[Auth starter app](https://passlock.dev)**
622 | [[code](https://github.com/passlock-dev/passlock/tree/master/packages/create-sveltekit/docs)]
623 |
624 |
625 |
626 |
627 | SvelteKit template featuring Passkeys, Social Sign in and more.
628 |
629 | uses: [passlock], [tailwind], [superforms], [lucia]
630 |
631 | 1. **[ASM Editor](https://asm-editor.specy.app)**
632 | [[code](https://github.com/Specy/asm-editor)]
633 |
634 |
635 |
636 |
637 | A modern webapp to write, run and learn M68K assembly code.
638 |
639 | uses: [TypeScript], [Sass], [Monaco], [WASM]
640 |
641 | 1. **[sveltekit-mdsvex-blog](https://sveltekit-mdsvex-blog.netlify.app)**
642 | [[code](https://github.com/mvasigh/sveltekit-mdsvex-blog)]
643 |
644 |
645 |
646 |
647 | A minimalist blog template built with SvelteKit and MDsveX.
648 |
649 | uses: [TypeScript], [MDsveX], [Rehype], [Remark], [PNPM], [Vitest], [Playwright]
650 |
651 | 1. **[Elementari](https://janosh.github.io/elementari)**
652 | [[code](https://github.com/janosh/elementari)]
653 |
654 |
655 |
656 |
657 | Interactive visualizations for materials science: periodic tables, 3d crystal structures (Molecules coming soon), Bohr atoms, nuclei, heatmaps, scatter plots.
658 |
659 | uses: [TypeScript], [pre-commit], [D3], [svelte-multiselect], [Vitest], [Playwright], [PNPM], [jsdom], [GitHub Pages]
660 |
661 | 1. **[Intl Explorer](https://intl-explorer.com)**
662 | [[code](https://github.com/jesperorb/intl-explorer)]
663 |
664 |
665 |
666 |
667 | A tool for experimenting and trying out the ECMAScript Internationalization API.
668 |
669 | uses: [TypeScript], [PNPM], [Playwright], [Vercel], [svelte-highlight], [Husky], [commitlint]
670 |
671 | 1. **[Paper Trader Game](https://paper-trader.davjhan.com)**
672 | [[code](https://github.com/davjhan/paper-trader-game)]
673 |
674 |
675 |
676 |
677 | A simple web game where you are given 45 seconds and $100 to make as much money as you can trading a fake stock.
678 |
679 | uses: [Tailwind], [Netlify], [Chart.js], [Plausible]
680 |
681 | 1. **[SvelteKit Experiments](https://sveltekit-demo-psi.vercel.app)**
682 | [[code](https://github.com/tsukhu/sveltekit-demo)]
683 |
684 |
685 |
686 |
687 | A set of example apps built with SvelteKit and deployed on Vercel. As an ongoing project, this will continue to be enhanced with more examples to showcase the power of SvelteKit.
688 |
689 | uses: [Tailwind], [Vercel], [GraphQL], [Firebase], [Typescript]
690 |
691 | 1. **[SK Incognito](https://sk-incognito.vercel.app)**
692 | [[code](https://github.com/GrygrFlzr/kit-docs)]
693 |
694 |
695 |
696 |
697 | The unofficial SvelteKit docs.
698 |
699 | uses: [MDsveX], [Tailwind], [PNPM]
700 |
701 | 1. **[Svead](https://svead.pages.dev)**
702 | [[code](https://github.com/spences10/svead)]
703 |
704 |
705 |
706 |
707 | Svead 🍺, a component that allows you to set head meta information, canonical, title, Twitter and Facebook Open Graph tags, and schema.org data.
708 |
709 | uses: [TypeScript], [PNPM], [Cloudflare Pages], [MDsveX], [Tailwind], [PostCSS], [DaisyUI]
710 |
711 | 1. **[markushatvan.com](https://markushatvan.com)**
712 |
713 | Blog posts with code snippets, contact form with Svelte Forms Lib, RSS and sitemap.
714 |
715 | uses: [Tailwind], [MDsveX], [Svelte Forms Lib]
716 |
717 | 1. **[connorrothschild.com](https://connorrothschild.com)**
718 | [[code](https://github.com/connorrothschild/v4)]
719 |
720 |
721 |
722 |
723 | Creative, content-based portfolio site of Connor Rothschild.
724 |
725 | uses: [MDsveX], [GSAP], [Netlify]
726 |
727 | 1. **[The Pudding](https://pudding.cool)**
728 | [[code](https://github.com/the-pudding/website)]
729 |
730 |
731 |
732 |
733 | Digital publication with emphasis on data viz.
734 |
735 | uses: [D3], [PostCSS], [Lodash], [PNPM]
736 |
737 | 1. **[macOS-Themed Portfolio](https://macosportfolio.netlify.app)**
738 | [[code](https://github.com/ansxuman/macOS-Themed-Portfolio)]
739 |
740 |
741 |
742 |
743 | An interactive portfolio website inspired by the macOS interface.
744 |
745 | uses: [TypeScript], [Tailwind], [PM2], [Cloudflare], [Netlify], [Nginx]
746 |
747 | 1. **[Guess The Year](https://guess-the-year.davjhan.com)**
748 | [[code](https://github.com/davjhan/guess-the-year-game)]
749 |
750 |
751 |
752 |
753 | Round-based browser game where you guess the year in which famous event happened. Answers range between 1900-2021. You start with 100 points. The more your guess is off, the more points you loose.
754 |
755 | uses: [Tailwind], [Netlify]
756 |
757 | 1. **[Multi-Monitor Calculator](https://multimonitorcalculator.com)**
758 | [[code](https://github.com/KevinVandy/multi-monitor_calculator)]
759 |
760 |
761 |
762 |
763 | A tool for planning your multi-monitor setup.
764 |
765 | uses: [TypeScript], [SMUI], [Sass]
766 |
767 | 1. **[barnsworthburning](https://barnsworthburning.net)**
768 | [[code](https://github.com/Aias/barnsworthburning)]
769 |
770 |
771 |
772 |
773 | An experimental commonplace book / digital garden with a richly interconnected set of links, notes, and ideas.
774 |
775 | uses: [TypeScript], [Airtable], [Radix], [MarkedJS], [Cloudflare Pages]
776 |
777 | 1. **[puruvj.dev](https://puruvj.dev)**
778 | [[code](https://github.com/puruvj/puruvjdev3)]
779 |
780 |
781 |
782 |
783 | Puru Vijay's blog site.
784 |
785 | uses: [Vercel], [TypeScript], [SCSS], [Cloudinary]
786 |
787 | 1. **[ConcertMash](https://concertmash.com)**
788 | [[code](https://github.com/mcmxcdev/ConcertMash)]
789 |
790 |
791 |
792 |
793 | Easily generate a playlist for your upcoming concerts based on selected artists!
794 |
795 | uses: [TypeScript], [Tailwind], [Spotify Web API], [Filepond], [PNPM], [Netlify]
796 |
797 | 1. **[GraphCMS Starter Blog](https://scottspence.com/2021/05/06/graphcms-svelte-starter)**
798 | [[code](https://github.com/spences10/sveltekit-starter-blog)]
799 |
800 |
801 |
802 |
803 | This blog starter shows how to use SvelteKit with GraphCMS.
804 |
805 | uses: [Vercel], [Tailwind], [SCSS], [GraphCMS]
806 |
807 | 1. **[Svelte Summit Fall 2021](https://sveltesummit.com)**
808 | [[code](https://github.com/svelte-society/svelte-summit)]
809 |
810 |
811 |
812 |
813 | The 4th virtual conference about Svelte
814 |
815 | uses: [Elder.js], [PostCSS], [Cloudflare]
816 |
817 | 1. **[Team Health Check](https://team-health-check-coral.vercel.app)**
818 | [[code](https://github.com/codehub-kirans/team-health-check)]
819 |
820 |
821 |
822 |
823 | A tool to visualize historical agile scrum team performance based on behavior anchors.
824 |
825 | uses: [PicoCSS], [Pocketbase], [Vercel]
826 |
827 | 1. **[digital criticism](https://critique-digitale.ch)**
828 | [[code](https://github.com/critique-digitale/critique-digitale.ch)]
829 |
830 |
831 |
832 |
833 | Scholarly conference in the digital humanities.
834 |
835 | uses: [MDsveX], [MVP.css], [Cloudflare]
836 |
837 | 1. **[Svelvet](https://svelvet.io)**
838 | [[code](https://github.com/oslabs-beta/Svelvet)]
839 |
840 |
841 |
842 |
843 | A lightweight Svelte component library for building interactive node-based flow diagrams.
844 |
845 | uses: [Playwright], [D3], [Testing Library], [Tailwind], [PostCSS], [Vitest]
846 |
847 | 1. **[Flayks](https://flayks.com)**
848 |
849 | Portfolio of Félix Péault, Digital Designer and Art Director. Sanity.io [interview ], [feature ].
850 |
851 | uses: [Sanity], [anime.js], [Vercel], [TypeScript], [SCSS], [PostCSS]
852 |
853 | 1. **[Level Up Tutorials](https://leveluptutorials.com)**
854 |
855 | Video tutorials for web developers and designers.
856 |
857 | uses: [TypeScript], [Google Tag Manager]
858 |
859 | 1. **[JSchallenger](https://jschallenger.com)**
860 |
861 | Free Javascript challenges. Learn Javascript online by solving coding exercises.
862 |
863 | uses: [Tailwind], [DynamoDB], [AWS]
864 |
865 | 1. **[cybernetic.dev](https://cybernetic.dev)**
866 |
867 | Data-centric UI experiments
868 |
869 | uses: [Three.js], [Cytoscape.js], [Vercel]
870 |
871 | 1. **[Houses of World](https://housesof.world)**
872 |
873 | A travel, photography and design project showcasing charismatic houses around the world.
874 |
875 | uses: [Typescript], [SCSS], [PostCSS], [Motion One], [OGL], [WebGL], [Directus], [Swell Commerce], [Vercel]
876 |
877 | [airtable]: https://airtable.com
878 | [algolia]: https://algolia.com
879 | [anime.js]: https://animejs.com
880 | [aws]: https://aws.amazon.com
881 | [babel]: https://babeljs.io
882 | [changesets]: https://github.com/changesets/changesets
883 | [chart.js]: https://chartjs.org
884 | [cloudflare pages]: https://pages.cloudflare.com
885 | [cloudflare]: https://cloudflare.com
886 | [cloudinary]: https://cloudinary.com
887 | [codemirror]: https://codemirror.net
888 | [commitlint]: https://github.com/conventional-changelog/commitlint
889 | [coolify]: https://coolify.io
890 | [cssnano]: https://cssnano.github.io/cssnano
891 | [cypress]: https://cypress.io
892 | [cytoscape.js]: https://js.cytoscape.org
893 | [d3]: https://d3js.org
894 | [daisyui]: https://daisyui.com
895 | [directus]: https://directus.io
896 | [docker]: https://docker.com
897 | [dynamodb]: https://aws.amazon.com/dynamodb
898 | [echarts]: https://github.com/apache/echarts
899 | [elder.js]: https://github.com/Elderjs/elderjs
900 | [electron]: https://electronjs.org
901 | [ffmpeg]: https://ffmpeg.org
902 | [filepond]: https://pqina.nl/filepond
903 | [firebase]: https://firebase.google.com
904 | [flamethrower]: https://github.com/fireship-io/flamethrower
905 | [flutter]: https://flutter.dev
906 | [github api]: https://docs.github.com/rest
907 | [github pages]: https://pages.github.com
908 | [gitpod]: https://gitpod.io
909 | [google analytics]: https://analytics.google.com
910 | [google tag manager]: https://tagmanager.google.com
911 | [graphcms]: https://graphcms.com
912 | [graphql]: https://graphql.org
913 | [gsap]: https://greensock.com/gsap
914 | [highlight.js]: https://highlightjs.org
915 | [huggingface hub]: https://github.com/huggingface/huggingface_hub
916 | [huggingface inference]: https://github.com/huggingface/text-generation-inference
917 | [hugo]: https://gohugo.io
918 | [husky]: https://github.com/typicode/husky
919 | [ibm carbon]: https://carbondesignsystem.com
920 | [iconify]: https://iconify.design
921 | [iconoir]: https://iconoir.com
922 | [jest]: https://jestjs.io
923 | [js-yaml]: https://github.com/nodeca/js-yaml
924 | [jsdoc]: https://jsdoc.app
925 | [jsdom]: https://github.com/jsdom/jsdom
926 | [json5]: https://github.com/json5/json5
927 | [katex]: https://github.com/KaTeX/KaTeX
928 | [libvips]: https://libvips.org
929 | [liveblocks]: https://liveblocks.io
930 | [lodash]: https://lodash.com
931 | [lucia]: https://github.com/lucia-auth/lucia
932 | [mapbox]: https://mapbox.com
933 | [markedjs]: https://marked.js.org
934 | [matter.js]: https://brm.io/matter-js
935 | [mdsvex]: https://github.com/pngwn/MDsveX
936 | [mdsvexamples]: https://github.com/mattjennings/mdsvexamples
937 | [mocha]: https://mochajs.org
938 | [monaco]: https://microsoft.github.io/monaco-editor
939 | [motion one]: https://motion.dev
940 | [mvp.css]: https://github.com/andybrewer/mvp
941 | [nestjs]: https://nestjs.com
942 | [netlify]: https://netlify.com
943 | [nginx]: https://nginx.org
944 | [notion]: https://notion.so
945 | [octokit]: https://github.com/octokit/octokit.js
946 | [ogl]: https://github.com/oframe/ogl
947 | [panzoom]: https://github.com/timmywil/panzoom
948 | [passlock]: https://github.com/passlock-dev/passkeys
949 | [picocss]: https://picocss.com
950 | [plausible]: https://plausible.io
951 | [playwright]: https://playwright.dev
952 | [pm2]: https://pm2.io
953 | [pnpm]: https://pnpm.io
954 | [pocketbase]: https://pocketbase.io
955 | [postcss]: https://postcss.org
956 | [pre-commit]: https://pre-commit.com
957 | [prism]: https://prismjs.com
958 | [prisma]: https://prisma.io
959 | [prosemirror]: https://prosemirror.net
960 | [python]: https://python.org
961 | [radix]: https://radix-ui.com
962 | [rehype]: https://github.com/rehypejs/rehype
963 | [release it]: https://github.com/release-it/release-it
964 | [remark]: https://github.com/remarkjs/remark
965 | [sanitize-html]: https://github.com/apostrophecms/sanitize-html
966 | [sanity]: https://sanity.io
967 | [sass]: https://sass-lang.com
968 | [scss]: https://sass-lang.com/documentation/syntax
969 | [smui]: https://sveltematerialui.com
970 | [spotify web api]: https://github.com/JMPerez/spotify-web-api-js
971 | [storyblock]: https://storyblok.com
972 | [storybook]: https://storybook.js.org
973 | [supabase]: https://supabase.com
974 | [superforms]: https://github.com/ciscoheat/sveltekit-superforms
975 | [surge.sh]: https://surge.sh
976 | [svelte forms lib]: https://github.com/tjinauyeung/svelte-forms-lib
977 | [svelte-enhanced-img]: https://svelte.dev/docs/kit/images#sveltejs-enhanced-img
978 | [svelte-highlight]: https://github.com/metonym/svelte-highlight
979 | [svelte-intl-precompile]: https://github.com/cibernox/svelte-intl-precompile
980 | [svelte-markdown]: https://github.com/pablo-abc/svelte-markdown
981 | [svelte-multiselect]: https://github.com/janosh/svelte-multiselect
982 | [svelte-toasts]: https://github.com/mzohaibqc/svelte-toasts
983 | [sveltekit-i18n]: https://github.com/sveltekit-i18n/lib
984 | [swell commerce]: https://swell.is
985 | [tailwind]: https://tailwindcss.com
986 | [testing library]: https://testing-library.com
987 | [three.js]: https://threejs.org
988 | [trpc-sveltekit]: https://github.com/icflorescu/trpc-sveltekit
989 | [trpc]: https://trpc.io
990 | [turbo]: https://github.com/vercel/turbo
991 | [typescript]: https://typescriptlang.org
992 | [underscore]: https://underscorejs.org
993 | [unocss]: https://github.com/unocss/unocss
994 | [uvu]: https://github.com/lukeed/uvu
995 | [vercel]: https://vercel.com
996 | [vitest]: https://vitest.dev
997 | [wasm]: https://webassembly.org
998 | [webgl]: https://developer.mozilla.org/docs/Web/API/WebGL_API
999 | [ytdl-core]: https://github.com/fent/node-ytdl-core
1000 |
1001 | ## 🎉 Suggestions Welcome
1002 |
1003 | Want to add an open-source project to this list? [PRs welcome](https://github.com/janosh/awesome-sveltekit/edit/main/sites.yml)! This collection is a community effort intended as a learning resource for Svelte devs. Entry requirements:
1004 |
1005 | 1. **open source**: While a site with private code can give design and feature ideas, there's little educational value if you can't inspect how it was made.
1006 | 1. **novel**: Not just another blog or todo app. Ideally, some application or technology not already covered in this collection.
1007 | 1. **popular**: At least 50 stars on GitHub or reasonable expectation to reach that number soon.
1008 |
1009 | These requirements arose over time so not all existing entries satisfy them. There can also be tradeoffs. For example, if novelty is very high, popularity can be lower. If you're unsure, please [open a discussion](https://github.com/janosh/awesome-sveltekit/discussions) first.
1010 |
1011 | A good place to discover influential Svelte projects (not necessarily SvelteKit) is [GitHub Trending](https://github.com/trending/svelte?since=monthly). If anything on that list stands out to you but is missing here, please add it!
1012 |
--------------------------------------------------------------------------------
/site/.env.example:
--------------------------------------------------------------------------------
1 | GH_TOKEN=ghp_...
2 |
--------------------------------------------------------------------------------
/site/.prettierrc.yml:
--------------------------------------------------------------------------------
1 | semi: false
2 | singleQuote: true
3 | overrides:
4 | - files: '*.svelte'
5 | options:
6 | printWidth: 90
7 |
--------------------------------------------------------------------------------
/site/eslint.config.js:
--------------------------------------------------------------------------------
1 | import stylistic from '@stylistic/eslint-plugin'
2 | import svelte from 'eslint-plugin-svelte'
3 | import tslint from 'typescript-eslint'
4 |
5 | /** @type { import("eslint").Linter.Config[] } */
6 | export default [
7 | ...tslint.configs.recommended,
8 | ...svelte.configs[`flat/recommended`],
9 | { plugins: { '@stylistic': stylistic } },
10 | {
11 | rules: {
12 | '@typescript-eslint/no-unused-vars': [
13 | `error`,
14 | { argsIgnorePattern: `^_`, varsIgnorePattern: `^_` },
15 | ],
16 | '@stylistic/quotes': [`error`, `backtick`, { avoidEscape: true }],
17 | 'svelte/no-at-html-tags': `off`,
18 | },
19 | },
20 | {
21 | languageOptions: { ecmaVersion: 2020 },
22 | },
23 | {
24 | files: [`**/*.svelte`],
25 | languageOptions: {
26 | parserOptions: {
27 | parser: tslint.parser,
28 | },
29 | },
30 | },
31 | {
32 | ignores: [`build/`, `.svelte-kit/`, `package/`],
33 | },
34 | ]
35 |
--------------------------------------------------------------------------------
/site/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "awesome-sveltekit",
3 | "description": "Awesome examples of SvelteKit in the wild",
4 | "author": "Janosh Riebesell ",
5 | "homepage": "https://janosh.github.io/awesome-sveltekit",
6 | "repository": "https://github.com/janosh/awesome-sveltekit",
7 | "license": "MIT",
8 | "version": "0.1.0",
9 | "type": "module",
10 | "bugs": "https://github.com/janosh/awesome-sveltekit/issues",
11 | "scripts": {
12 | "dev": "vite dev",
13 | "build": "vite build",
14 | "preview": "vite preview",
15 | "serve": "vite build && vite preview",
16 | "check": "svelte-check",
17 | "test": "playwright test tests/*.test.ts"
18 | },
19 | "devDependencies": {
20 | "@iconify/svelte": "^5.0.0",
21 | "@playwright/test": "^1.52.0",
22 | "@rollup/plugin-yaml": "^4.1.2",
23 | "@stylistic/eslint-plugin": "^4.2.0",
24 | "@sveltejs/adapter-static": "^3.0.8",
25 | "@sveltejs/kit": "^2.21.0",
26 | "@sveltejs/vite-plugin-svelte": "^5.0.3",
27 | "dotenv": "^16.5.0",
28 | "eslint": "^9.27.0",
29 | "eslint-plugin-svelte": "^3.8.1",
30 | "js-yaml": "^4.1.0",
31 | "marked": "^15.0.11",
32 | "prettier": "^3.5.3",
33 | "prettier-plugin-svelte": "^3.4.0",
34 | "puppeteer": "^24.8.2",
35 | "sharp": "^0.34.1",
36 | "svelte": "^5.30.2",
37 | "svelte-check": "^4.2.1",
38 | "svelte-multiselect": "11.1.0",
39 | "svelte-preprocess": "^6.0.3",
40 | "svelte-zoo": "^0.4.18",
41 | "svelte2tsx": "^0.7.39",
42 | "typescript": "5.8.3",
43 | "typescript-eslint": "^8.32.1",
44 | "vite": "^6.3.5"
45 | },
46 | "keywords": [
47 | "sveltekit",
48 | "awesome collection",
49 | "example sites",
50 | "learning resource"
51 | ]
52 | }
53 |
--------------------------------------------------------------------------------
/site/playwright.config.ts:
--------------------------------------------------------------------------------
1 | import type { PlaywrightTestConfig } from '@playwright/test'
2 |
3 | export default {
4 | webServer: {
5 | command: `vite dev --port 3005`,
6 | port: 3005,
7 | },
8 | } satisfies PlaywrightTestConfig
9 |
--------------------------------------------------------------------------------
/site/src/app.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --bg: #061e25;
3 | --main-max-width: 1300px;
4 |
5 | --zoo-github-corner-color: var(--bg);
6 | --zoo-github-corner-bg: white;
7 |
8 | --sms-bg: black;
9 | --sms-max-width: 22em;
10 | --sms-selected-bg: rgba(255, 255, 255, 0.15);
11 | --sms-options-bg: #2e2935;
12 | --sms-border: 1px solid #333;
13 | --sms-li-active-bg: rgba(255, 255, 255, 0.15);
14 | --sms-placeholder-color: gray;
15 | }
16 | body {
17 | background: var(--bg);
18 | padding: 5vw;
19 | font-family: -apple-system, BlinkMacSystemFont, Roboto, sans-serif;
20 | margin: auto;
21 | color: #eee;
22 | overflow-x: hidden;
23 | }
24 | main {
25 | max-width: var(--main-max-width);
26 | margin: auto;
27 | margin-bottom: 3em;
28 | width: 100%;
29 | }
30 | input[type='search'] {
31 | border: 1px solid #333;
32 | outline: none;
33 | padding: 3pt 1ex;
34 | border-radius: 3pt;
35 | color: inherit;
36 | background: black;
37 | font-size: 1em;
38 | }
39 | input[type='search']::placeholder {
40 | color: gray;
41 | }
42 | a {
43 | color: cornflowerblue;
44 | text-decoration: none;
45 | }
46 | a:hover {
47 | color: orange;
48 | }
49 | .flex {
50 | display: flex;
51 | align-items: center;
52 | flex-wrap: wrap;
53 | }
54 | :where(h1, h2, h3, h4, h5, h6) {
55 | scroll-margin-top: 100px;
56 | }
57 |
58 | ::highlight(highlight-match) {
59 | color: mediumaquamarine;
60 | text-decoration: underline;
61 | }
62 |
--------------------------------------------------------------------------------
/site/src/app.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | declare module '*sites.yml' {
4 | export const lastParsed: string
5 | const sites: import('./lib').Site[]
6 | export default sites
7 | }
8 |
9 | declare module '*tools.yml' {
10 | const links: Record
11 | export default links
12 | }
13 |
--------------------------------------------------------------------------------
/site/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 | %sveltekit.head%
20 |
21 |
22 |
23 | %sveltekit.body%
24 |
25 |
26 |
--------------------------------------------------------------------------------
/site/src/lib/ContributorList.svelte:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 | {#each contributors as { avatar_url, html_url, login } (JSON.stringify(login))}
12 |
13 |
14 |
15 |
16 | {login}
17 |
18 | {/each}
19 |
20 |
21 |
59 |
--------------------------------------------------------------------------------
/site/src/lib/Filters.svelte:
--------------------------------------------------------------------------------
1 |
21 |
22 |
23 |
24 |
25 | ({ label, count }))}
27 | placeholder="Filter by tag..."
28 | bind:selected={$filter_tags}
29 | >
30 | {#snippet option({ option })}
31 |
32 | {option.label}
33 | {option.count}
34 |
35 | {/snippet}
36 |
37 | {#if $filter_tags.length > 1}
38 |
39 | {/if}
40 |
41 |
42 | ({ label, count }))}
44 | placeholder="Filter by contributor..."
45 | bind:selected={$filter_contributors}
46 | >
47 | {#snippet option({ option })}
48 |
49 | {option.label}
50 | {option.count}
51 |
52 | {/snippet}
53 |
54 | {#if $filter_contributors.length > 1}
55 |
56 | {/if}
57 |
58 |
59 |
65 | {#if $sort_by?.length > 0}
66 |
67 | {/if}
68 |
69 |
70 |
71 |
89 |
--------------------------------------------------------------------------------
/site/src/lib/Person.svelte:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 | {#if avatar}
17 |
18 | {/if}
19 | {name ?? github}
20 | {#if twitter}
21 |
22 |
23 |
24 | {/if}
25 | {#if github}
26 |
27 |
28 |
29 | {/if}
30 | {#if url}
31 |
32 |
33 |
34 | {/if}
35 |
36 |
37 |
50 |
--------------------------------------------------------------------------------
/site/src/lib/Screenshot.svelte:
--------------------------------------------------------------------------------
1 |
22 |
23 |
24 |
25 |
32 |
--------------------------------------------------------------------------------
/site/src/lib/SiteDetails.svelte:
--------------------------------------------------------------------------------
1 |
32 |
33 |
34 |
35 | {title}
36 |
37 | {#if site.repo}
38 |
39 |
40 |
41 | {/if}
42 | {#if site.npm}
43 |
44 |
45 |
46 | {/if}
47 |
48 |
49 |
50 | {#if site.description}
51 | {@html site.description}
52 | {/if}
53 | {#if site.repo && repo_stars}
54 |
55 |
56 | Stars
57 |
58 | {repo_stars.toLocaleString()}
59 |
60 | {/if}
61 | {#if contributors?.length > 0}
62 |
63 |
64 |
65 | {#if site.repo}
66 |
67 | {contributors.length > 1 ? `Contributors` : `Creator`}
68 |
69 | {:else}
70 | {contributors.length > 1 ? `Contributors` : `Creator`}
71 | {/if}
72 | {#if contributors.length > 1}
73 |
74 | {#each contributors as person (person.name)}
75 |
76 |
77 |
78 | {/each}
79 |
80 | {:else}
81 |
82 |
83 | {/if}
84 |
85 | {/if}
86 | {#if date_created}
87 |
88 |
89 | Project started on
90 |
91 |
96 | {#if site.repo}
97 | {date_created.toISOString().split(`T`)[0]}
98 | {:else}
99 | {date_created.toISOString().split(`T`)[0]}
100 | {/if}
101 |
102 |
103 | {/if}
104 | {#if tags?.length > 0}
105 |
106 |
107 | Tags
108 | {#each tags as tag (tag)}
109 | {tag}
110 | {/each}
111 |
112 | {/if}
113 | {#if tools && tools?.length > 0}
114 |
115 |
116 | Uses
117 | {#each tools as [tool, href] (tool)}
118 | {tool}
119 | {/each}
120 |
121 | {/if}
122 |
123 |
126 |
127 |
165 |
--------------------------------------------------------------------------------
/site/src/lib/SiteList.svelte:
--------------------------------------------------------------------------------
1 |
35 |
36 |
37 |
38 |
39 | {#each sites as site, idx (site.url)}
40 |
46 |
47 |
48 | {/each}
49 |
50 |
51 |
68 |
--------------------------------------------------------------------------------
/site/src/lib/SitePreview.svelte:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | {idx > 0 ? `${idx}. ` : ``}{site.title}
22 |
23 | {#if site.repo_stars}
24 |
25 |
26 | {site.repo_stars.toLocaleString()}
27 |
28 | {/if}
29 |
30 | {#if tags}
31 |
32 |
33 | {#each site.tags as tag (tag)}
34 | t.label === tag)}>
35 | {tag}
36 |
37 | {/each}
38 |
39 | {/if}
40 |
41 |
61 |
--------------------------------------------------------------------------------
/site/src/lib/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ContributorList } from './ContributorList.svelte'
2 | export { default as Filters } from './Filters.svelte'
3 | export { default as Person } from './Person.svelte'
4 | export { default as Screenshot } from './Screenshot.svelte'
5 | export { default as SiteDetails } from './SiteDetails.svelte'
6 | export { default as SiteList } from './SiteList.svelte'
7 | export { default as SitePreview } from './SitePreview.svelte'
8 |
9 | export type RawSite = {
10 | title: string
11 | url: string
12 | description?: string
13 | repo?: string
14 | npm?: string
15 | site_src?: string
16 | tags: string[]
17 | uses: string[]
18 | date_added: Date
19 | date_created: Date
20 | }
21 |
22 | export type Site = RawSite & {
23 | slug: string
24 | repo_stars?: number
25 | contributors: Contributor[]
26 | }
27 |
28 | export type Contributor = {
29 | name: string
30 | url?: string
31 | twitter?: string
32 | github?: string
33 | email?: string
34 | avatar?: string
35 | location?: string
36 | company?: string
37 | }
38 |
39 | // partial schema returned by
40 | // fetch('https://api.github.com/repos/janosh/awesome-sveltekit/contributors')
41 | export type RepoContributor = {
42 | login: string
43 | id: number
44 | avatar_url: string
45 | gravatar_id: string
46 | url: string
47 | html_url: string
48 | repos_url: string
49 | type: `User` | `Bot`
50 | contributions: number
51 | }
52 |
--------------------------------------------------------------------------------
/site/src/lib/stores.ts:
--------------------------------------------------------------------------------
1 | import { writable } from 'svelte/store'
2 | import { session_store } from 'svelte-zoo'
3 | import type { Site } from '.'
4 |
5 | export const sort_by = session_store(`sort_by`, [`GitHub repo stars`])
6 |
7 | export const search = session_store(`search`, ``)
8 |
9 | export const tag_filter_mode = session_store<`all` | `any`>(
10 | `tag-filter-mode`,
11 | `any`,
12 | )
13 | export const contributor_filter_mode = session_store<`all` | `any`>(
14 | `contributor-filter-mode`,
15 | `any`,
16 | )
17 |
18 | tag_filter_mode.subscribe((mode) => {
19 | if ([`all`, `any`].includes(mode)) return mode
20 | })
21 |
22 | contributor_filter_mode.subscribe((mode) => {
23 | if ([`all`, `any`].includes(mode)) return mode
24 | })
25 |
26 | export const filter_tags = session_store<
27 | { label: string; value: string; count: number }[]
28 | >(`filter-tags`, [])
29 |
30 | export const filter_contributors = session_store<
31 | { label: string; value: string; count: number }[]
32 | >(`filter-contributors`, [])
33 |
34 | export const sorted_sites = writable([])
35 |
--------------------------------------------------------------------------------
/site/src/routes/+error.svelte:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 | Error {$page.status} • {name}
11 |
12 |
13 |
14 |
15 |
16 |
Error {String($page.status).replace(`0`, `😵`)}: {$page.error?.message}
17 | {#if $page.status >= 500}
18 |
19 | If page reloading doesn't help, please raise an issue on
20 | GitHub . Thanks! 🙏
21 |
22 | {/if}
23 | {#if online === false}
24 | Looks like you're offline. If you think your connection is fine, check the
25 |
GitHub status page
26 | as this site is hosted by
27 | GitHub Pages.
28 | {/if}
29 |
30 |
31 | Back to
32 |
33 | landing page
34 | .
35 |
36 |
37 |
38 |
51 |
--------------------------------------------------------------------------------
/site/src/routes/+layout.svelte:
--------------------------------------------------------------------------------
1 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {@render children?.()}
31 |
--------------------------------------------------------------------------------
/site/src/routes/+layout.ts:
--------------------------------------------------------------------------------
1 | export const prerender = true
2 |
--------------------------------------------------------------------------------
/site/src/routes/+page.server.ts:
--------------------------------------------------------------------------------
1 | import type { RepoContributor } from '$lib'
2 |
3 | export const load = async ({ fetch }) => {
4 | const contributors: RepoContributor[] = await fetch(
5 | `https://api.github.com/repos/janosh/awesome-sveltekit/contributors`,
6 | { cache: `force-cache` },
7 | ).then((res) => res.json())
8 |
9 | const repo_contributors = contributors?.filter((itm) => itm.type !== `Bot`)
10 | return { repo_contributors }
11 | }
12 |
--------------------------------------------------------------------------------
/site/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
103 |
104 |
105 | Awesome SvelteKit
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
118 |
119 | {sites.length} Awesome Examples of SvelteKit in the Wild
120 |
121 |
122 |
123 |
124 | {#if $sorted_sites.length < sites.length}
125 |
126 | {$sorted_sites.length} match{$sorted_sites.length !== 1 ? `es` : ``}
127 | {#if $sorted_sites?.length === 0}
128 | (try different filters)
129 | {/if}
130 |
131 | {/if}
132 |
133 |
134 |
135 |
141 |
142 |
143 |
144 | 🎉 Suggestions Welcome
145 |
146 | Want to add an open source project to this list?
151 |
152 |
153 | PRs welcome ! This collection is meant as a learning resource for Svelte devs. While a site with
155 | private code can give inspiration, there's little educational value if you can't inspect
156 | how it was made.
157 |
158 |
159 |
160 | A good place to discover Svelte projects (not necessarily SvelteKit) is
161 |
162 |
163 | GitHub Trending
164 | . If anything on that list stands out to you but is missing here, please add it!
165 |
166 |
167 |
186 |
--------------------------------------------------------------------------------
/site/src/routes/[slug]/+page.server.ts:
--------------------------------------------------------------------------------
1 | import sites from '$site/src/sites.yml'
2 | import { error } from '@sveltejs/kit'
3 |
4 | export const entries = () => {
5 | // Return an array of all possible slug values
6 | return sites.map((site) => ({ slug: site.slug }))
7 | }
8 |
9 | export const load = ({ params }) => {
10 | const { slug } = params
11 |
12 | // TODO revert back to filtered_sites such that PrevNext doesn't navigate to pages the user excluded
13 | const site = sites.find((site) => site.slug === slug)
14 |
15 | if (!site) throw error(404, `Page '${slug}' not found`)
16 |
17 | return { site, sites, slug }
18 | }
19 |
--------------------------------------------------------------------------------
/site/src/routes/[slug]/+page.svelte:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 | {head_title}
15 |
16 | {#if plain_description}
17 |
18 |
19 | {/if}
20 | {#if data.site.contributors?.[0]?.twitter}
21 |
22 | {/if}
23 |
24 |
25 | « home
26 |
27 |
28 |
29 |
30 | [site.slug, site])}
32 | current={data.slug}
33 | style="max-width: var(--main-max-width);"
34 | >
35 | {#snippet children({ item, kind })}
36 |
44 | {/snippet}
45 |
46 |
47 |
62 |
63 |
99 |
--------------------------------------------------------------------------------
/site/src/tasks/fetch-github-metadata.ts:
--------------------------------------------------------------------------------
1 | /* This file parses sites.yml, fetches GH metadata like contributors
2 | and stars for each site, then writes the results to site/src/sites.yml. */
3 |
4 | import type { Site } from '$lib'
5 | import dotenv from 'dotenv'
6 | import fs from 'fs'
7 | import yaml from 'js-yaml'
8 | import { marked } from 'marked'
9 | import { performance } from 'perf_hooks'
10 | import type { Action } from '.'
11 |
12 | export function title_to_slug(title: string): string {
13 | return title.toLowerCase().replaceAll(` `, `-`)
14 | }
15 |
16 | dotenv.config({ path: `../site/.env` })
17 |
18 | export async function fetch_github_metadata(options: { action?: Action } = {}) {
19 | const { action = `add-missing` } = options
20 | const in_path = `../sites.yml`
21 | const out_path = `../site/src/sites.yml`
22 |
23 | const sites = yaml.load(fs.readFileSync(in_path)) as Site[]
24 |
25 | const old_sites = fs.existsSync(out_path)
26 | ? yaml.load(fs.readFileSync(out_path))
27 | : []
28 |
29 | const this_file = import.meta.url.split(`/`).pop()
30 |
31 | console.log(`Running ${this_file}...`)
32 |
33 | const start = performance.now()
34 |
35 | const old_slugs = old_sites.map((site) => site.slug)
36 |
37 | const [seen_sites, skipped_sites, updated_sites] = [[], [], []]
38 |
39 | if (!process.env.GH_TOKEN) {
40 | console.error(`GH_TOKEN environment variable is not set.`)
41 | process.exit(1)
42 | }
43 |
44 | const headers = {
45 | authorization: `token ${process.env.GH_TOKEN}`,
46 | }
47 |
48 | async function fetch_check(url: string) {
49 | const response = await fetch(url, { headers }).then((res) => res.json())
50 | if (response.message) throw new Error(response.message)
51 | return response
52 | }
53 |
54 | function https_url(url: string) {
55 | if (!url) return null
56 | if (url.startsWith(`http`)) return url.replace(`http://`, `https://`)
57 | return `https://${url}`
58 | }
59 |
60 | // Only update site/src/sites.js if a new site was added to sites.yml
61 | // or repo stars were last fetched more than a month ago.
62 | for (const site of sites) {
63 | const slug = title_to_slug(site.title)
64 |
65 | if (seen_sites.includes(slug)) throw new Error(`Duplicate slug ${slug}`)
66 | else seen_sites.push(slug)
67 |
68 | site.slug = slug
69 |
70 | // add open-source tag for all sites with repo key
71 | if (site.repo && !site.tags.includes(`open source`)) {
72 | site.tags.push(`open source`)
73 | site.tags.sort((a, b) => a.localeCompare(b)) // sort tags alphabetically in place
74 | }
75 |
76 | // skip site if it doesn't have a repo key or if data was fetched for it before
77 | // and update_existing is false
78 | if (
79 | !site.repo ||
80 | (old_slugs.includes(slug) && action !== `update-existing`)
81 | ) {
82 | skipped_sites.push(slug)
83 | continue
84 | }
85 |
86 | // also skip site if repo key cannot be parsed into a user login and a repo name
87 | const repoHandle = site.repo.split(`github.com/`)[1]
88 | if (!repoHandle || repoHandle.split(`/`).length !== 2) {
89 | console.error(`bad repo handle ${repoHandle}`)
90 | skipped_sites.push(slug)
91 | continue
92 | }
93 |
94 | // fetch stars
95 | try {
96 | const url = `https://api.github.com/repos/${repoHandle}`
97 | const repo = await fetch_check(url)
98 | site.repo_stars = repo.stargazers_count
99 | } catch (error) {
100 | console.error(`Error fetching stars for ${site.title}:`, error)
101 | }
102 |
103 | // fetch most active contributors
104 | let contributors = await fetch_check(
105 | `https://api.github.com/repos/${repoHandle}/contributors`,
106 | )
107 |
108 | // show at most 5 contributors and only those with more than 10 commits
109 | // and of type 'User' (to filter out bots) sorted by number of contributions
110 | contributors = contributors
111 | .filter((itm) => itm.contributions > 10 && itm.type === `User`)
112 | .sort((c1, c2) => c2.contributions - c1.contributions)
113 | .slice(0, 5)
114 |
115 | contributors = await Promise.all(
116 | contributors.map((person) =>
117 | fetch(person.url, { headers }).then((res) => res.json()),
118 | ),
119 | )
120 |
121 | site.contributors = contributors.map(
122 | ({ name, location, company, ...c }) => ({
123 | github: c.login,
124 | twitter: c.twitter_username,
125 | url: https_url(c.blog),
126 | avatar: c.avatar_url,
127 | name,
128 | location,
129 | company,
130 | }),
131 | )
132 |
133 | updated_sites.push(slug)
134 | }
135 |
136 | const new_sites = sites.map((site) => {
137 | const old_site = old_sites.find((old) => old.slug === site.slug) ?? {}
138 | // retain fetched GitHub data from old_sites in case we didn't refetch
139 | // but overwrite with new data if we did
140 | for (const key of [`repo_stars`, `contributors`]) {
141 | if (site[key] === undefined) site[key] = old_site[key]
142 | }
143 |
144 | site.description = marked.parseInline(site.description)
145 |
146 | return site
147 | })
148 |
149 | const wall_time = ((performance.now() - start) / 1000).toFixed(2)
150 |
151 | const comment = `# auto-generated by ${this_file}\n\n`
152 | fs.writeFileSync(out_path, comment + yaml.dump(new_sites))
153 |
154 | console.log(
155 | `${this_file} took ${wall_time}s, updated ${updated_sites.length}, ` +
156 | `skipped ${skipped_sites.length}\n`,
157 | )
158 | }
159 |
--------------------------------------------------------------------------------
/site/src/tasks/index.ts:
--------------------------------------------------------------------------------
1 | export * from './fetch-github-metadata'
2 | export * from './screenshots'
3 | export * from './update-readme'
4 |
5 | export const action_types = [`add-missing`, `update-existing`] as const
6 | export type Action = (typeof action_types)[number]
7 |
--------------------------------------------------------------------------------
/site/src/tasks/screenshots.ts:
--------------------------------------------------------------------------------
1 | /* This file parses sites.yml, generates low+hi-res screenshots for each site and
2 | saves them as AVIF to site/static/screenshots. */
3 |
4 | import type { Site } from '$lib'
5 | import fs from 'fs'
6 | import yaml from 'js-yaml'
7 | import { performance } from 'perf_hooks'
8 | import puppeteer from 'puppeteer'
9 | import sharp from 'sharp'
10 | import type { Action } from '.'
11 |
12 | export async function make_screenshots(options: { action?: Action } = {}) {
13 | const { action = `add-missing` } = options
14 | const start = performance.now()
15 | const screenshot_dir = `../site/static/screenshots`
16 |
17 | const sites = yaml
18 | .load(fs.readFileSync(`../site/src/sites.yml`))
19 | .sort((s1, s2) => s1.title.localeCompare(s2.title)) as Site[]
20 |
21 | const browser = await puppeteer.launch()
22 | const page = await browser.newPage()
23 |
24 | fs.mkdirSync(screenshot_dir, { recursive: true })
25 |
26 | const arg = process.argv.find((arg) => arg.startsWith(`screenshots:`))
27 | if (action && ![`add-missing`, `update-existing`].includes(action)) {
28 | throw new Error(
29 | `Correct usage: vite [dev] screenshots:[report|download|re-download], got ${arg}\n`,
30 | )
31 | }
32 |
33 | const msg = {
34 | 'add-missing': `Adding screenshots for sites without them`,
35 | 'update-existing': `Updating all existing screenshots`,
36 | }[action]
37 | console.log(msg)
38 |
39 | const [created, updated, skipped, existed] = [[], [], [], []]
40 |
41 | for (const [idx, site] of sites.entries()) {
42 | const { slug } = site
43 |
44 | const img_path = `${screenshot_dir}/${slug}.avif`
45 | const img_exists = fs.existsSync(img_path)
46 |
47 | if (action != `update-existing` && img_exists) {
48 | existed.push(site.slug)
49 | continue
50 | }
51 |
52 | console.log(`${idx + 1}/${sites.length}: ${slug}`)
53 |
54 | try {
55 | try {
56 | await page.goto(site.url, { timeout: 5000, waitUntil: `networkidle2` })
57 | } catch (error) {
58 | if (error instanceof puppeteer.TimeoutError) {
59 | // retry page.goto(), this time waiting only for 'load' event
60 | await page.goto(site.url, { timeout: 5000, waitUntil: `load` })
61 | } else {
62 | throw error // rethrow if not a TimeoutError
63 | }
64 | }
65 | } catch (error) {
66 | console.log(`skipping ${slug} due to ${error}`)
67 | skipped.push(site.slug)
68 | }
69 |
70 | await new Promise((r) => setTimeout(r, 2000)) // wait for sites with on-load animations to settle
71 | await page.setViewport({ width: 1200, height: 900 })
72 | const hires = await page.screenshot()
73 | await page.setViewport({ width: 1200, height: 900, deviceScaleFactor: 0.5 })
74 | const lores = await page.screenshot()
75 | await sharp(hires).toFile(img_path)
76 | await sharp(lores).toFile(`${screenshot_dir}/${slug}.small.avif`)
77 |
78 | if (img_exists) updated.push(site.slug)
79 | else created.push(site.slug)
80 | }
81 |
82 | await browser.close()
83 |
84 | const wall_time = ((performance.now() - start) / 1000).toFixed(2)
85 |
86 | const this_file = import.meta.url.split(`/`).pop()
87 |
88 | if (created.length > 0 || updated.length > 0) {
89 | console.log(
90 | `${this_file} took ${wall_time}s, created ${created.length} new, ${updated.length} updated, ${skipped.length} skipped, ${existed.length} already had screenshots\n`,
91 | )
92 | } else {
93 | console.log(`No changes from ${this_file} in ${wall_time}s\n`)
94 | }
95 |
96 | // delete screenshots of removed site
97 | const existing_slugs = sites.map((site) => site.slug)
98 |
99 | for (const file of fs.readdirSync(screenshot_dir)) {
100 | const slug = file.replace(`.small.avif`, ``).replace(`.avif`, ``)
101 | if (!existing_slugs.includes(slug)) {
102 | console.log(`deleting ${file}`)
103 |
104 | fs.unlinkSync(`${screenshot_dir}/${file}`)
105 | }
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/site/src/tasks/update-readme.ts:
--------------------------------------------------------------------------------
1 | /* This file parses sites.yml, then updates the list of sites in the readme. */
2 |
3 | import fs from 'fs'
4 | import yaml from 'js-yaml'
5 | import type { Site } from '../lib'
6 |
7 | export function update_readme() {
8 | const readme_path = `../readme.md`
9 | const sites_path = `src/sites.yml`
10 |
11 | const readme = fs.readFileSync(readme_path, `utf8`)
12 | const sites = yaml.load(fs.readFileSync(sites_path)) as Site[]
13 |
14 | const new_line = `\n `
15 |
16 | const new_sites = sites
17 | .sort((site_1, site_2) => {
18 | return (site_2.repo_stars ?? 0) - (site_1.repo_stars ?? 0)
19 | })
20 | .map((site) => {
21 | const { title, repo, uses, description, url, site_src } = site
22 |
23 | if ([title, uses, description, url].includes(undefined)) {
24 | throw new Error(`missing field(s) in site '${title}'`)
25 | }
26 |
27 | try {
28 | let code_link = ``
29 | if (repo) {
30 | const repo_handle = repo.split(`github.com/`)[1]
31 | if (repo_handle.split(`/`).length !== 2) {
32 | throw `bad repo handle ${repo_handle}`
33 | }
34 | const star_badge = ` `
35 | code_link =
36 | ` ${new_line}[[code](${site_src ?? repo})] ${new_line}` +
37 | `${new_line}${star_badge}${new_line} `
38 | }
39 |
40 | let metadata = description
41 | if (uses?.length > 0) {
42 | metadata += ` \n${new_line}uses: [${uses.join(`], [`)}]`
43 | }
44 |
45 | return `1. **[${title}](${url})**${code_link}\n${new_line}${metadata}\n`
46 | } catch (err) {
47 | throw `${err} for site '${title}'`
48 | }
49 | })
50 | .join(`\n`)
51 |
52 | const uses_links = Object.entries(yaml.load(fs.readFileSync(`../tools.yml`)))
53 | .map(([name, url]) => `[${name}]: ${url}`)
54 | .join(`\n`)
55 |
56 | // replace old sites
57 | const new_readme = readme.replace(
58 | /## Sites\n\n[\s\S]+\n\n## /, // match everything up to next heading
59 | `## Sites\n\n${new_sites}\n${uses_links}\n\n## `,
60 | )
61 |
62 | fs.writeFileSync(readme_path, new_readme)
63 |
64 | const this_file = import.meta.url.split(`/`).pop()
65 | console.log(`${this_file} updated readme\n`)
66 | }
67 |
--------------------------------------------------------------------------------
/site/static/awesome-sveltekit-banner.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/site/static/favicon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/site/static/screenshots/asm-editor.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/asm-editor.avif
--------------------------------------------------------------------------------
/site/static/screenshots/asm-editor.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/asm-editor.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/auth-starter-app.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/auth-starter-app.avif
--------------------------------------------------------------------------------
/site/static/screenshots/auth-starter-app.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/auth-starter-app.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/barnsworthburning.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/barnsworthburning.avif
--------------------------------------------------------------------------------
/site/static/screenshots/barnsworthburning.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/barnsworthburning.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/beatbump.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/beatbump.avif
--------------------------------------------------------------------------------
/site/static/screenshots/beatbump.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/beatbump.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/chat-ui.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/chat-ui.avif
--------------------------------------------------------------------------------
/site/static/screenshots/chat-ui.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/chat-ui.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/concertmash.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/concertmash.avif
--------------------------------------------------------------------------------
/site/static/screenshots/concertmash.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/concertmash.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/connorrothschild.com.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/connorrothschild.com.avif
--------------------------------------------------------------------------------
/site/static/screenshots/connorrothschild.com.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/connorrothschild.com.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/coolify.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/coolify.avif
--------------------------------------------------------------------------------
/site/static/screenshots/coolify.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/coolify.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/cryptgeon.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/cryptgeon.avif
--------------------------------------------------------------------------------
/site/static/screenshots/cryptgeon.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/cryptgeon.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/cybernetic.dev.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/cybernetic.dev.avif
--------------------------------------------------------------------------------
/site/static/screenshots/cybernetic.dev.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/cybernetic.dev.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/digital-criticism.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/digital-criticism.avif
--------------------------------------------------------------------------------
/site/static/screenshots/digital-criticism.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/digital-criticism.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/dotfyle.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/dotfyle.avif
--------------------------------------------------------------------------------
/site/static/screenshots/dotfyle.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/dotfyle.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/editable-website.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/editable-website.avif
--------------------------------------------------------------------------------
/site/static/screenshots/editable-website.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/editable-website.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/elementari.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/elementari.avif
--------------------------------------------------------------------------------
/site/static/screenshots/elementari.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/elementari.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/evidence.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/evidence.avif
--------------------------------------------------------------------------------
/site/static/screenshots/evidence.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/evidence.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/files.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/files.avif
--------------------------------------------------------------------------------
/site/static/screenshots/files.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/files.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/fireship.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/fireship.avif
--------------------------------------------------------------------------------
/site/static/screenshots/fireship.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/fireship.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/flayks.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/flayks.avif
--------------------------------------------------------------------------------
/site/static/screenshots/flayks.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/flayks.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/flowbite.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/flowbite.avif
--------------------------------------------------------------------------------
/site/static/screenshots/flowbite.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/flowbite.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/fluent-svelte.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/fluent-svelte.avif
--------------------------------------------------------------------------------
/site/static/screenshots/fluent-svelte.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/fluent-svelte.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/gitpod.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/gitpod.avif
--------------------------------------------------------------------------------
/site/static/screenshots/gitpod.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/gitpod.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/graphcms-starter-blog.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/graphcms-starter-blog.avif
--------------------------------------------------------------------------------
/site/static/screenshots/graphcms-starter-blog.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/graphcms-starter-blog.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/guess-the-year.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/guess-the-year.avif
--------------------------------------------------------------------------------
/site/static/screenshots/guess-the-year.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/guess-the-year.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/hexapipes.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/hexapipes.avif
--------------------------------------------------------------------------------
/site/static/screenshots/hexapipes.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/hexapipes.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/houdini-graphql.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/houdini-graphql.avif
--------------------------------------------------------------------------------
/site/static/screenshots/houdini-graphql.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/houdini-graphql.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/houses-of-world.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/houses-of-world.avif
--------------------------------------------------------------------------------
/site/static/screenshots/houses-of-world.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/houses-of-world.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/immich.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/immich.avif
--------------------------------------------------------------------------------
/site/static/screenshots/immich.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/immich.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/inlang.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/inlang.avif
--------------------------------------------------------------------------------
/site/static/screenshots/inlang.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/inlang.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/intl-explorer.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/intl-explorer.avif
--------------------------------------------------------------------------------
/site/static/screenshots/intl-explorer.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/intl-explorer.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/joy-of-code.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/joy-of-code.avif
--------------------------------------------------------------------------------
/site/static/screenshots/joy-of-code.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/joy-of-code.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/jschallenger.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/jschallenger.avif
--------------------------------------------------------------------------------
/site/static/screenshots/jschallenger.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/jschallenger.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/layer-cake.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/layer-cake.avif
--------------------------------------------------------------------------------
/site/static/screenshots/layer-cake.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/layer-cake.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/learn.svelte.dev.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/learn.svelte.dev.avif
--------------------------------------------------------------------------------
/site/static/screenshots/learn.svelte.dev.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/learn.svelte.dev.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/level-up-tutorials.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/level-up-tutorials.avif
--------------------------------------------------------------------------------
/site/static/screenshots/level-up-tutorials.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/level-up-tutorials.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/macos-themed-portfolio.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/macos-themed-portfolio.avif
--------------------------------------------------------------------------------
/site/static/screenshots/macos-themed-portfolio.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/macos-themed-portfolio.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/macos-web.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/macos-web.avif
--------------------------------------------------------------------------------
/site/static/screenshots/macos-web.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/macos-web.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/markushatvan.com.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/markushatvan.com.avif
--------------------------------------------------------------------------------
/site/static/screenshots/markushatvan.com.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/markushatvan.com.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/matt-fantinel.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/matt-fantinel.avif
--------------------------------------------------------------------------------
/site/static/screenshots/matt-fantinel.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/matt-fantinel.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/mermaid-live-editor.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/mermaid-live-editor.avif
--------------------------------------------------------------------------------
/site/static/screenshots/mermaid-live-editor.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/mermaid-live-editor.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/modern-fluid-typography-editor.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/modern-fluid-typography-editor.avif
--------------------------------------------------------------------------------
/site/static/screenshots/modern-fluid-typography-editor.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/modern-fluid-typography-editor.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/multi-monitor-calculator.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/multi-monitor-calculator.avif
--------------------------------------------------------------------------------
/site/static/screenshots/multi-monitor-calculator.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/multi-monitor-calculator.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/neovim-craft.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/neovim-craft.avif
--------------------------------------------------------------------------------
/site/static/screenshots/neovim-craft.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/neovim-craft.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/official-sveltekit-docs.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/official-sveltekit-docs.avif
--------------------------------------------------------------------------------
/site/static/screenshots/official-sveltekit-docs.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/official-sveltekit-docs.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/ollama-web-ui.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/ollama-web-ui.avif
--------------------------------------------------------------------------------
/site/static/screenshots/ollama-web-ui.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/ollama-web-ui.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/pancake.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/pancake.avif
--------------------------------------------------------------------------------
/site/static/screenshots/pancake.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/pancake.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/paper-trader-game.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/paper-trader-game.avif
--------------------------------------------------------------------------------
/site/static/screenshots/paper-trader-game.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/paper-trader-game.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/pixel-art-together.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/pixel-art-together.avif
--------------------------------------------------------------------------------
/site/static/screenshots/pixel-art-together.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/pixel-art-together.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/puruvj.dev.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/puruvj.dev.avif
--------------------------------------------------------------------------------
/site/static/screenshots/puruvj.dev.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/puruvj.dev.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/qwer.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/qwer.avif
--------------------------------------------------------------------------------
/site/static/screenshots/qwer.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/qwer.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/scientific-diagrams.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/scientific-diagrams.avif
--------------------------------------------------------------------------------
/site/static/screenshots/scientific-diagrams.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/scientific-diagrams.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/shadcn-svelte.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/shadcn-svelte.avif
--------------------------------------------------------------------------------
/site/static/screenshots/shadcn-svelte.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/shadcn-svelte.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/significa.co.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/significa.co.avif
--------------------------------------------------------------------------------
/site/static/screenshots/significa.co.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/significa.co.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sk-incognito.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sk-incognito.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sk-incognito.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sk-incognito.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/skeleton.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/skeleton.avif
--------------------------------------------------------------------------------
/site/static/screenshots/skeleton.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/skeleton.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/stemroller.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/stemroller.avif
--------------------------------------------------------------------------------
/site/static/screenshots/stemroller.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/stemroller.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svead.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svead.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svead.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svead.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-command-palette.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-command-palette.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-command-palette.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-command-palette.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-commerce.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-commerce.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-commerce.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-commerce.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-cubed.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-cubed.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-cubed.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-cubed.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-french-toast.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-french-toast.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-french-toast.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-french-toast.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-headless-ui.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-headless-ui.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-headless-ui.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-headless-ui.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-intl-precompile.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-intl-precompile.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-intl-precompile.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-intl-precompile.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-legos.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-legos.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-legos.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-legos.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-material-ui.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-material-ui.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-material-ui.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-material-ui.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-multiselect.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-multiselect.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-multiselect.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-multiselect.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-put.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-put.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-put.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-put.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-realworld.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-realworld.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-realworld.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-realworld.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-society.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-society.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-society.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-society.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-summit-fall-2021.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-summit-fall-2021.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte-summit-fall-2021.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte-summit-fall-2021.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte.dev.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte.dev.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelte.dev.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelte.dev.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-embed.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-embed.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-embed.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-embed.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-experiments.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-experiments.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-experiments.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-experiments.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-mdsvex-blog.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-mdsvex-blog.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-mdsvex-blog.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-mdsvex-blog.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-on-edge.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-on-edge.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-on-edge.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-on-edge.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-static-blog-starter.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-static-blog-starter.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-static-blog-starter.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-static-blog-starter.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-typescript-showcase.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-typescript-showcase.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltekit-typescript-showcase.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltekit-typescript-showcase.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltelab.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltelab.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltelab.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltelab.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltestrap.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltestrap.avif
--------------------------------------------------------------------------------
/site/static/screenshots/sveltestrap.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/sveltestrap.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelvet.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelvet.avif
--------------------------------------------------------------------------------
/site/static/screenshots/svelvet.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/svelvet.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/swyxkit.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/swyxkit.avif
--------------------------------------------------------------------------------
/site/static/screenshots/swyxkit.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/swyxkit.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/team-health-check.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/team-health-check.avif
--------------------------------------------------------------------------------
/site/static/screenshots/team-health-check.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/team-health-check.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/the-pudding.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/the-pudding.avif
--------------------------------------------------------------------------------
/site/static/screenshots/the-pudding.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/the-pudding.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/threlte.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/threlte.avif
--------------------------------------------------------------------------------
/site/static/screenshots/threlte.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/threlte.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/trpc-sveltekit.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/trpc-sveltekit.avif
--------------------------------------------------------------------------------
/site/static/screenshots/trpc-sveltekit.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/trpc-sveltekit.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/urara.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/urara.avif
--------------------------------------------------------------------------------
/site/static/screenshots/urara.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/urara.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/vert.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/vert.avif
--------------------------------------------------------------------------------
/site/static/screenshots/vert.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/vert.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/watch-this.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/watch-this.avif
--------------------------------------------------------------------------------
/site/static/screenshots/watch-this.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/watch-this.small.avif
--------------------------------------------------------------------------------
/site/static/screenshots/windmill.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/windmill.avif
--------------------------------------------------------------------------------
/site/static/screenshots/windmill.small.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/janosh/awesome-sveltekit/2491b34733453ea64bb5747397432ea2cec90eb9/site/static/screenshots/windmill.small.avif
--------------------------------------------------------------------------------
/site/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-static'
2 | import preprocess from 'svelte-preprocess'
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | export default {
6 | preprocess: [preprocess()],
7 |
8 | kit: {
9 | adapter: adapter(),
10 |
11 | alias: {
12 | $root: `..`,
13 | $site: `.`,
14 | },
15 | },
16 | }
17 |
--------------------------------------------------------------------------------
/site/tests/site.test.ts:
--------------------------------------------------------------------------------
1 | import { expect, test } from '@playwright/test'
2 |
3 | // to run tests in this file, use `npm run test:e2e`
4 | test.describe.configure({ mode: `parallel` })
5 |
6 | test(`test search functionality on the landing page`, async ({ page }) => {
7 | // failing in CI for unknown reason
8 | if (process.env.CI) test.skip()
9 |
10 | await page.goto(`/`, { waitUntil: `networkidle` })
11 |
12 | const site_locator = page.locator(`ol > li > div.flex + p.tags`)
13 | const initial_site_count = await site_locator.count()
14 |
15 | // Ensure there are sites to filter from.
16 | expect(initial_site_count).toBeGreaterThan(0)
17 |
18 | // 1. Test that a non-matching search term yields zero results
19 | const unlikely_search_term = `THIS_SHOULD_NOT_MATCH_ANY_SITES`
20 | await page.fill(`[placeholder='Search...']`, unlikely_search_term)
21 |
22 | // Wait for the search to filter and expect no sites to be visible
23 | await expect(site_locator).toHaveCount(0, { timeout: 5000 })
24 |
25 | // 2. Test that clearing the search brings back all sites
26 | await page.fill(`[placeholder='Search...']`, ``) // Clear the search
27 | await expect(site_locator).toHaveCount(initial_site_count, { timeout: 5000 })
28 |
29 | // TODO also test sort functionality
30 | })
31 |
32 | test(`can navigate between detail pages with arrow keys`, async ({ page }) => {
33 | await page.goto(`/`, { waitUntil: `networkidle` })
34 |
35 | await page.keyboard.press(`ArrowRight`)
36 |
37 | // Navigate to first page
38 | await page.goto(`/svelte.dev`, { waitUntil: `networkidle` })
39 |
40 | // Get the next URL from the "Next" link
41 | const next_url = await page.$eval(`a:has-text("Next")`, (el) =>
42 | el.closest(`a`)?.getAttribute(`href`),
43 | )
44 |
45 | await page.keyboard.press(`ArrowRight`)
46 | await page.waitForURL(`/${next_url}`)
47 | })
48 |
49 | test(`can navigate landing page with arrow keys`, async ({ page }) => {
50 | await page.goto(`/`, { waitUntil: `networkidle` })
51 |
52 | // expect no matches for ol > li.active
53 | expect(await page.$(`ol > li.active`)).toBe(null)
54 |
55 | // get active card after
56 | await page.keyboard.press(`ArrowRight`)
57 |
58 | // get slug of active site
59 | const slug = await page.$eval(`ol > li.active > a:has(> img)`, (card) =>
60 | card.getAttribute(`href`),
61 | )
62 |
63 | // press enter and check that we're on the detail page
64 | await page.keyboard.press(`Enter`)
65 | await page.waitForURL(`/${slug}`, {
66 | waitUntil: `networkidle`,
67 | })
68 | })
69 |
70 | // Test 404 page
71 | test(`shows 404 page for invalid slugs`, async ({ page }) => {
72 | const response = await page.goto(`/not-a-real-site`, {
73 | waitUntil: `networkidle`,
74 | })
75 |
76 | expect(response?.status()).toBe(404)
77 | await expect(
78 | page.locator(`text=Page 'not-a-real-site' not found`),
79 | ).toBeVisible()
80 | })
81 |
82 | // Test metadata
83 | test(`page has correct meta tags`, async ({ page }) => {
84 | await page.goto(`/svelte.dev`, { waitUntil: `networkidle` })
85 |
86 | // Check title
87 | await expect(page).toHaveTitle(`Svelte.dev | Awesome SvelteKit`)
88 |
89 | // Check meta description
90 | const description = await page.$eval(`meta[name="description"]`, (el) =>
91 | el.getAttribute(`content`),
92 | )
93 | expect(description).toBe(`Cybernetically enhanced web apps.`)
94 |
95 | // Check OG tags
96 | const og_title = await page.$eval(`meta[property="og:title"]`, (el) =>
97 | el.getAttribute(`content`),
98 | )
99 | expect(og_title).toBe(`Svelte.dev | Awesome SvelteKit`)
100 | })
101 |
--------------------------------------------------------------------------------
/site/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "strict": true,
5 | "module": "esnext",
6 | "target": "esnext",
7 | "moduleResolution": "bundler",
8 |
9 | // To have warnings/errors of the Svelte compiler at the correct position,
10 | // enable source maps by default.
11 | "sourceMap": true,
12 |
13 | "forceConsistentCasingInFileNames": true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/site/vite.config.ts:
--------------------------------------------------------------------------------
1 | import yaml from '@rollup/plugin-yaml'
2 | import { sveltekit } from '@sveltejs/kit/vite'
3 | import type { UserConfig } from 'vite'
4 | import {
5 | action_types,
6 | fetch_github_metadata,
7 | make_screenshots,
8 | update_readme,
9 | type Action,
10 | } from './src/tasks'
11 |
12 | const action = (process.env?.ACTION ?? `add-missing`) as Action
13 | if (!action_types.includes(action)) {
14 | const types_str = action_types.join(`|`)
15 | throw new Error(
16 | `Correct usage: ACTION=${types_str} vite dev, got ACTION=${action}\n`,
17 | )
18 | }
19 |
20 | if (!process.env.CI) {
21 | update_readme()
22 | fetch_github_metadata({ action })
23 | setTimeout(() => make_screenshots({ action }), 1000)
24 | }
25 |
26 | export default {
27 | plugins: [sveltekit(), yaml()],
28 |
29 | server: {
30 | fs: { allow: [`../..`] }, // needed to import from $root
31 | port: 3000,
32 | },
33 |
34 | preview: {
35 | port: 3000,
36 | },
37 | } satisfies UserConfig
38 |
--------------------------------------------------------------------------------
/sites.yml:
--------------------------------------------------------------------------------
1 | # The description key supports full markdown syntax.
2 |
3 | # New tags should strike a generality balance so they convey
4 | # useful information but are still applicable to more than just 1 site.
5 |
6 | # date_created is usually the date of first commit on a project which can be found
7 | # by opening the 'Insights > Network' tab on a repo (e.g.
8 | # https://github.com/janosh/awesome-sveltekit/network) and clicking
9 | # cmd/ctrl + left arrow to jump to the very start of the commit history.
10 | # site_src is the link to a subfolder if e.g. the site is part of a monorepo.
11 |
12 | - title: Svelte.dev
13 | url: https://svelte.dev
14 | repo: https://github.com/sveltejs/svelte
15 | # Sapper to SvelteKit migration in https://git.io/JXSh1
16 | site_src: https://github.com/sveltejs/svelte/tree/master/sites/svelte.dev
17 | npm: https://npmjs.com/package/svelte
18 | description: Cybernetically enhanced web apps.
19 | uses: [CodeMirror, Mapbox, Docker]
20 | tags: [docs, monorepo, dev tools, blog, REPL, NPM package]
21 | date_created: 2021-10-19 # https://git.io/JXShN
22 | date_added: 2021-11-11
23 |
24 | - title: Official SvelteKit docs
25 | url: https://kit.svelte.dev
26 | repo: https://github.com/sveltejs/kit
27 | site_src: https://github.com/sveltejs/kit/tree/main/documentation/docs
28 | npm: https://npmjs.com/package/@sveltejs/kit
29 | description: The fastest way to build Svelte apps.
30 | uses: [Netlify, PNPM]
31 | tags: [docs, monorepo, NPM package]
32 | date_created: 2021-03-10 # https://git.io/JcQYo
33 | date_added: 2021-05-25
34 |
35 | - title: SK Incognito
36 | url: https://sk-incognito.vercel.app
37 | repo: https://github.com/GrygrFlzr/kit-docs
38 | description: The unofficial SvelteKit docs.
39 | uses: [MDsveX, Tailwind, PNPM]
40 | tags: [docs, Vercel]
41 | date_created: 2021-02-15
42 | date_added: 2021-05-25
43 |
44 | - title: Scientific Diagrams
45 | url: https://janosh.github.io/diagrams
46 | repo: https://github.com/janosh/diagrams
47 | description: >-
48 | 100+ MIT-licensed scientific diagrams created with CeTZ (Typst) and/or TikZ
49 | (LaTeX).
50 | Mostly about physics, chemistry, and machine learning.
51 | tags: [research, science, diagrams, graphics, latex]
52 | uses: [TypeScript, svelte-multiselect, pre-commit, PNPM, svelte-enhanced-img]
53 | date_created: 2020-08-09
54 | date_added: 2021-05-25
55 |
56 | - title: markushatvan.com
57 | url: https://markushatvan.com
58 | description: Blog posts with code snippets, contact form with Svelte Forms Lib, RSS and sitemap.
59 | uses: [Tailwind, MDsveX, Svelte Forms Lib]
60 | tags: [blog, rss, sitemap]
61 | date_created: 2020-08-21
62 | date_added: 2021-05-25
63 |
64 | - title: Guess The Year
65 | url: https://guess-the-year.davjhan.com
66 | repo: https://github.com/davjhan/guess-the-year-game
67 | description:
68 | Round-based browser game where you guess the year in which famous event happened.
69 | Answers range between 1900-2021. You start with 100 points. The more your guess is off, the more points you loose.
70 | uses: [Tailwind, Netlify]
71 | tags: [game]
72 | date_created: 2021-05-09
73 | date_added: 2021-05-25
74 |
75 | - title: Gitpod
76 | url: https://gitpod.io
77 | repo: https://github.com/gitpod-io/gitpod
78 | description:
79 | Gitpod streamlines developer workflows by providing prebuilt, collaborative
80 | development environments in your browser - powered by VS Code.
81 | uses: [MDsveX, Tailwind, Netlify]
82 | tags: [commercial, dev tools, cloud computing]
83 | date_created: 2021-03-17
84 | date_added: 2021-05-31
85 |
86 | - title: SvelteKit Experiments
87 | url: https://sveltekit-demo-psi.vercel.app
88 | repo: https://github.com/tsukhu/sveltekit-demo
89 | description:
90 | A set of example apps built with SvelteKit and deployed on Vercel. As an ongoing project,
91 | this will continue to be enhanced with more examples to showcase the power of SvelteKit.
92 | uses: [Tailwind, Vercel, GraphQL, Firebase, Typescript]
93 | tags: [sample applications, cloud computing]
94 | date_created: 2021-05-27
95 | date_added: 2021-06-09
96 |
97 | - title: puruvj.dev
98 | url: https://puruvj.dev
99 | repo: https://github.com/puruvj/puruvjdev3
100 | description: Puru Vijay's blog site.
101 | uses: [Vercel, TypeScript, SCSS, Cloudinary]
102 | tags: [blog]
103 | date_created: 2021-05-06
104 | date_added: 2021-06-11
105 |
106 | - title: GraphCMS Starter Blog
107 | url: https://scottspence.com/2021/05/06/graphcms-svelte-starter
108 | repo: https://github.com/spences10/sveltekit-starter-blog
109 | description: This blog starter shows how to use SvelteKit with GraphCMS.
110 | uses: [Vercel, Tailwind, SCSS, GraphCMS]
111 | tags: [blog]
112 | date_created: 2021-05-16
113 | date_added: 2021-06-14
114 |
115 | - title: Beatbump
116 | url: https://beatbump.io
117 | repo: https://github.com/snuffyDev/beatbump
118 | description: Alternative frontend for YouTube Music.
119 | uses: [TypeScript, PostCSS, SCSS]
120 | tags: [blog]
121 | date_created: 2021-06-17
122 | date_added: 2021-07-08
123 |
124 | - title: Paper Trader Game
125 | url: https://paper-trader.davjhan.com
126 | repo: https://github.com/davjhan/paper-trader-game
127 | description:
128 | A simple web game where you are given 45 seconds and $100 to make as much money as you can trading a
129 | fake stock.
130 | tags: [game, mobile]
131 | uses: [Tailwind, Netlify, Chart.js, Plausible]
132 | date_created: 2021-07-25
133 | date_added: 2021-08-01
134 |
135 | - title: neovim craft
136 | url: https://neovimcraft.com
137 | repo: https://github.com/neurosnap/neovimcraft
138 | description: Curated list of neovim plugins.
139 | tags: [programming, resource list]
140 | uses: [TypeScript, Husky]
141 | date_created: 2021-07-18
142 | date_added: 2021-08-13
143 |
144 | - title: swyxkit
145 | url: https://swyxkit.netlify.app
146 | repo: https://github.com/sw-yx/swyxkit
147 | description: An opinionated blog starter for SvelteKit + Tailwind + Netlify. Refreshed for 2022!
148 | tags: [programming, blog, portfolio]
149 | uses: [Tailwind, Netlify]
150 | date_created: 2020-09-11
151 | date_added: 2021-09-01
152 |
153 | - title: Svelte Society
154 | url: https://sveltesociety.dev
155 | repo: https://github.com/svelte-society/sveltesociety.dev
156 | description: Global network of Svelte fans striving to promote Svelte and its ecosystem.
157 | tags: [programming, components, events, cheat sheets]
158 | uses: [TypeScript, Gitpod]
159 | date_created: 2020-05-03
160 | date_added: 2021-10-01
161 |
162 | - title: Flayks
163 | url: https://flayks.com
164 | description: Portfolio of Félix Péault, Digital Designer and Art Director.
165 | Sanity.io [[interview](https://sanity.io/blog/felix-peault-community-interview)],
166 | [[feature](https://sanity.io/projects/flayks-portfolio-2021)].
167 | tags: [portfolio]
168 | uses: [Sanity, anime.js, Vercel, TypeScript, SCSS, PostCSS]
169 | date_created: 2021-10-01
170 | date_added: 2021-10-01
171 |
172 | - title: Matt Fantinel
173 | url: https://fantinel.dev
174 | repo: https://github.com/matfantinel/matfantinel.github.io
175 | description: Personal website and blog of Matt Fantinel, web developer.
176 | uses: [MDsveX, SCSS, Iconoir, Plausible]
177 | tags: [personal, blog, portfolio, SCSS, MDsveX]
178 | date_created: 2021-09-07
179 | date_added: 2021-10-01
180 |
181 | - title: Level Up Tutorials
182 | url: https://leveluptutorials.com
183 | description: Video tutorials for web developers and designers.
184 | uses: [TypeScript, Google Tag Manager]
185 | tags: [tutorials, education, videos, web development, design]
186 | date_created: 2021-09-01
187 | date_added: 2021-10-5
188 |
189 | - title: JSchallenger
190 | url: https://jschallenger.com
191 | description: Free Javascript challenges. Learn Javascript online by solving coding exercises.
192 | uses: [Tailwind, DynamoDB, AWS]
193 | tags: [education, coding challenges, JavaScript]
194 | date_created: 2021-10-09
195 | date_added: 2021-10-9
196 |
197 | - title: Files
198 | url: https://files.community
199 | repo: https://github.com/files-community/website
200 | description: 3rd Party File Manager for Windows.
201 | uses: [PNPM, TypeScript, SCSS, Vercel]
202 | tags: [education, coding challenges, JavaScript]
203 | date_created: 2021-05-20
204 | date_added: 2021-10-11
205 |
206 | - title: Svelte Summit Fall 2021
207 | url: https://sveltesummit.com
208 | repo: https://github.com/svelte-society/svelte-summit
209 | description: The 4th virtual conference about Svelte
210 | uses: [Elder.js, PostCSS, Cloudflare]
211 | tags: [conference, community event, learning, news]
212 | date_created: 2021-07-25
213 | date_added: 2021-10-12
214 |
215 | - title: cybernetic.dev
216 | url: https://cybernetic.dev
217 | description: Data-centric UI experiments
218 | uses: [Three.js, Cytoscape.js, Vercel]
219 | tags: [data viz, statistics, machine learning]
220 | date_created: 2021-01-01
221 | date_added: 2021-10-19
222 |
223 | - title: digital criticism
224 | url: https://critique-digitale.ch
225 | repo: https://github.com/critique-digitale/critique-digitale.ch
226 | description: Scholarly conference in the digital humanities.
227 | uses: [MDsveX, MVP.css, Cloudflare]
228 | tags: [education, conference, community event, learning]
229 | date_created: 2021-07-06
230 | date_added: 2021-10-28
231 |
232 | - title: The Pudding
233 | url: https://pudding.cool
234 | repo: https://github.com/the-pudding/website
235 | description: Digital publication with emphasis on data viz.
236 | uses: [D3, PostCSS, Lodash, PNPM]
237 | tags: [digital publishing, data viz, education]
238 | date_created: 2021-09-03
239 | date_added: 2021-11-01
240 |
241 | - title: Urara
242 | url: https://urara-demo.netlify.app
243 | repo: https://github.com/importantimport/urara
244 | description: Sweet & Powerful SvelteKit Blog Template.
245 | uses: [MDsveX, PostCSS, Tailwind, DaisyUI, TypeScript, PNPM]
246 | tags: [blog, template]
247 | date_created: 2021-11-01
248 | date_added: 2021-11-05
249 |
250 | - title: connorrothschild.com
251 | url: https://connorrothschild.com
252 | repo: https://github.com/connorrothschild/v4
253 | description: Creative, content-based portfolio site of Connor Rothschild.
254 | uses: [MDsveX, GSAP, Netlify]
255 | tags: [blog, portfolio, animations]
256 | date_created: 2021-12-10
257 | date_added: 2021-12-11
258 |
259 | - title: Svelte Cubed
260 | url: https://svelte-cubed.vercel.app
261 | repo: https://github.com/Rich-Harris/svelte-cubed
262 | description: Three.js component library for Svelte. Abandoned. Check out [threlte](https://threlte.xyz) instead.
263 | uses: [TypeScript, PNPM, Vercel, MDsveX]
264 | tags: [components, library, animations, interactive]
265 | date_created: 2021-05-18
266 | date_added: 2021-12-19
267 |
268 | - title: Multi-Monitor Calculator
269 | url: https://multimonitorcalculator.com
270 | repo: https://github.com/KevinVandy/multi-monitor_calculator
271 | description: A tool for planning your multi-monitor setup.
272 | uses: [TypeScript, SMUI, Sass]
273 | tags: [interactive, 3d, calculator, monitor]
274 | date_created: 2018-06-08
275 | date_added: 2022-01-01
276 |
277 | - title: Modern Fluid Typography Editor
278 | url: https://modern-fluid-typography.vercel.app
279 | repo: https://github.com/codeAdrian/modern-fluid-typography-editor
280 | description: Easily create and fine-tune fluid typography values with Modern CSS `clamp()`.
281 | uses: [TypeScript, PostCSS, Chart.js, cssnano]
282 | tags: [developer tool, design, frontend, typography]
283 | date_created: 2021-11-29
284 | date_added: 2022-01-04
285 |
286 | - title: mermaid-live-editor
287 | url: https://mermaid.live
288 | repo: https://github.com/mermaid-js/mermaid-live-editor
289 | description: Edit, live preview and share mermaid charts and diagrams.
290 | uses: [TypeScript, Docker, Tailwind, PostCSS, Cypress, Husky]
291 | tags: [developer tool, diagrams, charts, graphics]
292 | date_created: 2019-11-13
293 | date_added: 2022-02-05
294 |
295 | - title: svelte-realworld
296 | url: https://github.com/gothinkster/realworld
297 | repo: https://github.com/sveltejs/realworld
298 | description: SvelteKit implementation of the RealWorld app.
299 | uses: [Netlify, MarkedJS]
300 | tags: [demo, performance, benchmark]
301 | date_created: 2017-04-20
302 | date_added: 2022-02-06
303 |
304 | - title: macos-web
305 | url: https://macos-web.app
306 | repo: https://github.com/PuruVJ/macos-web
307 | description: Replicate some of the macOS desktop experience on the web.
308 | uses: [TypeScript, Vercel, SCSS, PNPM, Iconify]
309 | tags: [demo, proof of concept, learning]
310 | date_created: 2021-08-12
311 | date_added: 2022-02-06
312 |
313 | - title: inlang
314 | url: https://inlang.com
315 | repo: https://github.com/inlang/monorepo
316 | description: Translate software products 2x faster.
317 | uses: [TypeScript, Vercel, IBM Carbon, Tailwind, Supabase]
318 | tags: [front-end, developer tool, localization, i18n]
319 | date_created: 2021-08-04
320 | date_added: 2022-02-23
321 |
322 | - title: Houdini GraphQL
323 | url: https://houdinigraphql.com
324 | repo: https://github.com/HoudiniGraphQL/houdini
325 | description: Documentation site for Houdini.
326 | uses: [PNPM, MDsveX, Husky, highlight.js]
327 | tags: [graphql, data fetching, front-end, developer tool, minimal]
328 | date_created: 2021-01-19
329 | date_added: 2022-03-22
330 |
331 | - title: ConcertMash
332 | url: https://concertmash.com
333 | repo: https://github.com/mcmxcdev/ConcertMash
334 | description: Easily generate a playlist for your upcoming concerts based on selected artists!
335 | uses: [TypeScript, Tailwind, Spotify Web API, Filepond, PNPM, Netlify]
336 | tags: [music, playlist-generator]
337 | date_created: 2022-03-15
338 | date_added: 2022-03-24
339 |
340 | - title: Layer Cake
341 | url: https://layercake.graphics
342 | repo: https://github.com/mhkeller/layercake
343 | description:
344 | Graphics framework for Svelte with colorful demo page. Can generate responsive
345 | graphics server-side that work without JavaScript.
346 | uses: [D3, GitHub Pages, JSDoc, Mocha, Underscore]
347 | tags: [charts, dataviz, graphics, layers, canvas, WebGL]
348 | date_created: 2018-10-18
349 | date_added: 2022-03-24
350 |
351 | - title: Pancake
352 | url: https://pancake-charts.surge.sh
353 | repo: https://github.com/Rich-Harris/pancake
354 | description:
355 | Experimental Svelte charting library. Visualize data with a combination of HTML,
356 | SVG and canvas/WebGL. Designed with server-side rendering in mind, so graphs potentially work without JavaScript.
357 | [Blog post](https://dev.to/richharris/a-new-technique-for-making-responsive-javascript-free-charts-gmp).
358 | uses: [D3, surge.sh, TypeScript]
359 | tags: [charts, dataviz, graphics, canvas, WebGL]
360 | date_created: 2019-10-01
361 | date_added: 2022-04-05
362 |
363 | - title: Svelte Headless UI
364 | url: https://svelte-headlessui.goss.io
365 | repo: https://github.com/rgossiaux/svelte-headlessui
366 | description: Unofficial Svelte port of Headless UI components.
367 | uses: [MDsveX, TypeScript, PostCSS, Tailwind, cssnano, Jest, rehype]
368 | tags: [component library, a11y]
369 | date_created: 2021-12-05
370 | date_added: 2022-04-14
371 |
372 | - title: Svelte Material UI
373 | url: https://sveltematerialui.com
374 | repo: https://github.com/hperrin/svelte-material-ui
375 | site_src: https://github.com/hperrin/svelte-material-ui/blob/-/packages/site
376 | npm: https://npmjs.com/package/svelte-material-ui
377 | description: Svelte Material UI Components.
378 | uses: [MDsveX, TypeScript, highlight.js, remark, Sass]
379 | tags: [material design, component library, NPM package]
380 | date_created: 2019-07-17
381 | date_added: 2022-04-16
382 |
383 | - title: Fluent Svelte
384 | url: https://fluent-svelte.vercel.app
385 | repo: https://github.com/Tropix126/fluent-svelte
386 | description: A faithful implementation of Microsoft's Fluent design system in Svelte.
387 | uses: [MDsveX, SCSS, TypeScript, remark, rehype, PNPM, PostCSS, Prism]
388 | tags: [windows ui, component library, design system]
389 | date_created: 2021-06-05
390 | date_added: 2022-04-24
391 |
392 | - title: SvelteKit on Edge
393 | url: https://sveltekit-on-the-edge.vercel.app
394 | repo: https://github.com/Rich-Harris/sveltekit-on-the-edge
395 | description:
396 | SvelteKit, running on the edge. In this case, Vercel's edge network.
397 | See .
398 | uses: [PNPM, Vercel]
399 | tags: [speed, caching, deployment]
400 | date_created: 2022-04-20
401 | date_added: 2022-04-24
402 |
403 | - title: evidence
404 | url: https://evidence.dev
405 | repo: https://github.com/evidence-dev/evidence
406 | site_src: https://github.com/evidence-dev/evidence/blob/-/sites/example-project
407 | description: Evidence enables analysts to deliver a polished business intelligence system using SQL and markdown.
408 | uses: [PNPM, Changesets, echarts, uvu]
409 | tags: [analytics, business-intelligence, sql, markdown, data viz, charts]
410 | date_created: 2021-05-27
411 | date_added: 2022-05-01
412 |
413 | - title: Coolify
414 | url: https://coolify.io
415 | repo: https://github.com/coollabsio/coolify
416 | description: An open-source & self-hostable Heroku / Netlify alternative.
417 | uses: [PNPM, TypeScript, Tailwind, sveltekit-i18n, PostCSS, Husky]
418 | tags: [self-hosting, deployment, sql, docker, redis, mongodb, databases]
419 | date_created: 2021-03-24
420 | date_added: 2022-05-10
421 |
422 | - title: Flowbite
423 | url: https://flowbite-svelte.com
424 | repo: https://github.com/themesberg/flowbite-svelte
425 | description: Official Svelte components built for Flowbite and Tailwind CSS. All interactivity handled by Svelte.
426 | uses: [PNPM, TypeScript, Tailwind, MDsveX, Prism, PostCSS, Playwright]
427 | tags: [component library, forms, modals, spinners, dark-mode, toast]
428 | date_created: 2022-01-24
429 | date_added: 2022-05-19
430 |
431 | - title: Elementari
432 | url: https://janosh.github.io/elementari
433 | repo: https://github.com/janosh/elementari
434 | npm: https://npmjs.com/package/elementari
435 | description:
436 | 'Interactive visualizations for materials science: periodic tables, 3d crystal
437 | structures (Molecules coming soon), Bohr atoms, nuclei, heatmaps, scatter plots.'
438 | uses:
439 | - TypeScript
440 | - pre-commit
441 | - D3
442 | - svelte-multiselect
443 | - Vitest
444 | - Playwright
445 | - PNPM
446 | - jsdom
447 | - GitHub Pages
448 | tags: [chemistry, science, data viz, plotting, NPM package]
449 | date_created: 2022-05-31
450 | date_added: 2022-06-02
451 |
452 | - title: Pixel Art Together
453 | url: https://pixelart.liveblocks.app
454 | repo: https://github.com/liveblocks/pixel-art-together
455 | description: A multiplayer pixel art editor powered by Liveblocks.
456 | uses: [TypeScript, Liveblocks, Tailwind, PostCSS, panzoom]
457 | tags: [art, drawing, multiplayer, collaboration]
458 | date_created: 2022-02-17
459 | date_added: 2022-06-02
460 |
461 | - title: Sveltestrap
462 | url: https://sveltestrap.js.org
463 | repo: https://github.com/bestguy/sveltestrap
464 | description: Bootstrap 4 & 5 components for Svelte.
465 | uses: [Storybook, Babel, Testing Library, Jest, PostCSS, Prism]
466 | tags: [component library]
467 | date_created: 2017-03-19
468 | date_added: 2022-06-02
469 |
470 | - title: Svelvet
471 | url: https://svelvet.io
472 | repo: https://github.com/oslabs-beta/Svelvet
473 | description: A lightweight Svelte component library for building interactive node-based flow diagrams.
474 | uses: [Playwright, D3, Testing Library, Tailwind, PostCSS, Vitest]
475 | tags: [flow diagrams, dev tool, component library, visualization]
476 | date_created: 2022-05-06
477 | date_added: 2022-06-02
478 |
479 | - title: Cryptgeon
480 | url: https://cryptgeon.org
481 | repo: https://github.com/cupcakearmy/cryptgeon
482 | site_src: https://github.com/cupcakearmy/cryptgeon/blob/-/packages/frontend
483 | description: A secure, open source notes and file sharing service inspired by PrivNote written in Rust & Svelte.
484 | uses: [svelte-intl-precompile, sanitize-html]
485 | tags: [file sharing, note sharing, secure notes, privacy, data protection]
486 | date_created: 2021-05-01
487 | date_added: 2022-06-09
488 |
489 | - title: Svelte Intl Precompile
490 | # weird url as temp fix for https://github.com/cibernox/svelte-intl-precompile/issues/58
491 | url: https://svelte-intl-precompile.com/en/docs/configuration
492 | repo: https://github.com/cibernox/svelte-intl-precompile
493 | description:
494 | I18n library for Svelte that analyzes your keys at build time for maximum performance and
495 | minimal footprint. Built as a SvelteKit plugin so good to use as a reference if you want to build one yourself.
496 | uses: [JS-Yaml, JSON5]
497 | tags: [i18n, translation, internationalization, localization]
498 | date_created: 2021-04-15
499 | date_added: 2022-06-09
500 |
501 | - title: Windmill
502 | url: https://windmill.dev
503 | repo: https://github.com/windmill-labs/windmill
504 | site_src: https://github.com/windmill-labs/windmill/blob/-/frontend
505 | description:
506 | An OSS developer platform to build multi-step automations and internal apps from minimal
507 | Python and Typescript scripts.
508 | uses:
509 | - TypeScript
510 | - Tailwind
511 | - cssnano
512 | - Cypress
513 | - PostCSS
514 | - svelte-highlight
515 | - svelte-markdown
516 | tags: [automation, dev tools, python, scripting, self-hostable]
517 | date_created: 2022-05-05
518 | date_added: 2022-06-17
519 |
520 | - title: Threlte
521 | url: https://threlte.xyz
522 | repo: https://github.com/threlte/threlte
523 | site_src: https://github.com/threlte/threlte/blob/-/apps/docs
524 | description:
525 | Threlte is a component library for Svelte to build and render three.js scenes declaratively
526 | and state-driven in Svelte apps.
527 | uses: [TypeScript, Three.js, Tailwind, PostCSS, Algolia, Iconify]
528 | tags: [component library, data viz, docs, monorepo, interactive]
529 | date_created: 2022-01-15
530 | date_added: 2022-07-17
531 |
532 | - title: svelte-french-toast
533 | url: https://svelte-french-toast.com
534 | repo: https://github.com/kbrgl/svelte-french-toast
535 | description: Svelte port of react-hot-toast, a lightweight, customizable toast notification library.
536 | uses: [TypeScript, Prism, Tailwind, PostCSS, PNPM]
537 | tags: [toast, notifications, snackbar]
538 | date_created: 2022-06-04
539 | date_added: 2022-07-24
540 |
541 | - title: Hexapipes
542 | url: https://hexapipes.vercel.app
543 | repo: https://github.com/gereleth/hexapipes
544 | description: Browser game where the goal is to correctly line up pipes placed on hexagonal puzzle pieces.
545 | uses: [Vercel]
546 | tags: [game]
547 | date_created: 2022-06-25
548 | date_added: 2022-07-28
549 |
550 | - title: Svelte Commerce
551 | url: https://demo.litekart.in
552 | repo: https://github.com/itswadesh/svelte-commerce
553 | description:
554 | Headless, Authentication, Cart & Checkout, TailwindCSS, Server Rendered, Proxy + API Integrated, Animations, Stores,
555 | Lazy Loading, Loading Indicators, Carousel, Instant Search, Faceted Filters, Typescript, Open Source, MIT license. 1
556 | command deploy to your own server, 1 click deploy to Netlify/Vercel.
557 | uses: [Vercel, Tailwind, TypeScript, svelte-toasts, PostCSS, cssnano]
558 | tags: [commerce, shopping, login, store]
559 | date_created: 2020-04-27
560 | date_added: 2022-08-23
561 |
562 | - title: Joy of Code
563 | url: https://joyofcode.xyz
564 | repo: https://github.com/mattcroat/joy-of-code
565 | description: 🌸 Joy of Code is a digital garden growing curious minds.
566 | uses:
567 | - GitHub API
568 | - Monaco
569 | - Playwright
570 | - Google Analytics
571 | - Supabase
572 | - Vercel
573 | - PNPM
574 | - Sass
575 | - TypeScript
576 | - remark
577 | - rehype
578 | tags: [blog, community, cms]
579 | date_created: 2020-10-19
580 | date_added: 2022-08-31
581 |
582 | - title: QWER
583 | url: https://svelte-qwer.vercel.app
584 | repo: https://github.com/kwchang0831/svelte-QWER
585 | description: ✒︎ Simply Awesome Blog Starter built with SvelteKit and ❤
586 | uses: [UnoCSS, TypeScript, MarkedJS, PNPM, Vercel]
587 | tags: [blog, template]
588 | date_created: 2022-06-28
589 | date_added: 2022-09-04
590 |
591 | - title: StemRoller
592 | url: https://stemroller.com
593 | repo: https://github.com/stemrollerapp/stemroller
594 | description: Isolate vocals, drums, bass, and other instrumental stems from any song
595 | uses: [Electron, Tailwind, Lodash, PostCSS, ytdl-core]
596 | tags: [desktop app, music, machine learning, deep learning]
597 | date_created: 2022-07-10
598 | date_added: 2022-09-07
599 |
600 | - title: Houses of World
601 | url: https://housesof.world
602 | description: A travel, photography and design project showcasing charismatic houses around the world.
603 | uses:
604 | - Typescript
605 | - SCSS
606 | - PostCSS
607 | - Motion One
608 | - OGL
609 | - WebGL
610 | - Directus
611 | - Swell Commerce
612 | - Vercel
613 | tags:
614 | - animations
615 | - transitions
616 | - photography
617 | - commerce
618 | - design
619 | - typography
620 | - graphic design
621 | date_created: 2022-09-27
622 | date_added: 2022-09-30
623 |
624 | - title: Skeleton
625 | url: https://skeleton.dev
626 | repo: https://github.com/Brain-Bones/skeleton
627 | description: A fully featured web UI toolkit for Svelte + Tailwind. Supports SvelteKit, Vite, and Astro.
628 | uses: [Vitest, PostCSS, highlight.js, Tailwind, Typescript, jsdom]
629 | tags: [component library]
630 | date_created: 2022-02-23
631 | date_added: 2022-10-30
632 |
633 | - title: Svelte MultiSelect
634 | url: https://janosh.github.io/svelte-multiselect
635 | repo: https://github.com/janosh/svelte-multiselect
636 | description: Keyboard-friendly, accessible and highly customizable multi-select component.
637 | npm: https://npmjs.com/package/svelte-multiselect
638 | uses:
639 | - Vitest
640 | - Playwright
641 | - Typescript
642 | - PNPM
643 | - pre-commit
644 | - rehype
645 | - jsdom
646 | - GitHub Pages
647 | - mdsvexamples
648 | tags: [forms, select component, interactive, NPM package]
649 | date_created: 2021-05-07
650 | date_added: 2022-10-30
651 |
652 | - title: Fireship
653 | url: https://fireship.io
654 | repo: https://github.com/fireship-io/fireship.io
655 | description:
656 | The Fireship PRO course platform frontend built with Svelte, Tailwind CSS, Hugo
657 | (for static content management), Firebase for Auth and DB, Flamethrower for routing.
658 | uses: [Tailwind, Hugo, Firebase, Flamethrower, Sass, PostCSS, Algolia]
659 | tags: [education, tutorials, web dev]
660 | date_created: 2019-01-07
661 | date_added: 2022-11-19
662 |
663 | - title: Intl Explorer
664 | url: https://intl-explorer.com
665 | repo: https://github.com/jesperorb/intl-explorer
666 | description: A tool for experimenting and trying out the ECMAScript Internationalization API.
667 | uses:
668 | [TypeScript, PNPM, Playwright, Vercel, svelte-highlight, Husky, commitlint]
669 | tags: [education, tutorials, web dev, interactive, playground]
670 | date_created: 2021-12-02
671 | date_added: 2022-11-27
672 |
673 | - title: SvelteKit Embed
674 | url: https://sveltekit-embed.vercel.app
675 | repo: https://github.com/spences10/sveltekit-embed
676 | description:
677 | SvelteKit embed components for YouTube, Vimeo, Twitter, Spotify, SoundCloud, StackBlitz,
678 | CodePen, AnchorFM, Simple Cast and more.
679 | uses:
680 | - TypeScript
681 | - PNPM
682 | - Vercel
683 | - MDsveX
684 | - Tailwind
685 | - PostCSS
686 | - Husky
687 | - Playwright
688 | - DaisyUI
689 | tags: [component library]
690 | date_created: 2021-07-17
691 | date_added: 2022-12-09
692 |
693 | - title: SvelteKit static blog starter
694 | url: https://sveltekit-static-starter.netlify.app
695 | repo: https://github.com/josh-collinsworth/sveltekit-blog-starter
696 | description:
697 | A pre-configured SvelteKit static blog starter, with Sass, Markdown, MDSvex, Rehype
698 | and background preloading.
699 | uses: [Netlify, MDsveX, Sass, Husky]
700 | tags: [blog starter, sass, markdown, mdsvex, page transitions, seo, rss]
701 | date_created: 2021-11-02
702 | date_added: 2023-01-11
703 |
704 | - title: svelte-put
705 | url: https://svelte-put.vnphanquang.com
706 | repo: https://github.com/vnphanquang/svelte-put
707 | description: Useful svelte stuff to put in your projects.
708 | uses: [Changesets, MDsveX, PostCSS, PNPM, Turbo]
709 | tags: [preprocessor, actions, component library]
710 | date_created: 2022-05-12
711 | date_added: 2023-01-14
712 |
713 | - title: sveltekit-mdsvex-blog
714 | url: https://sveltekit-mdsvex-blog.netlify.app
715 | repo: https://github.com/mvasigh/sveltekit-mdsvex-blog
716 | description: A minimalist blog template built with SvelteKit and MDsveX.
717 | uses: [TypeScript, MDsveX, Rehype, Remark, PNPM, Vitest, Playwright]
718 | tags: [blog, markdown, template, starter]
719 | date_created: 2021-05-08
720 | date_added: 2023-01-15
721 |
722 | - title: sveltekit-typescript-showcase
723 | url: https://github.com/ivanhofer/sveltekit-typescript-showcase
724 | repo: https://github.com/ivanhofer/sveltekit-typescript-showcase
725 | description: This repository shows how Svelte and SvelteKit work together with TypeScript.
726 | uses: [TypeScript]
727 | tags: [showcase, tutorial, learning]
728 | date_created: 2022-03-07
729 | date_added: 2023-02-24
730 |
731 | - title: svelte-command-palette
732 | url: https://svelte-command-palette.vercel.app
733 | repo: https://github.com/rohitpotato/svelte-command-palette
734 | npm: https://npmjs.com/package/svelte-command-palette
735 | description: Dead simple command palette with fuzzy search.
736 | uses: [TypeScript, Playwright, PostCSS, Tailwind, Release It, Vercel]
737 | tags: [cmd-palette, NPM package]
738 | date_created: 2022-06-17
739 | date_added: 2023-02-27
740 |
741 | - title: svelte-legos
742 | url: https://svelte-legos.surge.sh
743 | repo: https://github.com/ankurrsinghal/svelte-legos
744 | npm: https://npmjs.com/package/svelte-legos
745 | description: A library of Svelte actions.
746 | uses: [TypeScript, vitest, Tailwind, PostCSS, Prism]
747 | tags: [component library, NPM package, actions]
748 | date_created: 2023-02-21
749 | date_added: 2023-03-06
750 |
751 | - title: Watch This
752 | url: https://github.com/StephDietz/watch-this/issues/28
753 | repo: https://github.com/StephDietz/watch-this
754 | description:
755 | Uses OpenAI GPT-3 API and streaming Vercel edge functions to generate cinema
756 | recommendations based on user input.
757 | uses: [TypeScript, Vercel, Tailwind]
758 | tags: [content recommendation, edge functions, machine learning]
759 | date_created: 2023-01-26
760 | date_added: 2023-03-25
761 |
762 | - title: editable-website
763 | url: https://editable.website
764 | repo: https://github.com/michael/editable-website
765 | description: A SvelteKit template for building CMS-free editable websites.
766 | uses: [Tailwind, ProseMirror, AWS]
767 | tags: [postgres, richtext, editable, cms-free, template]
768 | date_created: 2023-04-04
769 | date_added: 2023-05-07
770 |
771 | - title: Chat UI
772 | url: https://huggingface.co/chat
773 | repo: https://github.com/huggingface/chat-ui
774 | description: Powers the HuggingChat app. Making the community's best AI chat models available to everyone.
775 | uses: [Huggingface Inference, Huggingface Hub, Tailwind]
776 | tags: [gpt, ai, nlp, chat, large language models]
777 | date_created: 2023-04-04
778 | date_added: 2023-05-11
779 |
780 | - title: Team Health Check
781 | url: https://team-health-check-coral.vercel.app
782 | repo: https://github.com/codehub-kirans/team-health-check
783 | description: A tool to visualize historical agile scrum team performance based on behavior anchors.
784 | uses: [PicoCSS, Pocketbase, Vercel]
785 | tags: [agile team health, agile spotify, team health check]
786 | date_created: 2023-05-05
787 | date_added: 2023-05-14
788 |
789 | - title: SvelteLab
790 | url: https://sveltelab.dev
791 | repo: https://github.com/sveltelab/sveltelab
792 | description: Supercharged REPL for Svelte (think StackBlitz specialized for Svelte)
793 | uses:
794 | - Playwright
795 | - vitest
796 | - Iconify
797 | - MarkedJS
798 | - TypeScript
799 | - PNPM
800 | - Pocketbase
801 | - Vercel
802 | - Tailwind
803 | tags: [repl, playground]
804 | date_created: 2023-02-23
805 | date_added: 2023-05-21
806 |
807 | - title: Significa.co
808 | url: https://significa.co
809 | repo: https://github.com/significa/significa.co
810 | description: Product Design and Development agency website, built with Sveltekit.
811 | uses:
812 | - TypeScript
813 | - Vercel
814 | - Tailwind
815 | - AWS
816 | - Dynamodb
817 | - Notion
818 | - Storyblock
819 | - Matter.js
820 | - Plausible
821 | tags: [company, agency]
822 | date_created: 2023-05-13
823 | date_added: 2023-05-22
824 |
825 | - title: shadcn-svelte
826 | url: https://shadcn-svelte.com
827 | site_src: https://github.com/huntabyte/shadcn-svelte/tree/main/sites/docs
828 | repo: https://github.com/huntabyte/shadcn-svelte
829 | description: shadcn/ui, but for Svelte.
830 | uses:
831 | [TypeScript, Vercel, Tailwind, PNPM, Changesets, vitest, Prism, MarkedJS]
832 | tags: [component library, community]
833 | date_created: 2023-05-15
834 | date_added: 2023-07-06
835 |
836 | - title: learn.svelte.dev
837 | url: https://learn.svelte.dev
838 | repo: https://github.com/sveltejs/learn.svelte.dev
839 | description: A soup-to-nuts interactive tutorial on how to build apps with Svelte.
840 | uses: [Vercel, PNPM, Prism, MarkedJS, CodeMirror]
841 | tags: [docs, tutorial, education, community]
842 | date_created: 2023-05-15
843 | date_added: 2023-07-27
844 |
845 | - title: Dotfyle
846 | url: https://dotfyle.com
847 | repo: https://github.com/codicocodes/dotfyle
848 | description: Discover and share Neovim configurations and plugins.
849 | uses: [TypeScript, PNPM, tRPC-SvelteKit, Prisma, Tailwind, Octokit]
850 | tags: [neovim, dotfiles, community]
851 | date_created: 2023-03-11
852 | date_added: 2023-08-01
853 |
854 | - title: tRPC-SvelteKit
855 | url: https://icflorescu.github.io/trpc-sveltekit
856 | repo: https://github.com/icflorescu/trpc-sveltekit
857 | description: End-to-end type-safe APIs for your SvelteKit applications.
858 | uses: [TypeScript, tRPC]
859 | tags: [community, open source, NPM package, docs, dev tools]
860 | date_created: 2022-02-10
861 | date_added: 2023-08-03
862 |
863 | - title: ASM Editor
864 | url: https://asm-editor.specy.app
865 | repo: https://github.com/Specy/asm-editor
866 | description: A modern webapp to write, run and learn M68K assembly code.
867 | uses: [TypeScript, Sass, Monaco, WASM]
868 | tags: [Javascript, interpreter, emulator, assembly, M68K]
869 | date_created: 2022-04-22
870 | date_added: 2023-09-30
871 |
872 | - title: Ollama Web UI
873 | url: https://ollamahub.com
874 | repo: https://github.com/ollama-webui/ollama-webui
875 | description: ChatGPT-Style Web UI Client for Ollama 🦙.
876 | uses: [highlight.js, MarkedJS, KaTeX, TypeScript, Tailwind]
877 | tags: [chatbot, AI, NLP, GPT, large language models, UI]
878 | date_created: 2023-10-07
879 | date_added: 2024-01-01
880 |
881 | - title: Immich
882 | url: https://immich.app
883 | repo: https://github.com/immich-app/immich
884 | description: Self-hosted photo and video backup solution directly from your mobile phone.
885 | uses: [NestJS, TypeScript, Tailwind, Flutter, Python]
886 | tags: [photos, photo-gallery, self-hosted, backup-tool, media]
887 | date_created: 2022-02-03
888 | date_added: 2024-01-22
889 |
890 | - title: Auth starter app
891 | url: https://passlock.dev
892 | site_src: https://github.com/passlock-dev/passlock/tree/master/packages/create-sveltekit/docs
893 | repo: https://github.com/passlock-dev/passlock
894 | description: SvelteKit template featuring Passkeys, Social Sign in and more.
895 | uses: [passlock, tailwind, superforms, lucia]
896 | tags: [security, authentication, passkeys, template]
897 | date_created: 2024-04-22
898 | date_added: 2024-05-17
899 |
900 | - title: Svead
901 | url: https://svead.pages.dev
902 | repo: https://github.com/spences10/svead
903 | description:
904 | Svead 🍺, a component that allows you to set head meta information, canonical, title,
905 | Twitter and Facebook Open Graph tags, and schema.org data.
906 | uses:
907 | - TypeScript
908 | - PNPM
909 | - Cloudflare Pages
910 | - MDsveX
911 | - Tailwind
912 | - PostCSS
913 | - DaisyUI
914 | tags: [component library]
915 | date_created: 2022-05-15
916 | date_added: 2024-05-31
917 |
918 | - title: barnsworthburning
919 | url: https://barnsworthburning.net
920 | repo: https://github.com/Aias/barnsworthburning
921 | description: An experimental commonplace book / digital garden with a richly
922 | interconnected set of links, notes, and ideas.
923 | uses:
924 | - TypeScript
925 | - Airtable
926 | - Radix
927 | - MarkedJS
928 | - Cloudflare Pages
929 | tags: [digital garden, commonplace, notes, networks, themes]
930 | date_created: 2019-07-09
931 | date_added: 2024-07-28
932 |
933 | - title: macOS-Themed Portfolio
934 | url: https://macosportfolio.netlify.app
935 | repo: https://github.com/ansxuman/macOS-Themed-Portfolio
936 | description: An interactive portfolio website inspired by the macOS interface.
937 | uses: [TypeScript, Tailwind, PM2, Cloudflare, Netlify, Nginx]
938 | tags: [portfolio, macos, theme, interactive, blogs, projects]
939 | date_created: 2024-10-13
940 | date_added: 2024-11-19
941 |
942 | - title: VERT
943 | url: https://vert.sh
944 | repo: https://github.com/VERT-sh/VERT
945 | description: A file converter that converts files client-side while being completely ad-free.
946 | uses: [TypeScript, Tailwind, Coolify, WASM, FFmpeg, libvips, Plausible]
947 | tags:
948 | [ffmpeg, conversion, wasm, vips, open source, graphics, video, audio, files]
949 | date_created: 2024-11-12
950 | date_added: 2025-02-20
951 | repo_stars: 3328
952 |
--------------------------------------------------------------------------------
/tools.yml:
--------------------------------------------------------------------------------
1 | airtable: https://airtable.com
2 | algolia: https://algolia.com
3 | anime.js: https://animejs.com
4 | aws: https://aws.amazon.com
5 | babel: https://babeljs.io
6 | changesets: https://github.com/changesets/changesets
7 | chart.js: https://chartjs.org
8 | cloudflare pages: https://pages.cloudflare.com
9 | cloudflare: https://cloudflare.com
10 | cloudinary: https://cloudinary.com
11 | codemirror: https://codemirror.net
12 | commitlint: https://github.com/conventional-changelog/commitlint
13 | coolify: https://coolify.io
14 | cssnano: https://cssnano.github.io/cssnano
15 | cypress: https://cypress.io
16 | cytoscape.js: https://js.cytoscape.org
17 | d3: https://d3js.org
18 | daisyui: https://daisyui.com
19 | directus: https://directus.io
20 | docker: https://docker.com
21 | dynamodb: https://aws.amazon.com/dynamodb
22 | echarts: https://github.com/apache/echarts
23 | elder.js: https://github.com/Elderjs/elderjs
24 | electron: https://electronjs.org
25 | ffmpeg: https://ffmpeg.org
26 | filepond: https://pqina.nl/filepond
27 | firebase: https://firebase.google.com
28 | flamethrower: https://github.com/fireship-io/flamethrower
29 | flutter: https://flutter.dev
30 | github api: https://docs.github.com/rest
31 | github pages: https://pages.github.com
32 | gitpod: https://gitpod.io
33 | google analytics: https://analytics.google.com
34 | google tag manager: https://tagmanager.google.com
35 | graphcms: https://graphcms.com
36 | graphql: https://graphql.org
37 | gsap: https://greensock.com/gsap
38 | highlight.js: https://highlightjs.org
39 | huggingface hub: https://github.com/huggingface/huggingface_hub
40 | huggingface inference: https://github.com/huggingface/text-generation-inference
41 | hugo: https://gohugo.io
42 | husky: https://github.com/typicode/husky
43 | ibm carbon: https://carbondesignsystem.com
44 | iconify: https://iconify.design
45 | iconoir: https://iconoir.com
46 | jest: https://jestjs.io
47 | js-yaml: https://github.com/nodeca/js-yaml
48 | jsdoc: https://jsdoc.app
49 | jsdom: https://github.com/jsdom/jsdom
50 | json5: https://github.com/json5/json5
51 | katex: https://github.com/KaTeX/KaTeX
52 | libvips: https://libvips.org
53 | liveblocks: https://liveblocks.io
54 | lodash: https://lodash.com
55 | lucia: https://github.com/lucia-auth/lucia
56 | mapbox: https://mapbox.com
57 | markedjs: https://marked.js.org
58 | matter.js: https://brm.io/matter-js
59 | mdsvex: https://github.com/pngwn/MDsveX
60 | mdsvexamples: https://github.com/mattjennings/mdsvexamples
61 | mocha: https://mochajs.org
62 | monaco: https://microsoft.github.io/monaco-editor
63 | motion one: https://motion.dev
64 | mvp.css: https://github.com/andybrewer/mvp
65 | nestjs: https://nestjs.com
66 | netlify: https://netlify.com
67 | nginx: https://nginx.org
68 | notion: https://notion.so
69 | octokit: https://github.com/octokit/octokit.js
70 | ogl: https://github.com/oframe/ogl
71 | panzoom: https://github.com/timmywil/panzoom
72 | passlock: https://github.com/passlock-dev/passkeys
73 | picocss: https://picocss.com
74 | plausible: https://plausible.io
75 | playwright: https://playwright.dev
76 | pm2: https://pm2.io
77 | pnpm: https://pnpm.io
78 | pocketbase: https://pocketbase.io
79 | postcss: https://postcss.org
80 | pre-commit: https://pre-commit.com
81 | prism: https://prismjs.com
82 | prisma: https://prisma.io
83 | prosemirror: https://prosemirror.net
84 | python: https://python.org
85 | radix: https://radix-ui.com
86 | rehype: https://github.com/rehypejs/rehype
87 | release it: https://github.com/release-it/release-it
88 | remark: https://github.com/remarkjs/remark
89 | sanitize-html: https://github.com/apostrophecms/sanitize-html
90 | sanity: https://sanity.io
91 | sass: https://sass-lang.com
92 | scss: https://sass-lang.com/documentation/syntax
93 | smui: https://sveltematerialui.com
94 | spotify web api: https://github.com/JMPerez/spotify-web-api-js
95 | storyblock: https://storyblok.com
96 | storybook: https://storybook.js.org
97 | supabase: https://supabase.com
98 | superforms: https://github.com/ciscoheat/sveltekit-superforms
99 | surge.sh: https://surge.sh
100 | svelte forms lib: https://github.com/tjinauyeung/svelte-forms-lib
101 | svelte-enhanced-img: https://svelte.dev/docs/kit/images#sveltejs-enhanced-img
102 | svelte-highlight: https://github.com/metonym/svelte-highlight
103 | svelte-intl-precompile: https://github.com/cibernox/svelte-intl-precompile
104 | svelte-markdown: https://github.com/pablo-abc/svelte-markdown
105 | svelte-multiselect: https://github.com/janosh/svelte-multiselect
106 | svelte-toasts: https://github.com/mzohaibqc/svelte-toasts
107 | sveltekit-i18n: https://github.com/sveltekit-i18n/lib
108 | swell commerce: https://swell.is
109 | tailwind: https://tailwindcss.com
110 | testing library: https://testing-library.com
111 | three.js: https://threejs.org
112 | trpc-sveltekit: https://github.com/icflorescu/trpc-sveltekit
113 | trpc: https://trpc.io
114 | turbo: https://github.com/vercel/turbo
115 | typescript: https://typescriptlang.org
116 | underscore: https://underscorejs.org
117 | unocss: https://github.com/unocss/unocss
118 | uvu: https://github.com/lukeed/uvu
119 | vercel: https://vercel.com
120 | vitest: https://vitest.dev
121 | wasm: https://webassembly.org
122 | webgl: https://developer.mozilla.org/docs/Web/API/WebGL_API
123 | ytdl-core: https://github.com/fent/node-ytdl-core
124 |
--------------------------------------------------------------------------------