web based infinite canvas
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: scaffold web app (svelte kit bp)

+308
+23
apps/web/.gitignore
··· 1 + node_modules 2 + 3 + # Output 4 + .output 5 + .vercel 6 + .netlify 7 + .wrangler 8 + /.svelte-kit 9 + /build 10 + 11 + # OS 12 + .DS_Store 13 + Thumbs.db 14 + 15 + # Env 16 + .env 17 + .env.* 18 + !.env.example 19 + !.env.test 20 + 21 + # Vite 22 + vite.config.js.timestamp-* 23 + vite.config.ts.timestamp-*
+1
apps/web/.npmrc
··· 1 + engine-strict=true
+9
apps/web/.prettierignore
··· 1 + # Package Managers 2 + package-lock.json 3 + pnpm-lock.yaml 4 + yarn.lock 5 + bun.lock 6 + bun.lockb 7 + 8 + # Miscellaneous 9 + /static/
+17
apps/web/.prettierrc
··· 1 + { 2 + "useTabs": true, 3 + "singleQuote": true, 4 + "trailingComma": "none", 5 + "printWidth": 100, 6 + "plugins": [ 7 + "prettier-plugin-svelte" 8 + ], 9 + "overrides": [ 10 + { 11 + "files": "*.svelte", 12 + "options": { 13 + "parser": "svelte" 14 + } 15 + } 16 + ] 17 + }
+38
apps/web/README.md
··· 1 + # sv 2 + 3 + Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). 4 + 5 + ## Creating a project 6 + 7 + If you're seeing this, you've probably already done this step. Congrats! 8 + 9 + ```sh 10 + # create a new project in the current directory 11 + npx sv create 12 + 13 + # create a new project in my-app 14 + npx sv create my-app 15 + ``` 16 + 17 + ## Developing 18 + 19 + Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 20 + 21 + ```sh 22 + npm run dev 23 + 24 + # or start the server and open the app in a new browser tab 25 + npm run dev -- --open 26 + ``` 27 + 28 + ## Building 29 + 30 + To create a production version of your app: 31 + 32 + ```sh 33 + npm run build 34 + ``` 35 + 36 + You can preview the production build with `npm run preview`. 37 + 38 + > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
+41
apps/web/eslint.config.js
··· 1 + import prettier from 'eslint-config-prettier'; 2 + import { fileURLToPath } from 'node:url'; 3 + import { includeIgnoreFile } from '@eslint/compat'; 4 + import js from '@eslint/js'; 5 + import svelte from 'eslint-plugin-svelte'; 6 + import { defineConfig } from 'eslint/config'; 7 + import globals from 'globals'; 8 + import ts from 'typescript-eslint'; 9 + import svelteConfig from './svelte.config.js'; 10 + 11 + const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); 12 + 13 + export default defineConfig( 14 + includeIgnoreFile(gitignorePath), 15 + js.configs.recommended, 16 + ...ts.configs.recommended, 17 + ...svelte.configs.recommended, 18 + prettier, 19 + ...svelte.configs.prettier, 20 + { 21 + languageOptions: { globals: { ...globals.browser, ...globals.node } }, 22 + 23 + rules: { 24 + // typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects. 25 + // see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors 26 + "no-undef": 'off' 27 + } 28 + }, 29 + { 30 + files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], 31 + 32 + languageOptions: { 33 + parserOptions: { 34 + projectService: true, 35 + extraFileExtensions: ['.svelte'], 36 + parser: ts.parser, 37 + svelteConfig 38 + } 39 + } 40 + } 41 + );
+42
apps/web/package.json
··· 1 + { 2 + "name": "web", 3 + "private": true, 4 + "version": "0.0.1", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite dev", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "prepare": "svelte-kit sync || echo ''", 11 + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 13 + "lint": "eslint . && prettier --check .", 14 + "test:unit": "vitest", 15 + "test": "npm run test:unit -- --run", 16 + "format": "prettier --write ." 17 + }, 18 + "devDependencies": { 19 + "@eslint/compat": "^1.4.0", 20 + "@eslint/js": "^9.39.1", 21 + "@sveltejs/adapter-static": "^3.0.10", 22 + "@sveltejs/kit": "^2.49.1", 23 + "@sveltejs/vite-plugin-svelte": "^6.2.1", 24 + "@types/node": "^24", 25 + "@vitest/browser-playwright": "^4.0.15", 26 + "eslint": "^9.39.1", 27 + "eslint-config-prettier": "^10.1.8", 28 + "eslint-plugin-svelte": "^3.13.1", 29 + "globals": "^16.5.0", 30 + "playwright": "^1.57.0", 31 + "prettier": "^3.7.4", 32 + "prettier-plugin-svelte": "^3.4.0", 33 + "svelte": "^5.45.6", 34 + "svelte-check": "^4.3.4", 35 + "typescript": "^5.9.3", 36 + "typescript-eslint": "^8.48.1", 37 + "vite": "^7.2.6", 38 + "vite-plugin-devtools-json": "^1.0.0", 39 + "vitest": "^4.0.15", 40 + "vitest-browser-svelte": "^2.0.1" 41 + } 42 + }
+13
apps/web/src/app.d.ts
··· 1 + // See https://svelte.dev/docs/kit/types#app.d.ts 2 + // for information about these interfaces 3 + declare global { 4 + namespace App { 5 + // interface Error {} 6 + // interface Locals {} 7 + // interface PageData {} 8 + // interface PageState {} 9 + // interface Platform {} 10 + } 11 + } 12 + 13 + export {};
+11
apps/web/src/app.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 + %sveltekit.head% 7 + </head> 8 + <body data-sveltekit-preload-data="hover"> 9 + <div style="display: contents">%sveltekit.body%</div> 10 + </body> 11 + </html>
+7
apps/web/src/demo.spec.ts
··· 1 + import { describe, it, expect } from 'vitest'; 2 + 3 + describe('sum test', () => { 4 + it('adds 1 + 2 to equal 3', () => { 5 + expect(1 + 2).toBe(3); 6 + }); 7 + });
+1
apps/web/src/lib/assets/favicon.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.157 22.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282 29.608A29.92 29.92 0 0 0 8.764 49.65a31.5 31.5 0 0 0 3.108 20.231 30 30 0 0 0-4.477 11.183 31.9 31.9 0 0 0 5.448 24.116c10.402 14.887 30.942 19.297 45.791 9.835l26.083-16.624A29.92 29.92 0 0 0 98.235 78.35a31.53 31.53 0 0 0-3.105-20.232 30 30 0 0 0 4.474-11.182 31.88 31.88 0 0 0-5.447-24.116" style="fill:#ff3e00"/><path d="M45.817 106.582a20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.503 18 18 0 0 1 .624-2.435l.49-1.498 1.337.981a33.6 33.6 0 0 0 10.203 5.098l.97.294-.09.968a5.85 5.85 0 0 0 1.052 3.878 6.24 6.24 0 0 0 6.695 2.485 5.8 5.8 0 0 0 1.603-.704L69.27 76.28a5.43 5.43 0 0 0 2.45-3.631 5.8 5.8 0 0 0-.987-4.371 6.24 6.24 0 0 0-6.698-2.487 5.7 5.7 0 0 0-1.6.704l-9.953 6.345a19 19 0 0 1-5.296 2.326 20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.502 17.99 17.99 0 0 1 8.13-12.052l26.081-16.623a19 19 0 0 1 5.3-2.329 20.72 20.72 0 0 1 22.237 8.243 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-.624 2.435l-.49 1.498-1.337-.98a33.6 33.6 0 0 0-10.203-5.1l-.97-.294.09-.968a5.86 5.86 0 0 0-1.052-3.878 6.24 6.24 0 0 0-6.696-2.485 5.8 5.8 0 0 0-1.602.704L37.73 51.72a5.42 5.42 0 0 0-2.449 3.63 5.79 5.79 0 0 0 .986 4.372 6.24 6.24 0 0 0 6.698 2.486 5.8 5.8 0 0 0 1.602-.704l9.952-6.342a19 19 0 0 1 5.295-2.328 20.72 20.72 0 0 1 22.237 8.242 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-8.13 12.053l-26.081 16.622a19 19 0 0 1-5.3 2.328" style="fill:#fff"/></svg>
+1
apps/web/src/lib/index.ts
··· 1 + // place files you want to import through the `$lib` alias in this folder.
+11
apps/web/src/routes/+layout.svelte
··· 1 + <script lang="ts"> 2 + import favicon from '$lib/assets/favicon.svg'; 3 + 4 + let { children } = $props(); 5 + </script> 6 + 7 + <svelte:head> 8 + <link rel="icon" href={favicon} /> 9 + </svelte:head> 10 + 11 + {@render children()}
+2
apps/web/src/routes/+page.svelte
··· 1 + <h1>Welcome to SvelteKit</h1> 2 + <p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
+13
apps/web/src/routes/page.svelte.spec.ts
··· 1 + import { page } from 'vitest/browser'; 2 + import { describe, expect, it } from 'vitest'; 3 + import { render } from 'vitest-browser-svelte'; 4 + import Page from './+page.svelte'; 5 + 6 + describe('/+page.svelte', () => { 7 + it('should render h1', async () => { 8 + render(Page); 9 + 10 + const heading = page.getByRole('heading', { level: 1 }); 11 + await expect.element(heading).toBeInTheDocument(); 12 + }); 13 + });
+3
apps/web/static/robots.txt
··· 1 + # allow crawling everything by default 2 + User-agent: * 3 + Disallow:
+13
apps/web/svelte.config.js
··· 1 + import adapter from '@sveltejs/adapter-static'; 2 + import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 + 4 + /** @type {import('@sveltejs/kit').Config} */ 5 + const config = { 6 + // Consult https://svelte.dev/docs/kit/integrations 7 + // for more information about preprocessors 8 + preprocess: vitePreprocess(), 9 + 10 + kit: { adapter: adapter() } 11 + }; 12 + 13 + export default config;
+20
apps/web/tsconfig.json
··· 1 + { 2 + "extends": "./.svelte-kit/tsconfig.json", 3 + "compilerOptions": { 4 + "rewriteRelativeImportExtensions": true, 5 + "allowJs": true, 6 + "checkJs": true, 7 + "esModuleInterop": true, 8 + "forceConsistentCasingInFileNames": true, 9 + "resolveJsonModule": true, 10 + "skipLibCheck": true, 11 + "sourceMap": true, 12 + "strict": true, 13 + "moduleResolution": "bundler" 14 + } 15 + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias 16 + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files 17 + // 18 + // To make changes to top-level options such as include and exclude, we recommend extending 19 + // the generated config; see https://svelte.dev/docs/kit/configuration#typescript 20 + }
+42
apps/web/vite.config.ts
··· 1 + import devtoolsJson from 'vite-plugin-devtools-json'; 2 + import { defineConfig } from 'vitest/config'; 3 + import { playwright } from '@vitest/browser-playwright'; 4 + import { sveltekit } from '@sveltejs/kit/vite'; 5 + 6 + export default defineConfig({ 7 + plugins: [sveltekit(), devtoolsJson()], 8 + 9 + test: { 10 + expect: { requireAssertions: true }, 11 + 12 + projects: [ 13 + { 14 + extends: './vite.config.ts', 15 + 16 + test: { 17 + name: 'client', 18 + 19 + browser: { 20 + enabled: true, 21 + provider: playwright(), 22 + instances: [{ browser: 'chromium', headless: true }] 23 + }, 24 + 25 + include: ['src/**/*.svelte.{test,spec}.{js,ts}'], 26 + exclude: ['src/lib/server/**'] 27 + } 28 + }, 29 + 30 + { 31 + extends: './vite.config.ts', 32 + 33 + test: { 34 + name: 'server', 35 + environment: 'node', 36 + include: ['src/**/*.{test,spec}.{js,ts}'], 37 + exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'] 38 + } 39 + } 40 + ] 41 + } 42 + });