Monorepo template for creating a web application.
- Turborepo x pnpm
- Prettier (w/ prettier-plugin-svelte + prettier-plugin-tailwindcss)
- ESLint / CSpell
- lint-staged / husky
- GitHub Actions (Linting + Testing (Validate
href
andsrc
paths)) - Execute
eslint --fix
andprettier
when saving with VS Code
backend
A Supabase Local Dev / CLI.mockup
[Demo]
A starting point for building a static site.
Tailwind CSS + Vanilla JS + Vitest (Check links + file names)web
[Demo]
A starting point for building Svelte application.
SvelteKit (w/ Tailwind CSS)
Supabase / Vitest
eslint-config
ESLint 9 (Flat Config) for JavaScript and TypeScript.
pnpm i # Resolve dependency packages and prepare .env files
# Then set up /.env
# Run command for each package (apps/ + packages/)
pnpm generate # Generate and sync Supabase type definitions between backend and web apps
pnpm build #
pnpm lint # root: cspell + prettier --check
pnpm test #
pnpm format # root: Format project-words.txt + prettier --write
Run pnpm generate
to generate Supabase types. This command will:
- Generate types in
apps/backend/$generated/supabase-types.ts
- Copy the types to
apps/web/src/lib/$generated/supabase-types.ts
This ensures type consistency between the backend and frontend applications.
apps/backend/
- Supabase Local Dev / CLI54321
: API / GraphQL / S3 Storage54322
: DB (Postgres)54323
: Studio54324
: Inbucket
apps/web/
- SvelteKit application5173
: Development server
apps/mockup/
- Static site3000
: BrowserSync server49160
: Express server
If you need to prepare GitHub / Vercel environment, you need to set all environment variables (.env
items) in each service.
- Update Framework/Library Versions:
- Switch to Svelte 5 (integrated with TypeScript and using the Rune)
- Update to Tailwind CSS 4 (removed
tailwind.config.js
) - Upgrade to ESLint 9 and implement Flat Config
- Backend Change:
- Language and Compiler Changes:
- Migrated codebase from JavaScript to TypeScript
- Upgraded from Svelte 4 to Svelte 5 (Rune)
- Package Naming and Structure:
- Custom package names now prefixed with
@repo/
- Merged
eslint-config-custom-typescript
intoeslint-config-custom
- Custom package names now prefixed with
- Language Reversion and Documentation:
- Reverted codebase from TypeScript back to JavaScript, supplementing with JSDoc for documentation
- Frontend Framework Change:
- Repository Rebranding:
- Renamed
nextjs-template
repository towebapp-template
- Renamed