diff --git a/apps/browser/.eslintrc.cjs b/apps/browser/.eslintrc.cjs
deleted file mode 100644
index d6c9537..0000000
--- a/apps/browser/.eslintrc.cjs
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = {
- root: true,
- env: { browser: true, es2020: true },
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:react-hooks/recommended',
- ],
- ignorePatterns: ['dist', '.eslintrc.cjs'],
- parser: '@typescript-eslint/parser',
- plugins: ['react-refresh'],
- rules: {
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
- },
-}
diff --git a/apps/browser/.gitignore b/apps/browser/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/apps/browser/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/apps/browser/.prettierrc.yaml b/apps/browser/.prettierrc.yaml
new file mode 100644
index 0000000..4c88663
--- /dev/null
+++ b/apps/browser/.prettierrc.yaml
@@ -0,0 +1,14 @@
+tabWidth: 4
+printWidth: 80
+singleQuote: true
+jsxSingleQuote: false
+semi: false
+arrowParens: avoid
+endOfLine: auto
+overrides:
+ - files: "*.{css,sass,scss}"
+ options:
+ tabWidth: 2
+plugins:
+ - prettier-plugin-tailwindcss
+parser: typescript
\ No newline at end of file
diff --git a/apps/browser/README.md b/apps/browser/README.md
new file mode 100644
index 0000000..e6cd94f
--- /dev/null
+++ b/apps/browser/README.md
@@ -0,0 +1,47 @@
+# Svelte + TS + Vite
+
+This template should help get you started developing with Svelte and TypeScript in Vite.
+
+## Recommended IDE Setup
+
+[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
+
+## Need an official Svelte framework?
+
+Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
+
+## Technical considerations
+
+**Why use this over SvelteKit?**
+
+- It brings its own routing solution which might not be preferable for some users.
+- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
+
+This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
+
+Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
+
+**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
+
+Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.
+
+**Why include `.vscode/extensions.json`?**
+
+Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
+
+**Why enable `allowJs` in the TS template?**
+
+While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.
+
+**Why is HMR not preserving my local component state?**
+
+HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr).
+
+If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
+
+```ts
+// store.ts
+// An extremely simple external store
+import { writable } from 'svelte/store'
+export default writable(0)
+```
diff --git a/apps/browser/eslint.config.js b/apps/browser/eslint.config.js
new file mode 100644
index 0000000..8b4e969
--- /dev/null
+++ b/apps/browser/eslint.config.js
@@ -0,0 +1,55 @@
+import globals from 'globals'
+import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
+import tslint from 'typescript-eslint'
+
+export default [
+ eslintPluginPrettierRecommended,
+ ...tslint.configs.recommended,
+ {
+ name: 'config',
+ languageOptions: {
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ globals: {
+ alt: true,
+ ...globals.browser,
+ ...globals.node,
+ },
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+ },
+ ignores: [
+ 'node_modules',
+ 'dist',
+ '.eslintrc.mjs',
+ '*.config.*',
+ '*.yaml',
+ '*.json',
+ '**/*.d.ts',
+ ],
+ // plugins: ['prettier', '@typescript-eslint'],
+ rules: {
+ 'no-console': 'off',
+ 'no-empty': 'off',
+ 'no-nested-ternary': 'off',
+ 'no-underscore-dangle': 'off',
+ 'no-unused-vars': 'off',
+ '@typescript-eslint/no-unused-vars': [
+ 'warn',
+ {
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^_',
+ caughtErrorsIgnorePattern: '^_',
+ },
+ ],
+ '@typescript-eslint/ban-ts-comment': 'off',
+ 'consistent-return': 'off',
+ quotes: 'off',
+ 'import/prefer-default-export': 'off',
+ 'import/no-dynamic-require': 'off',
+ },
+ },
+]
diff --git a/apps/browser/index.html b/apps/browser/index.html
index e4b78ea..7731d88 100644
--- a/apps/browser/index.html
+++ b/apps/browser/index.html
@@ -2,12 +2,11 @@