assafvayner HF Staff commited on
Commit
52ec2ea
·
0 Parent(s):

chore: scaffold SvelteKit project with Tailwind, Vitest, adapter-node

Browse files
.env.example ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ STORAGE=local
2
+ LOCAL_DATA_DIR=.data
3
+ SESSION_SECRET=change-me-to-32-random-bytes-base64
4
+ CURRENCY=USD
5
+ # Only for STORAGE=hf:
6
+ # HF_TOKEN=hf_xxx
7
+ # HF_BUCKET=buckets/assafvayner/splitwise-data
8
+ # COMPACTION_INTERVAL_MS=3600000
.gitignore ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ node_modules
2
+ /build
3
+ /.svelte-kit
4
+ /package
5
+ .env
6
+ .env.*
7
+ !.env.example
8
+ .data
9
+ .data-*
10
+ /test-results
11
+ /playwright-report
12
+ .DS_Store
package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
package.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "splitwise",
3
+ "private": true,
4
+ "version": "0.1.0",
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
+ "test": "vitest run",
13
+ "test:watch": "vitest",
14
+ "test:e2e": "playwright test",
15
+ "spike": "tsx scripts/spike-bucket.ts"
16
+ },
17
+ "dependencies": {
18
+ "@huggingface/hub": "^2.16.1",
19
+ "zod": "^4.1.0"
20
+ },
21
+ "devDependencies": {
22
+ "@playwright/test": "^1.55.0",
23
+ "@sveltejs/adapter-node": "^5.2.0",
24
+ "@sveltejs/kit": "^2.27.0",
25
+ "@sveltejs/vite-plugin-svelte": "^6.1.0",
26
+ "@tailwindcss/vite": "^4.1.0",
27
+ "@types/node": "^22.0.0",
28
+ "svelte": "^5.38.0",
29
+ "svelte-check": "^4.3.0",
30
+ "tailwindcss": "^4.1.0",
31
+ "tsx": "^4.20.0",
32
+ "typescript": "^5.9.0",
33
+ "vite": "^7.1.0",
34
+ "vitest": "^3.2.0"
35
+ }
36
+ }
src/app.css ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import 'tailwindcss';
2
+
3
+ @layer base {
4
+ input,
5
+ select,
6
+ textarea {
7
+ @apply w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-base;
8
+ }
9
+ label {
10
+ @apply block text-sm font-medium text-gray-700;
11
+ }
12
+ }
src/app.d.ts ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import type { User } from '$lib/domain/types';
2
+ import type { App as SplitApp } from '$lib/server/app';
3
+
4
+ declare global {
5
+ namespace App {
6
+ interface Locals {
7
+ user: User | null;
8
+ app: SplitApp;
9
+ }
10
+ }
11
+ }
12
+
13
+ export {};
src/app.html ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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, viewport-fit=cover" />
6
+ <meta name="theme-color" content="#16a34a" />
7
+ <link rel="icon" href="data:," />
8
+ %sveltekit.head%
9
+ </head>
10
+ <body data-sveltekit-preload-data="hover" class="bg-gray-50 text-gray-900">
11
+ <div style="display: contents">%sveltekit.body%</div>
12
+ </body>
13
+ </html>
src/lib/domain/types.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ export interface User {
2
+ id: string;
3
+ }
src/lib/server/app.ts ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ export interface App {
2
+ placeholder: true;
3
+ }
src/routes/+page.svelte ADDED
@@ -0,0 +1 @@
 
 
1
+ <h1 class="p-4 text-xl font-semibold">Splitwise</h1>
svelte.config.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import adapter from '@sveltejs/adapter-node';
2
+ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
3
+
4
+ /** @type {import('@sveltejs/kit').Config} */
5
+ const config = {
6
+ preprocess: vitePreprocess(),
7
+ kit: {
8
+ adapter: adapter()
9
+ }
10
+ };
11
+
12
+ export default config;
tsconfig.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "extends": "./.svelte-kit/tsconfig.json",
3
+ "compilerOptions": {
4
+ "allowJs": true,
5
+ "checkJs": true,
6
+ "esModuleInterop": true,
7
+ "forceConsistentCasingInFileNames": true,
8
+ "resolveJsonModule": true,
9
+ "skipLibCheck": true,
10
+ "sourceMap": true,
11
+ "strict": true,
12
+ "moduleResolution": "bundler",
13
+ "module": "esnext",
14
+ "target": "es2022",
15
+ "types": ["node"]
16
+ },
17
+ "include": [
18
+ "./.svelte-kit/ambient.d.ts",
19
+ "./.svelte-kit/non-ambient.d.ts",
20
+ "./.svelte-kit/types/**/$types.d.ts",
21
+ "./vite.config.ts",
22
+ "./src/**/*.js",
23
+ "./src/**/*.ts",
24
+ "./src/**/*.svelte",
25
+ "./tests/**/*.ts",
26
+ "./scripts/**/*.ts"
27
+ ]
28
+ }
vite.config.ts ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { sveltekit } from '@sveltejs/kit/vite';
2
+ import tailwindcss from '@tailwindcss/vite';
3
+ import { defineConfig } from 'vitest/config';
4
+
5
+ export default defineConfig({
6
+ plugins: [tailwindcss(), sveltekit()],
7
+ test: {
8
+ include: ['tests/unit/**/*.test.ts'],
9
+ environment: 'node'
10
+ }
11
+ });