diff --git a/apps/duckguessr/app/app.vue b/apps/duckguessr/app/app.vue
index 8d9da7318..ae4e55b86 100644
--- a/apps/duckguessr/app/app.vue
+++ b/apps/duckguessr/app/app.vue
@@ -1,8 +1,10 @@
+
diff --git a/apps/duckguessr/env.d.ts b/apps/duckguessr/env.d.ts
index b7c7d1b2e..123276ea4 100644
--- a/apps/duckguessr/env.d.ts
+++ b/apps/duckguessr/env.d.ts
@@ -1,6 +1,7 @@
///
interface ImportMetaEnv {
+ readonly MODE: string;
readonly VITE_CLOUDINARY_URL_ROOT: string;
readonly VITE_DM_URL: string;
readonly VITE_DM_SOCKET_URL: string;
diff --git a/apps/duckguessr/nuxt.config.ts b/apps/duckguessr/nuxt.config.ts
index 46a3cbe11..9153e31a2 100644
--- a/apps/duckguessr/nuxt.config.ts
+++ b/apps/duckguessr/nuxt.config.ts
@@ -63,6 +63,7 @@ export default defineNuxtConfig({
],
"@nuxt/eslint",
"unplugin-icons/nuxt",
+ "@pinia/colada-nuxt",
],
// Auto-imports
@@ -114,6 +115,31 @@ export default defineNuxtConfig({
resolve: {
dedupe: ["vue", "vue-i18n", "@vueuse/core", "bootstrap-vue-next"],
},
+ server: {
+ watch: {
+ // Reduce file watching to prevent EMFILE errors
+ ignored: [
+ "**/node_modules/**",
+ "**/.git/**",
+ "**/dist/**",
+ "**/.nuxt/**",
+ "**/.output/**",
+ "**/storybook-static/**",
+ "**/.turbo/**",
+ "**/api/prisma/client_*/**",
+ "**/.pnpm-store/**",
+ "**/coverage/**",
+ "**/.storybook/**",
+ "**/.pnpm/**",
+ "**/builds/**",
+ ],
+ // Use polling as fallback if native watching fails
+ usePolling: false,
+ // Reduce the number of files watched
+ interval: 100,
+ binaryInterval: 300,
+ },
+ },
},
// App configuration
@@ -129,7 +155,20 @@ export default defineNuxtConfig({
sourcemap: {
client: "hidden",
+ server: false,
},
- ignore: ["**/node_modules", "**/dist", ".git/**", "api/prisma/client_*"],
+ ignore: [
+ "**/node_modules",
+ "**/dist",
+ ".git/**",
+ "api/prisma/client_*",
+ "**/.pnpm-store/**",
+ "**/coverage/**",
+ "**/.storybook/**",
+ "**/.nuxt/**",
+ "**/.output/**",
+ "**/storybook-static/**",
+ "**/.turbo/**",
+ ],
});
diff --git a/apps/duckguessr/package.json b/apps/duckguessr/package.json
index 70cb69d34..cce25feef 100644
--- a/apps/duckguessr/package.json
+++ b/apps/duckguessr/package.json
@@ -24,6 +24,8 @@
"dependencies": {
"@nuxtjs/i18n": "^10.2.1",
"@nuxtjs/storybook": "^9.0.1",
+ "@pinia/colada": "^0.21.2",
+ "@pinia/colada-nuxt": "^0.3.1",
"@pinia/nuxt": "^0.11.3",
"@sentry/nuxt": "^10.30.0",
"@unhead/vue": "^2.0.19",
@@ -51,6 +53,7 @@
"@nuxt/devtools": "^3.1.1",
"@nuxt/eslint": "^1.12.1",
"@nuxt/typescript-build": "^3.0.2",
+ "@pinia/colada-devtools": "^0.4.2",
"@storybook-vue/nuxt": "^9.0.1",
"@storybook/vue3": "^9.1.16",
"@types/eslint": "^9.6.1",
diff --git a/apps/duckguessr/pnpm-lock.yaml b/apps/duckguessr/pnpm-lock.yaml
index e6b3a980d..6b4cbd4dd 100644
--- a/apps/duckguessr/pnpm-lock.yaml
+++ b/apps/duckguessr/pnpm-lock.yaml
@@ -14,6 +14,12 @@ importers:
'@nuxtjs/storybook':
specifier: ^9.0.1
version: 9.0.1(@types/node@22.19.3)(eslint@9.39.2(jiti@2.6.1))(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.1)(@types/node@22.19.3)(@vue/compiler-sfc@3.5.25)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(rollup@4.53.3)(sass@1.96.0)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.7(@types/node@22.19.3)(jiti@2.6.1)(sass@1.96.0)(terser@5.44.1)(yaml@2.8.2))(vue-tsc@3.1.5(typescript@5.9.3))(yaml@2.8.2))(optionator@0.9.4)(rollup@4.53.3)(sass@1.96.0)(storybook@10.1.8(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.44.1)(typescript@5.9.3)(vite@7.2.7(@types/node@22.19.3)(jiti@2.6.1)(sass@1.96.0)(terser@5.44.1)(yaml@2.8.2))(vue-tsc@3.1.5(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3))(yaml@2.8.2)
+ '@pinia/colada':
+ specifier: ^0.21.2
+ version: 0.21.2(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))
+ '@pinia/colada-nuxt':
+ specifier: ^0.3.1
+ version: 0.3.1(@pinia/colada@0.21.2(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)))(magicast@0.5.1)
'@pinia/nuxt':
specifier: ^0.11.3
version: 0.11.3(magicast@0.5.1)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))
@@ -90,6 +96,9 @@ importers:
'@nuxt/typescript-build':
specifier: ^3.0.2
version: 3.0.2(@nuxt/types@2.18.1)(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)(webpack@5.102.1(esbuild@0.27.1))
+ '@pinia/colada-devtools':
+ specifier: ^0.4.2
+ version: 0.4.2
'@storybook-vue/nuxt':
specifier: ^9.0.1
version: 9.0.1(@types/node@22.19.3)(eslint@9.39.2(jiti@2.6.1))(magicast@0.5.1)(nuxt@4.2.2(@parcel/watcher@2.5.1)(@types/node@22.19.3)(@vue/compiler-sfc@3.5.25)(cac@6.7.14)(db0@0.3.4)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.8.2)(magicast@0.5.1)(optionator@0.9.4)(rollup@4.53.3)(sass@1.96.0)(terser@5.44.1)(typescript@5.9.3)(vite@7.2.7(@types/node@22.19.3)(jiti@2.6.1)(sass@1.96.0)(terser@5.44.1)(yaml@2.8.2))(vue-tsc@3.1.5(typescript@5.9.3))(yaml@2.8.2))(optionator@0.9.4)(rollup@4.53.3)(sass@1.96.0)(storybook@10.1.8(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.44.1)(typescript@5.9.3)(vite@7.2.7(@types/node@22.19.3)(jiti@2.6.1)(sass@1.96.0)(terser@5.44.1)(yaml@2.8.2))(vue-tsc@3.1.5(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3))(yaml@2.8.2)
@@ -1751,6 +1760,20 @@ packages:
resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
engines: {node: '>= 10.0.0'}
+ '@pinia/colada-devtools@0.4.2':
+ resolution: {integrity: sha512-BikO2+rfSNeUyKoHncWDQINEEiux3yN4/JbAoCjt6Tv32f7sG8aBFiHkXJ/xWa3kIxAP9Xgj/+CmTueTYzj7fA==}
+
+ '@pinia/colada-nuxt@0.3.1':
+ resolution: {integrity: sha512-JqByosIs2nNEV74fYqj89f5NJKPBPmEKVxuVXnh1PWt1dbC3B7hKx8SqkXJctk17aU9qxGxoq5Yx0paHPAMCNw==}
+ peerDependencies:
+ '@pinia/colada': '>=0.21.2'
+
+ '@pinia/colada@0.21.2':
+ resolution: {integrity: sha512-k2epk1jed5cTmNA7l00UtsFRyqw9HfyU6WO4cV0BMUT3sSE4CMLCilprbLAL5h2bxD76WSiglciI/6o+Uh7Vzw==}
+ peerDependencies:
+ pinia: ^2.2.6 || ^3.0.0
+ vue: ^3.5.17
+
'@pinia/nuxt@0.11.3':
resolution: {integrity: sha512-7WVNHpWx4qAEzOlnyrRC88kYrwnlR/PrThWT0XI1dSNyUAXu/KBv9oR37uCgYkZroqP5jn8DfzbkNF3BtKvE9w==}
peerDependencies:
@@ -6143,8 +6166,8 @@ packages:
vue-component-type-helpers@2.2.12:
resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==}
- vue-component-type-helpers@3.1.8:
- resolution: {integrity: sha512-oaowlmEM6BaYY+8o+9D9cuzxpWQWHqHTMKakMxXu0E+UCIOMTljyIPO15jcnaCwJtZu/zWDotK7mOIHvWD9mcw==}
+ vue-component-type-helpers@3.2.4:
+ resolution: {integrity: sha512-05lR16HeZDcDpB23ku5b5f1fBOoHqFnMiKRr2CiEvbG5Ux4Yi0McmQBOET0dR0nxDXosxyVqv67q6CzS3AK8rw==}
vue-devtools-stub@0.1.0:
resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==}
@@ -8129,6 +8152,20 @@ snapshots:
'@parcel/watcher-win32-ia32': 2.5.1
'@parcel/watcher-win32-x64': 2.5.1
+ '@pinia/colada-devtools@0.4.2': {}
+
+ '@pinia/colada-nuxt@0.3.1(@pinia/colada@0.21.2(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)))(magicast@0.5.1)':
+ dependencies:
+ '@nuxt/kit': 4.2.2(magicast@0.5.1)
+ '@pinia/colada': 0.21.2(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))
+ transitivePeerDependencies:
+ - magicast
+
+ '@pinia/colada@0.21.2(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ pinia: 3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3))
+ vue: 3.5.25(typescript@5.9.3)
+
'@pinia/nuxt@0.11.3(magicast@0.5.1)(pinia@3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))':
dependencies:
'@nuxt/kit': 4.2.2(magicast@0.5.1)
@@ -8604,7 +8641,7 @@ snapshots:
storybook: 10.1.8(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
type-fest: 2.19.0
vue: 3.5.25(typescript@5.9.3)
- vue-component-type-helpers: 3.1.8
+ vue-component-type-helpers: 3.2.4
'@storybook/vue3@9.1.2(storybook@10.1.8(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(vue@3.5.25(typescript@5.9.3))':
dependencies:
@@ -8612,7 +8649,7 @@ snapshots:
storybook: 10.1.8(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
type-fest: 2.19.0
vue: 3.5.25(typescript@5.9.3)
- vue-component-type-helpers: 3.1.8
+ vue-component-type-helpers: 3.2.4
'@stylistic/eslint-plugin@5.6.1(eslint@9.39.2(jiti@2.6.1))':
dependencies:
@@ -13005,7 +13042,7 @@ snapshots:
vue-component-type-helpers@2.2.12: {}
- vue-component-type-helpers@3.1.8: {}
+ vue-component-type-helpers@3.2.4: {}
vue-devtools-stub@0.1.0: {}