remove dead code, update screenshots, add PWA support

This commit is contained in:
Amruth Pillai
2026-01-25 22:06:12 +01:00
parent fa823e1296
commit c08e8081fe
23 changed files with 159 additions and 143 deletions
+1 -5
View File
@@ -13,8 +13,4 @@ node_modules
!.env.example
public/sw.js
scripts/**/*.json
public/workbox-*.js
# Compiled translation files
/locales/*.js
!/locales/*.po
public/workbox-*.js
+3 -3
View File
@@ -10,12 +10,12 @@
"*.css": "tailwindcss"
},
"files.readonlyInclude": {
// "locales/*.po": true,
"locales/*.po": true,
"pnpm-lock.yaml": true,
"**/routeTree.gen.ts": true
},
"files.watcherExclude": {
// "locales/*.po": true,
"locales/*.po": true,
"pnpm-lock.yaml": true,
"**/routeTree.gen.ts": true
},
@@ -23,7 +23,7 @@
"i18n-ally.localesPaths": ["locales"],
"i18n-ally.sourceLanguage": "en-US",
"search.exclude": {
// "locales/*.po": true,
"locales/*.po": true,
"pnpm-lock.yaml": true,
"**/routeTree.gen.ts": true
},
+5 -4
View File
@@ -56,10 +56,10 @@
"@sindresorhus/slugify": "^3.0.0",
"@t3-oss/env-core": "^0.13.10",
"@tanstack/react-query": "5.90.20",
"@tanstack/react-router": "^1.157.10",
"@tanstack/react-router-ssr-query": "^1.157.10",
"@tanstack/react-start": "^1.157.10",
"@tanstack/zod-adapter": "^1.157.10",
"@tanstack/react-router": "^1.157.12",
"@tanstack/react-router-ssr-query": "^1.157.12",
"@tanstack/react-start": "^1.157.12",
"@tanstack/zod-adapter": "^1.157.12",
"@tiptap/extension-highlight": "^3.17.1",
"@tiptap/extension-table": "^3.17.1",
"@tiptap/extension-text-align": "^3.17.1",
@@ -106,6 +106,7 @@
"unique-names-generator": "^4.7.1",
"usehooks-ts": "^3.1.1",
"uuid": "^13.0.0",
"workbox-window": "^7.4.0",
"zod": "^4.3.6",
"zustand": "^5.0.10"
},
+93 -90
View File
@@ -28,7 +28,7 @@ importers:
version: 1.5.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.2.0(zod@4.3.6))(jose@6.1.3)(kysely@0.28.10)(nanostores@1.1.0)
'@better-auth/passkey':
specifier: 1.5.0-beta.9
version: 1.5.0-beta.9(9a182d577759169425d4368993c12167)
version: 1.5.0-beta.9(d2aaa815dcf4593a2d520c3aba86b038)
'@dnd-kit/core':
specifier: ^6.3.1
version: 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -87,17 +87,17 @@ importers:
specifier: 5.90.20
version: 5.90.20(react@19.2.3)
'@tanstack/react-router':
specifier: ^1.157.10
version: 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
specifier: ^1.157.12
version: 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-router-ssr-query':
specifier: ^1.157.10
version: 1.157.10(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.20(react@19.2.3))(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.157.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
specifier: ^1.157.12
version: 1.157.12(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.20(react@19.2.3))(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.157.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-start':
specifier: ^1.157.10
version: 1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
specifier: ^1.157.12
version: 1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/zod-adapter':
specifier: ^1.157.10
version: 1.157.10(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)
specifier: ^1.157.12
version: 1.157.12(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)
'@tiptap/extension-highlight':
specifier: ^3.17.1
version: 3.17.1(@tiptap/core@3.17.1(@tiptap/pm@3.17.1))
@@ -127,7 +127,7 @@ importers:
version: 6.0.0
better-auth:
specifier: 1.5.0-beta.9
version: 1.5.0-beta.9(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)))(drizzle-kit@1.0.0-beta.9-e89174b)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mongodb@7.0.0(socks@2.8.7))(mysql2@3.15.3)(pg@8.17.2)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
version: 1.5.0-beta.9(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)))(drizzle-kit@1.0.0-beta.9-e89174b)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mongodb@7.0.0(socks@2.8.7))(mysql2@3.15.3)(pg@8.17.2)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -236,6 +236,9 @@ importers:
uuid:
specifier: ^13.0.0
version: 13.0.0
workbox-window:
specifier: ^7.4.0
version: 7.4.0
zod:
specifier: ^4.3.6
version: 4.3.6
@@ -3921,8 +3924,8 @@ packages:
peerDependencies:
react: ^18 || ^19
'@tanstack/react-router-ssr-query@1.157.10':
resolution: {integrity: sha512-3eKyqNUSAz1Ei6HJcgg4yZHIGYeyYJTb9/yvyg5iU1HYIeb3EGOZIrZUxYHqXbobAeV82ETW7vqpLqRFcq/2Zw==}
'@tanstack/react-router-ssr-query@1.157.12':
resolution: {integrity: sha512-BdfJCvoSQEWY25tb7pKBhZYQsV4rAMGHlJzY74YbhnAFbZNr22Ja3mf3wDLAyibnWt0M0x+DdJ81wxMqgN6Pzw==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/query-core': '>=5.90.0'
@@ -3931,29 +3934,29 @@ packages:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
'@tanstack/react-router@1.157.10':
resolution: {integrity: sha512-WUUSoYNXlVCz4Y6+f3lOlBZWXDEHHFawVvBIYF4O8CZ6Bn1WO4PqGA5/5zv3G2dP6EflV3mblbrScSnFxNODsA==}
'@tanstack/react-router@1.157.12':
resolution: {integrity: sha512-1Z4Wk1YUu2bgjFmTNXgX40dZzOZ47aE0x/5wcdASo8HNSNobBTCq383CL1XN7dVzKVQTZ2alpWfG8C1EuOn2uA==}
engines: {node: '>=12'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
'@tanstack/react-start-client@1.157.10':
resolution: {integrity: sha512-7H+gsTNpeXDBTBQisKNBrpoNSBvWgYilLJjbfmJ4KTejkmgFSyYES/C72hSFukoXuibZ5X1XnIdtZrIrAIoN2Q==}
'@tanstack/react-start-client@1.157.12':
resolution: {integrity: sha512-fPxXFQ+Z8fB2PhGdv5kQSFsqKlDymjLtWVYRPxDc29E6CwidCiB/Gp8NTHyR686WAPrMyezn1C8MYFkn9xIl4g==}
engines: {node: '>=22.12.0'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
'@tanstack/react-start-server@1.157.10':
resolution: {integrity: sha512-JzgsmlLH9rQbnemRt4YnJs4ujmoAzLO8KGKnqN93+B1ajfy8AfuiR+rKMTqjiCtM2m46l8Pu60vFylG3DeldXQ==}
'@tanstack/react-start-server@1.157.12':
resolution: {integrity: sha512-qMVzxxG89woSt9Qp0v90C7Pgv8M9lKe28fhd1wth3NStKm4GUV5kVtSBV6M95KmgNPh4/fkdLZZIiKEeR+HtMQ==}
engines: {node: '>=22.12.0'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
'@tanstack/react-start@1.157.10':
resolution: {integrity: sha512-FsQyfh5qDTvk7kBQAwTIxBuEv0c6sqK/jHXpPISGi3bpWXLB3N6IpIRrVTwLulI9TsHoJuBPXQ+uzGzX7Nm7vg==}
'@tanstack/react-start@1.157.12':
resolution: {integrity: sha512-W2x51f650okbBxxSdcn1lzM1faKwRjuTCg18IQkbslAGQLBHMwnzXZrWSAPz5VJD3W3I7Cfg1SATyxVqs6tCkQ==}
engines: {node: '>=22.12.0'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
@@ -3966,20 +3969,20 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
'@tanstack/router-core@1.157.10':
resolution: {integrity: sha512-1Wxy7UIhZErreLy/ckEbJyi/7VjYSJC310IJM0YWPBlzOJD/qD0yS0+V7Lom9UxYi3VgFsSu/is0UxEedg1B2Q==}
'@tanstack/router-core@1.157.12':
resolution: {integrity: sha512-UiqJc5LjbEO2cN8pjwh689hZ10OP22CqP+RNC0ANXamRCjZINqLeKcQOc0uCk+po3U2rZ883+O8bVMo1bg4+Rg==}
engines: {node: '>=12'}
'@tanstack/router-generator@1.157.10':
resolution: {integrity: sha512-gR2j8vKHNgHfWYs82kvso9iitPhlb71d+7eBmtwqozwCSnoO/3VWUaAN/VdiriFoWOYqIMpziYPmC6DwFuUV7A==}
'@tanstack/router-generator@1.157.12':
resolution: {integrity: sha512-sJMvsUFEYkr/FfYj8Z9vocuYII+0PjN5O/zI84PUXN//GZUHyoxfh/714IzVD6L9n5OWAHsdd17N21cMZqrJpQ==}
engines: {node: '>=12'}
'@tanstack/router-plugin@1.157.10':
resolution: {integrity: sha512-reXAs2ncCxfeoN3qrBithmHYPYjTZnDjOP5k0PjUlxS9+XM0EE91wKPbn7/D6ZUIqWFBheRhPhAlyfYIy0CAVA==}
'@tanstack/router-plugin@1.157.12':
resolution: {integrity: sha512-/zmFVXR6/ZWjDqGG7TUte9gkS8JM0DGXt4Cu34GKrp7LZzMSAy9ODfbYa779i0jDzxRrcUIk+6yfTKuyJpnvDw==}
engines: {node: '>=12'}
peerDependencies:
'@rsbuild/core': '>=1.0.2'
'@tanstack/react-router': ^1.157.10
'@tanstack/react-router': ^1.157.12
vite: '>=5.0.0 || >=6.0.0 || >=7.0.0'
vite-plugin-solid: ^2.11.10
webpack: '>=5.92.0'
@@ -3995,8 +3998,8 @@ packages:
webpack:
optional: true
'@tanstack/router-ssr-query-core@1.157.10':
resolution: {integrity: sha512-Vo0U7zbSDDZJqOTcq/J0K2tEQv6cWdPfrRx1d9N31qve4eiFCo75RRMOoRMHQMTHR7vg8TVEMrVeqV3QmYOuGA==}
'@tanstack/router-ssr-query-core@1.157.12':
resolution: {integrity: sha512-fU3Gf4Dj2M8Vs3CpvGoNOULbU7mJrJSy9SQ80f4OmUCKC8hHFsTmn/ZYnIu1sJbQ7ZBt764AQ770Yj5yrWWQNA==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/query-core': '>=5.90.0'
@@ -4006,26 +4009,26 @@ packages:
resolution: {integrity: sha512-61bGx32tMKuEpVRseu2sh1KQe8CfB7793Mch/kyQt0EP3tD7X0sXmimCl3truRiDGUtI0CaSoQV1NPjAII1RBA==}
engines: {node: '>=12'}
'@tanstack/start-client-core@1.157.10':
resolution: {integrity: sha512-/b8bMTdjZasf97N6qgVA7ldlVbuEUFEFmrmQOTcZdmBmNpk1AnZdJffmBZzVK5wlNG85QR+F4txcZwL56kLZrQ==}
'@tanstack/start-client-core@1.157.12':
resolution: {integrity: sha512-0LF6SA2kb96hnPg8PEUd4WkCorQC13th4nfeu2Otmg0teT8tBFtbzi59ykeQXgQSDHEWH1KZxRsC3uJui6MVWw==}
engines: {node: '>=22.12.0'}
'@tanstack/start-fn-stubs@1.154.7':
resolution: {integrity: sha512-D69B78L6pcFN5X5PHaydv7CScQcKLzJeEYqs7jpuyyqGQHSUIZUjS955j+Sir8cHhuDIovCe2LmsYHeZfWf3dQ==}
engines: {node: '>=22.12.0'}
'@tanstack/start-plugin-core@1.157.10':
resolution: {integrity: sha512-ybw/KUCAogeZDHjRJrv1FNAjd4LQNiKs7l+NfN8i66DXnFu11rPG6K00GRZCr8NXUGl3jtcDyjgrwtVxbzl0tw==}
'@tanstack/start-plugin-core@1.157.12':
resolution: {integrity: sha512-MtB/dQlkoZ5PXG8w7VzdXYFn8VQD0Ldsvi+BA7LQxkgCopmN+47iudRjaJ3Ph/OqTan3thtDQtnTnnmncU/FbQ==}
engines: {node: '>=22.12.0'}
peerDependencies:
vite: '>=7.0.0'
'@tanstack/start-server-core@1.157.10':
resolution: {integrity: sha512-BsfMgh+Yk+uzx1C4AQNEObnv7BX2X7Qj3IkKSKNlf7SJx8o5sSRcuUiKFf3l63Ggi67Fm2cA4o4hs5wMryw8XQ==}
'@tanstack/start-server-core@1.157.12':
resolution: {integrity: sha512-qTCxc7zTqTmwX/JeXVBZj09m3P0Rk38E90XsQ/ITIRpDIOdrSvoHGIb8mriJt+XyWVnGxwB5fOrVM8g9G/CPSw==}
engines: {node: '>=22.12.0'}
'@tanstack/start-storage-context@1.157.10':
resolution: {integrity: sha512-FFIQCkjs1hmAUfi7hYtRsXQ9w0JBKcSha1urVyr/3MB/AyA9lnBmabRjYHJS41LFtXOLIwC3+n4nWAHsSyzDGQ==}
'@tanstack/start-storage-context@1.157.12':
resolution: {integrity: sha512-CfYUd7601500s19Jm4hIYUD8X+NqHf9CFI9RQP+v47OtLWkw1baKSTFrewt88tQk4iibGJM38giea3APCNp0Yg==}
engines: {node: '>=22.12.0'}
'@tanstack/store@0.8.0':
@@ -4035,8 +4038,8 @@ packages:
resolution: {integrity: sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg==}
engines: {node: '>=12'}
'@tanstack/zod-adapter@1.157.10':
resolution: {integrity: sha512-hzjSlgjL9rMFzjsfoLo4WqXRyktDW5OCUU6mw77KiIcUp8xubhSquM1NfvCpnnhTqoHh4G6JUP+JVebSvJ1IUQ==}
'@tanstack/zod-adapter@1.157.12':
resolution: {integrity: sha512-TmNZ1Io4yCM6No9zdIl5aPWhLXIITO8Rkm+S8UvqJyc6kMjf/LmSRkEU41QEjiUN8j/CdY3MqVaLkOi1TxRmMQ==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/react-router': '>=1.43.2'
@@ -9972,14 +9975,14 @@ snapshots:
'@better-auth/utils': 0.3.0
mongodb: 7.0.0(socks@2.8.7)
'@better-auth/passkey@1.5.0-beta.9(9a182d577759169425d4368993c12167)':
'@better-auth/passkey@1.5.0-beta.9(d2aaa815dcf4593a2d520c3aba86b038)':
dependencies:
'@better-auth/core': 1.5.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.2.0(zod@4.3.6))(jose@6.1.3)(kysely@0.28.10)(nanostores@1.1.0)
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@simplewebauthn/browser': 13.2.2
'@simplewebauthn/server': 13.2.2
better-auth: 1.5.0-beta.9(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)))(drizzle-kit@1.0.0-beta.9-e89174b)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mongodb@7.0.0(socks@2.8.7))(mysql2@3.15.3)(pg@8.17.2)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
better-auth: 1.5.0-beta.9(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)))(drizzle-kit@1.0.0-beta.9-e89174b)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mongodb@7.0.0(socks@2.8.7))(mysql2@3.15.3)(pg@8.17.2)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
better-call: 1.2.0(zod@4.3.6)
nanostores: 1.1.0
zod: 4.3.6
@@ -12647,59 +12650,59 @@ snapshots:
'@tanstack/query-core': 5.90.20
react: 19.2.3
'@tanstack/react-router-ssr-query@1.157.10(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.20(react@19.2.3))(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.157.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
'@tanstack/react-router-ssr-query@1.157.12(@tanstack/query-core@5.90.20)(@tanstack/react-query@5.90.20(react@19.2.3))(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.157.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/query-core': 5.90.20
'@tanstack/react-query': 5.90.20(react@19.2.3)
'@tanstack/react-router': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-ssr-query-core': 1.157.10(@tanstack/query-core@5.90.20)(@tanstack/router-core@1.157.10)
'@tanstack/react-router': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-ssr-query-core': 1.157.12(@tanstack/query-core@5.90.20)(@tanstack/router-core@1.157.12)
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
transitivePeerDependencies:
- '@tanstack/router-core'
'@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
'@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/history': 1.154.14
'@tanstack/react-store': 0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-core': 1.157.10
'@tanstack/router-core': 1.157.12
isbot: 5.1.33
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
'@tanstack/react-start-client@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
'@tanstack/react-start-client@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/react-router': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-core': 1.157.10
'@tanstack/start-client-core': 1.157.10
'@tanstack/react-router': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-core': 1.157.12
'@tanstack/start-client-core': 1.157.12
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
'@tanstack/react-start-server@1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
'@tanstack/react-start-server@1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/history': 1.154.14
'@tanstack/react-router': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-core': 1.157.10
'@tanstack/start-client-core': 1.157.10
'@tanstack/start-server-core': 1.157.10(crossws@0.4.3(srvx@0.10.1))
'@tanstack/react-router': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-core': 1.157.12
'@tanstack/start-client-core': 1.157.12
'@tanstack/start-server-core': 1.157.12(crossws@0.4.3(srvx@0.10.1))
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
transitivePeerDependencies:
- crossws
'@tanstack/react-start@1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))':
'@tanstack/react-start@1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))':
dependencies:
'@tanstack/react-router': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-start-client': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-start-server': 1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-router': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-start-client': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-start-server': 1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/router-utils': 1.154.7
'@tanstack/start-client-core': 1.157.10
'@tanstack/start-plugin-core': 1.157.10(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(crossws@0.4.3(srvx@0.10.1))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/start-server-core': 1.157.10(crossws@0.4.3(srvx@0.10.1))
'@tanstack/start-client-core': 1.157.12
'@tanstack/start-plugin-core': 1.157.12(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(crossws@0.4.3(srvx@0.10.1))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/start-server-core': 1.157.12(crossws@0.4.3(srvx@0.10.1))
pathe: 2.0.3
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
@@ -12718,7 +12721,7 @@ snapshots:
react-dom: 19.2.3(react@19.2.3)
use-sync-external-store: 1.6.0(react@19.2.3)
'@tanstack/router-core@1.157.10':
'@tanstack/router-core@1.157.12':
dependencies:
'@tanstack/history': 1.154.14
'@tanstack/store': 0.8.0
@@ -12728,9 +12731,9 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
'@tanstack/router-generator@1.157.10':
'@tanstack/router-generator@1.157.12':
dependencies:
'@tanstack/router-core': 1.157.10
'@tanstack/router-core': 1.157.12
'@tanstack/router-utils': 1.154.7
'@tanstack/virtual-file-routes': 1.154.7
prettier: 3.8.0
@@ -12741,7 +12744,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@tanstack/router-plugin@1.157.10(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))':
'@tanstack/router-plugin@1.157.12(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))':
dependencies:
'@babel/core': 7.28.6
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6)
@@ -12749,8 +12752,8 @@ snapshots:
'@babel/template': 7.28.6
'@babel/traverse': 7.28.6
'@babel/types': 7.28.6
'@tanstack/router-core': 1.157.10
'@tanstack/router-generator': 1.157.10
'@tanstack/router-core': 1.157.12
'@tanstack/router-generator': 1.157.12
'@tanstack/router-utils': 1.154.7
'@tanstack/virtual-file-routes': 1.154.7
babel-dead-code-elimination: 1.0.12
@@ -12758,15 +12761,15 @@ snapshots:
unplugin: 2.3.11
zod: 3.25.76
optionalDependencies:
'@tanstack/react-router': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-router': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
vite: rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)
transitivePeerDependencies:
- supports-color
'@tanstack/router-ssr-query-core@1.157.10(@tanstack/query-core@5.90.20)(@tanstack/router-core@1.157.10)':
'@tanstack/router-ssr-query-core@1.157.12(@tanstack/query-core@5.90.20)(@tanstack/router-core@1.157.12)':
dependencies:
'@tanstack/query-core': 5.90.20
'@tanstack/router-core': 1.157.10
'@tanstack/router-core': 1.157.12
'@tanstack/router-utils@1.154.7':
dependencies:
@@ -12780,29 +12783,29 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@tanstack/start-client-core@1.157.10':
'@tanstack/start-client-core@1.157.12':
dependencies:
'@tanstack/router-core': 1.157.10
'@tanstack/router-core': 1.157.12
'@tanstack/start-fn-stubs': 1.154.7
'@tanstack/start-storage-context': 1.157.10
'@tanstack/start-storage-context': 1.157.12
seroval: 1.4.2
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
'@tanstack/start-fn-stubs@1.154.7': {}
'@tanstack/start-plugin-core@1.157.10(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(crossws@0.4.3(srvx@0.10.1))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))':
'@tanstack/start-plugin-core@1.157.12(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(crossws@0.4.3(srvx@0.10.1))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.28.6
'@babel/types': 7.28.6
'@rolldown/pluginutils': 1.0.0-beta.40
'@tanstack/router-core': 1.157.10
'@tanstack/router-generator': 1.157.10
'@tanstack/router-plugin': 1.157.10(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/router-core': 1.157.12
'@tanstack/router-generator': 1.157.12
'@tanstack/router-plugin': 1.157.12(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/router-utils': 1.154.7
'@tanstack/start-client-core': 1.157.10
'@tanstack/start-server-core': 1.157.10(crossws@0.4.3(srvx@0.10.1))
'@tanstack/start-client-core': 1.157.12
'@tanstack/start-server-core': 1.157.12(crossws@0.4.3(srvx@0.10.1))
babel-dead-code-elimination: 1.0.12
cheerio: 1.1.2
exsolve: 1.0.8
@@ -12822,29 +12825,29 @@ snapshots:
- vite-plugin-solid
- webpack
'@tanstack/start-server-core@1.157.10(crossws@0.4.3(srvx@0.10.1))':
'@tanstack/start-server-core@1.157.12(crossws@0.4.3(srvx@0.10.1))':
dependencies:
'@tanstack/history': 1.154.14
'@tanstack/router-core': 1.157.10
'@tanstack/start-client-core': 1.157.10
'@tanstack/start-storage-context': 1.157.10
'@tanstack/router-core': 1.157.12
'@tanstack/start-client-core': 1.157.12
'@tanstack/start-storage-context': 1.157.12
h3-v2: h3@2.0.1-rc.11(crossws@0.4.3(srvx@0.10.1))
seroval: 1.4.2
tiny-invariant: 1.3.3
transitivePeerDependencies:
- crossws
'@tanstack/start-storage-context@1.157.10':
'@tanstack/start-storage-context@1.157.12':
dependencies:
'@tanstack/router-core': 1.157.10
'@tanstack/router-core': 1.157.12
'@tanstack/store@0.8.0': {}
'@tanstack/virtual-file-routes@1.154.7': {}
'@tanstack/zod-adapter@1.157.10(@tanstack/react-router@1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)':
'@tanstack/zod-adapter@1.157.12(@tanstack/react-router@1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(zod@4.3.6)':
dependencies:
'@tanstack/react-router': 1.157.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-router': 1.157.12(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
zod: 4.3.6
'@tediousjs/connection-string@0.5.0': {}
@@ -13390,7 +13393,7 @@ snapshots:
node-addon-api: 8.5.0
node-gyp-build: 4.8.4
better-auth@1.5.0-beta.9(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)))(drizzle-kit@1.0.0-beta.9-e89174b)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mongodb@7.0.0(socks@2.8.7))(mysql2@3.15.3)(pg@8.17.2)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
better-auth@1.5.0-beta.9(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)))(drizzle-kit@1.0.0-beta.9-e89174b)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))(mongodb@7.0.0(socks@2.8.7))(mysql2@3.15.3)(pg@8.17.2)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@better-auth/core': 1.5.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.2.0(zod@4.3.6))(jose@6.1.3)(kysely@0.28.10)(nanostores@1.1.0)
'@better-auth/drizzle-adapter': 1.5.0-beta.9(@better-auth/core@1.5.0-beta.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.2.0(zod@4.3.6))(jose@6.1.3)(kysely@0.28.10)(nanostores@1.1.0))(@better-auth/utils@0.3.0)(drizzle-orm@1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)))
@@ -13411,7 +13414,7 @@ snapshots:
zod: 4.3.6
optionalDependencies:
'@prisma/client': 7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3)
'@tanstack/react-start': 1.157.10(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
'@tanstack/react-start': 1.157.12(crossws@0.4.3(srvx@0.10.1))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rolldown-vite@7.3.1(@types/node@25.0.10)(esbuild@0.27.2)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0))
drizzle-kit: 1.0.0-beta.9-e89174b
drizzle-orm: 1.0.0-beta.9-e89174b(@electric-sql/pglite@0.3.2)(@opentelemetry/api@1.9.0)(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))(@types/mssql@9.1.9)(@types/pg@8.16.0)(mssql@11.0.1)(mysql2@3.15.3)(pg@8.17.2)(postgres@3.4.7)(prisma@7.2.0(@types/react@19.2.9)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))
mongodb: 7.0.0(socks@2.8.7)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

+1 -1
View File
@@ -53,7 +53,7 @@ function DialogContent({ className, children, ...props }: DialogContentProps) {
<DialogOverlay />
<DialogContentPrimitive
className={cn(
"fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg sm:max-w-2xl",
"fixed top-[50%] left-[50%] z-50 grid max-h-[calc(100%-2rem)] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 overflow-y-auto rounded-lg border bg-background p-6 shadow-lg sm:max-w-2xl 2xl:max-w-4xl",
className,
)}
{...props}
+11 -4
View File
@@ -16,11 +16,18 @@ import { cn } from "@/utils/style";
export const Route = createFileRoute("/$username/$slug")({
component: RouteComponent,
loader: async ({ context, params: { username, slug } }) => {
const resume = await context.queryClient.ensureQueryData(
orpc.resume.getBySlug.queryOptions({ input: { username, slug } }),
);
try {
// Ignore .well-known requests
if (username === ".well-known") throw notFound();
return { resume };
const resume = await context.queryClient.ensureQueryData(
orpc.resume.getBySlug.queryOptions({ input: { username, slug } }),
);
return { resume };
} catch {
throw notFound();
}
},
head: ({ loaderData }) => ({
meta: [{ title: loaderData ? `${loaderData.resume.name} - Reactive Resume` : "Reactive Resume" }],
+17 -3
View File
@@ -48,9 +48,11 @@ export const Route = createRootRouteWithContext<RouterContext>()({
links: [
{ rel: "stylesheet", href: appCss },
// Icons
{ rel: "icon", href: "/favicon.svg", type: "image/svg+xml", sizes: "any" },
{ rel: "icon", href: "/favicon.ico", type: "image/x-icon", sizes: "48x48" },
{ rel: "apple-touch-icon", href: "/apple-touch-icon-180x180.png", type: "image/png", sizes: "180x180" },
{ rel: "icon", href: "/favicon.ico", type: "image/x-icon", sizes: "128x128" },
{ rel: "icon", href: "/favicon.svg", type: "image/svg+xml", sizes: "256x256 any" },
{ rel: "apple-touch-icon", href: "/apple-touch-icon-180x180.png", type: "image/png", sizes: "180x180 any" },
// Manifest
{ rel: "manifest", href: "/manifest.webmanifest", crossOrigin: "use-credentials" },
],
meta: [
{ title },
@@ -69,6 +71,18 @@ export const Route = createRootRouteWithContext<RouterContext>()({
{ property: "og:description", content: description },
{ property: "og:url", content: appUrl },
],
// Register service worker via script tag
scripts: [
{
children: `
if('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js', { scope: '/' })
})
}
`,
},
],
};
},
beforeLoad: async () => {
-8
View File
@@ -1,10 +1,8 @@
import { i18n, type MessageDescriptor, type Messages } from "@lingui/core";
import { msg } from "@lingui/core/macro";
import { useLingui } from "@lingui/react";
import { createIsomorphicFn, createServerFn } from "@tanstack/react-start";
import { getCookie, setCookie } from "@tanstack/react-start/server";
import Cookies from "js-cookie";
import { useMemo } from "react";
import z from "zod";
const localeSchema = z.union([
@@ -146,12 +144,6 @@ export function isRTL(locale: string): boolean {
return RTL_LANGUAGES.has(language);
}
export function useIsRTL() {
const { i18n } = useLingui();
return useMemo(() => isRTL(i18n.locale), [i18n.locale]);
}
export const getLocale = createIsomorphicFn()
.client(() => {
const locale = Cookies.get(storageKey);
+28 -25
View File
@@ -70,16 +70,19 @@ const config = defineConfig({
tailwindcss(),
nitro({ plugins: ["plugins/1.migrate.ts"] }),
tanstackStart({ router: { semicolons: true, quoteStyle: "double" } }),
viteReact({ babel: { plugins: [["@lingui/babel-plugin-lingui-macro"]] } }),
viteReact({ babel: { plugins: ["@lingui/babel-plugin-lingui-macro"] } }),
VitePWA({
outDir: "public",
registerType: "autoUpdate",
useCredentials: true,
injectRegister: false,
includeAssets: ["**/*"],
registerType: "autoUpdate",
workbox: {
globPatterns: ["**/*"],
skipWaiting: true,
clientsClaim: true,
cleanupOutdatedCaches: true,
globPatterns: ["**/*"],
maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, // 10mb
navigateFallback: null, // Disable navigation fallback for SSR
},
manifest: {
name: "Reactive Resume",
@@ -94,7 +97,7 @@ const config = defineConfig({
icons: [
{
src: "favicon.ico",
sizes: "48x48",
sizes: "128x128",
type: "image/x-icon",
},
{
@@ -123,59 +126,59 @@ const config = defineConfig({
screenshots: [
{
src: "screenshots/web/1-landing-page.webp",
sizes: "any",
sizes: "1920x1080 any",
type: "image/webp",
form_factor: "wide",
label: "Landing Page",
},
{
src: "screenshots/web/2-resumes-dashboard.webp",
sizes: "any",
src: "screenshots/web/2-resume-dashboard.webp",
sizes: "1920x1080 any",
type: "image/webp",
form_factor: "wide",
label: "Resumes Dashboard",
label: "Resume Dashboard",
},
{
src: "screenshots/web/3-builder-page.webp",
sizes: "any",
src: "screenshots/web/3-builder-screen.webp",
sizes: "1920x1080 any",
type: "image/webp",
form_factor: "wide",
label: "Builder Page",
label: "Builder Screen",
},
{
src: "screenshots/web/4-template-selector.webp",
sizes: "any",
src: "screenshots/web/4-template-gallery.webp",
sizes: "1920x1080 any",
type: "image/webp",
form_factor: "wide",
label: "Template Selector",
label: "Template Gallery",
},
{
src: "screenshots/mobile/1-landing-page.webp",
sizes: "any",
sizes: "1284x2778 any",
type: "image/webp",
form_factor: "narrow",
label: "Landing Page",
},
{
src: "screenshots/mobile/2-resumes-dashboard.webp",
sizes: "any",
src: "screenshots/mobile/2-resume-dashboard.webp",
sizes: "1284x2778 any",
type: "image/webp",
form_factor: "narrow",
label: "Resumes Dashboard",
label: "Resume Dashboard",
},
{
src: "screenshots/mobile/3-builder-page.webp",
sizes: "any",
src: "screenshots/mobile/3-builder-screen.webp",
sizes: "1284x2778 any",
type: "image/webp",
form_factor: "narrow",
label: "Builder Page",
label: "Builder Screen",
},
{
src: "screenshots/mobile/4-template-selector.webp",
sizes: "any",
src: "screenshots/mobile/4-template-gallery.webp",
sizes: "1284x2778 any",
type: "image/webp",
form_factor: "narrow",
label: "Template Selector",
label: "Template Gallery",
},
],
categories: [