{"id":13632074,"url":"https://github.com/usagizmo/webapp-template","last_synced_at":"2025-04-05T16:09:30.092Z","repository":{"id":37008744,"uuid":"282880405","full_name":"usagizmo/webapp-template","owner":"usagizmo","description":"SvelteKit x Tailwind CSS x Supabase x Turborepo (pnpm)","archived":false,"fork":false,"pushed_at":"2025-03-11T11:24:54.000Z","size":6086,"stargazers_count":120,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T15:09:37.456Z","etag":null,"topics":["cspell","eslint","github-actions","graphql","hasura","husky","lint-staged","pnpm","prettier","supabase","svelte","sveltekit","tailwindcss","turborepo","typescript","vercel","vitest"],"latest_commit_sha":null,"homepage":"https://webapp-template.usagizmo.com","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/usagizmo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-27T11:39:31.000Z","updated_at":"2025-03-11T11:24:57.000Z","dependencies_parsed_at":"2023-02-16T00:31:27.379Z","dependency_job_id":"9b52b1f3-0c2a-442e-86c6-fc9e51d4f19f","html_url":"https://github.com/usagizmo/webapp-template","commit_stats":{"total_commits":908,"total_committers":3,"mean_commits":302.6666666666667,"dds":0.4889867841409692,"last_synced_commit":"433142ba8c934907b7a6fb1f7886344554af151b"},"previous_names":[],"tags_count":85,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagizmo%2Fwebapp-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagizmo%2Fwebapp-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagizmo%2Fwebapp-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagizmo%2Fwebapp-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/usagizmo","download_url":"https://codeload.github.com/usagizmo/webapp-template/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361691,"owners_count":20926643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cspell","eslint","github-actions","graphql","hasura","husky","lint-staged","pnpm","prettier","supabase","svelte","sveltekit","tailwindcss","turborepo","typescript","vercel","vitest"],"created_at":"2024-08-01T22:02:50.495Z","updated_at":"2025-04-05T16:09:30.070Z","avatar_url":"https://github.com/usagizmo.png","language":"Svelte","funding_links":[],"categories":["Svelte"],"sub_categories":[],"readme":"# WebApp Template\n\nMonorepo template for creating a web application.\n\n## What's inside?\n\n### Uses\n\n- [Turborepo](https://turborepo.org/) x [pnpm](https://pnpm.io/)\n- [Prettier](https://prettier.io/) (w/ [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) + [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss))\n- [ESLint](https://eslint.org/) / [CSpell](https://cspell.org/)\n- [lint-staged](https://github.com/okonet/lint-staged) / [husky](https://github.com/typicode/husky)\n- GitHub Actions (Linting + Testing (Validate `href` and `src` paths))\n- Execute `eslint --fix` and `prettier` when saving with VS Code\n\n### Apps and Packages\n\n#### `apps/`\n\n- [`backend`](./apps/backend/)  \n  A [Supabase](https://supabase.io/) [Local Dev / CLI](https://supabase.com/docs/guides/cli).\n- [`mockup`](./apps/mockup/) [[Demo](https://webapp-template-mockup.usagizmo.com/)]  \n  A starting point for building a static site.  \n  [Tailwind CSS](https://tailwindcss.com/) + Vanilla JS + [Vitest](https://vitest.dev/) (Check links + file names)\n- [`web`](./apps/web/) [[Demo](https://webapp-template.usagizmo.com/)]  \n  A starting point for building Svelte application.  \n  [SvelteKit](https://svelte.dev/docs/kit/) (w/ [Tailwind CSS](https://tailwindcss.com/))  \n  [Supabase](https://supabase.io/) / [Vitest](https://vitest.dev/)\n\n#### `packages/`\n\n- `eslint-config`  \n  ESLint 9 (Flat Config) for JavaScript and TypeScript.\n  - [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier)\n  - [eslint-plugin-svelte](https://github.com/sveltejs/eslint-plugin-svelte)\n  - [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort)\n  - [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc)\n\n### VS Code Extensions (Recommend)\n\n- [EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)\n- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)\n- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)\n- [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode)\n- [Tailwind CSS IntelliSense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss)\n\n## Commands\n\n```bash\npnpm i  # Resolve dependency packages and prepare .env files\n# Then set up /.env\n\n# Run command for each package (apps/ + packages/)\npnpm generate  # Generate and sync Supabase type definitions between backend and web apps\npnpm build     #\npnpm lint      # root: cspell + prettier --check\npnpm test      #\npnpm format    # root: Format project-words.txt + prettier --write\n\n# Optional\npnpm use-mockup  # For mockup-only usage: Removes unnecessary files/lines.\n```\n\n### Supabase Type Generation\n\nRun `pnpm generate` to generate Supabase types. This command will:\n\n1. Generate types in `apps/backend/$generated/supabase-types.ts`\n2. Copy the types to `apps/web/src/lib/$generated/supabase-types.ts`\n\nThis ensures type consistency between the backend and frontend applications.\n\n## List of listening port numbers\n\n- `apps/backend/` - Supabase Local Dev / CLI\n  - `54321`: API / GraphQL / S3 Storage\n  - `54322`: DB (Postgres)\n  - `54323`: Studio\n  - `54324`: Inbucket\n- `apps/web/` - SvelteKit application\n  - `5173`: Development server\n- `apps/mockup/` - Static site\n  - `3000`: BrowserSync server\n  - `49160`: Express server\n\n## Registering environment variables for GitHub / Vercel\n\nIf you need to prepare GitHub / Vercel environment, you need to set all environment variables (`.env` items) in each service.\n\n## Breaking changes\n\n### v2.0.0\n\n- **Update Framework/Library Versions:**\n  - Switch to Svelte 5 (integrated with TypeScript and using the Rune)\n  - Update to Tailwind CSS 4 (removed `tailwind.config.js`)\n  - Upgrade to ESLint 9 and implement Flat Config\n- **Backend Change:**\n  - Replace [Nhost](https://nhost.io/) with [Supabase](https://supabase.com/) for backend services\n\n### v1.9.0\n\n- **Language and Compiler Changes:**\n  - Migrated codebase from JavaScript to TypeScript\n  - Upgraded from Svelte 4 to Svelte 5 (Rune)\n- **Package Naming and Structure:**\n  - Custom package names now prefixed with `@repo/`\n  - Merged `eslint-config-custom-typescript` into `eslint-config-custom`\n\n### v1.6.0\n\n- **Language Reversion and Documentation:**\n  - Reverted codebase from TypeScript back to JavaScript, supplementing with JSDoc for documentation\n\n### v1.0.0\n\n- **Frontend Framework Change:**\n  - Switched from [Next.js](https://nextjs.org/) to [SvelteKit](https://svelte.dev/docs/kit/) for the frontend framework in `apps/web`\n- **Repository Rebranding:**\n  - Renamed `nextjs-template` repository to `webapp-template`\n\n### v0.23.0\n\n- **Backend Services Integration:**\n  - Replaced individual [Firebase](https://firebase.google.com/) and [Hasura](https://hasura.io/) applications with a unified [Nhost](https://nhost.io/) application in `apps/nhost`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusagizmo%2Fwebapp-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fusagizmo%2Fwebapp-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusagizmo%2Fwebapp-template/lists"}