feat: complete tRPC integration and fix platform UI issues

- Implement comprehensive tRPC setup with type-safe API
- Create tRPC routers for dashboard, admin, and auth endpoints
- Migrate frontend components to use tRPC client
- Fix platform dashboard Settings button functionality
- Add platform settings page with profile and security management
- Create OpenAI API mocking infrastructure for cost-safe testing
- Update tests to work with new tRPC architecture
- Sync database schema to fix AIBatchRequest table errors
This commit is contained in:
2025-07-11 15:37:53 +02:00
committed by Kaj Kowalski
parent f2a3d87636
commit fa7e815a3b
38 changed files with 4285 additions and 518 deletions

176
pnpm-lock.yaml generated
View File

@ -64,9 +64,24 @@ importers:
"@rapideditor/country-coder":
specifier: ^5.4.0
version: 5.4.0
"@tanstack/react-query":
specifier: ^5.81.5
version: 5.81.5(react@19.1.0)
"@tanstack/react-table":
specifier: ^8.21.3
version: 8.21.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
"@trpc/client":
specifier: ^11.4.3
version: 11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3)
"@trpc/next":
specifier: ^11.4.3
version: 11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(next@15.3.4(@babel/core@7.27.7)(@playwright/test@1.53.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
"@trpc/react-query":
specifier: ^11.4.3
version: 11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
"@trpc/server":
specifier: ^11.4.3
version: 11.4.3(typescript@5.8.3)
"@types/canvas-confetti":
specifier: ^1.9.0
version: 1.9.0
@ -172,6 +187,9 @@ importers:
sonner:
specifier: ^2.0.5
version: 2.0.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
superjson:
specifier: ^2.2.2
version: 2.2.2
tailwind-merge:
specifier: ^3.3.1
version: 3.3.1
@ -197,6 +215,9 @@ importers:
"@tailwindcss/postcss":
specifier: ^4.1.11
version: 4.1.11
"@tanstack/react-query-devtools":
specifier: ^5.81.5
version: 5.81.5(@tanstack/react-query@5.81.5(react@19.1.0))(react@19.1.0)
"@testing-library/dom":
specifier: ^10.4.0
version: 10.4.0
@ -2339,6 +2360,35 @@ packages:
integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==,
}
"@tanstack/query-core@5.81.5":
resolution:
{
integrity: sha512-ZJOgCy/z2qpZXWaj/oxvodDx07XcQa9BF92c0oINjHkoqUPsmm3uG08HpTaviviZ/N9eP1f9CM7mKSEkIo7O1Q==,
}
"@tanstack/query-devtools@5.81.2":
resolution:
{
integrity: sha512-jCeJcDCwKfoyyBXjXe9+Lo8aTkavygHHsUHAlxQKKaDeyT0qyQNLKl7+UyqYH2dDF6UN/14873IPBHchcsU+Zg==,
}
"@tanstack/react-query-devtools@5.81.5":
resolution:
{
integrity: sha512-lCGMu4RX0uGnlrlLeSckBfnW/UV+KMlTBVqa97cwK7Z2ED5JKnZRSjNXwoma6sQBTJrcULvzgx2K6jEPvNUpDw==,
}
peerDependencies:
"@tanstack/react-query": ^5.81.5
react: ^18 || ^19
"@tanstack/react-query@5.81.5":
resolution:
{
integrity: sha512-lOf2KqRRiYWpQT86eeeftAGnjuTR35myTP8MXyvHa81VlomoAWNEd8x5vkcAfQefu0qtYCvyqLropFZqgI2EQw==,
}
peerDependencies:
react: ^18 || ^19
"@tanstack/react-table@8.21.3":
resolution:
{
@ -2388,6 +2438,56 @@ packages:
"@types/react-dom":
optional: true
"@trpc/client@11.4.3":
resolution:
{
integrity: sha512-i2suttUCfColktXT8bqex5kHW5jpT15nwUh0hGSDiW1keN621kSUQKcLJ095blqQAUgB+lsmgSqSMmB4L9shQQ==,
}
peerDependencies:
"@trpc/server": 11.4.3
typescript: ">=5.7.2"
"@trpc/next@11.4.3":
resolution:
{
integrity: sha512-/AqPpzlrQy8ylLEdBAemRU1xmdqJVaXrXI/ZUYl3Oz1Id36gvGMdn5uxm0wgKPpZneM2EICvYcrsLSsdtddW4w==,
}
peerDependencies:
"@tanstack/react-query": ^5.59.15
"@trpc/client": 11.4.3
"@trpc/react-query": 11.4.3
"@trpc/server": 11.4.3
next: "*"
react: ">=16.8.0"
react-dom: ">=16.8.0"
typescript: ">=5.7.2"
peerDependenciesMeta:
"@tanstack/react-query":
optional: true
"@trpc/react-query":
optional: true
"@trpc/react-query@11.4.3":
resolution:
{
integrity: sha512-z+jhAiOBD22NNhHtvF0iFp9hO36YFA7M8AiUu/XtNmMxyLd3Y9/d1SMjMwlTdnGqxEGPo41VEWBrdhDUGtUuHg==,
}
peerDependencies:
"@tanstack/react-query": ^5.80.3
"@trpc/client": 11.4.3
"@trpc/server": 11.4.3
react: ">=18.2.0"
react-dom: ">=18.2.0"
typescript: ">=5.7.2"
"@trpc/server@11.4.3":
resolution:
{
integrity: sha512-wnWq3wiLlMOlYkaIZz+qbuYA5udPTLS4GVVRyFkr6aT83xpdCHyVtURT+u4hSoIrOXQM9OPCNXSXsAujWZDdaw==,
}
peerDependencies:
typescript: ">=5.7.2"
"@tsconfig/node10@1.0.11":
resolution:
{
@ -3608,6 +3708,13 @@ packages:
}
engines: { node: ">= 0.6" }
copy-anything@3.0.5:
resolution:
{
integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==,
}
engines: { node: ">=12.13" }
create-require@1.1.1:
resolution:
{
@ -5181,6 +5288,13 @@ packages:
}
engines: { node: ">= 0.4" }
is-what@4.1.16:
resolution:
{
integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==,
}
engines: { node: ">=12.13" }
isarray@2.0.5:
resolution:
{
@ -7226,6 +7340,13 @@ packages:
babel-plugin-macros:
optional: true
superjson@2.2.2:
resolution:
{
integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==,
}
engines: { node: ">=16" }
supports-color@7.2.0:
resolution:
{
@ -9198,6 +9319,21 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.11
"@tanstack/query-core@5.81.5": {}
"@tanstack/query-devtools@5.81.2": {}
"@tanstack/react-query-devtools@5.81.5(@tanstack/react-query@5.81.5(react@19.1.0))(react@19.1.0)":
dependencies:
"@tanstack/query-devtools": 5.81.2
"@tanstack/react-query": 5.81.5(react@19.1.0)
react: 19.1.0
"@tanstack/react-query@5.81.5(react@19.1.0)":
dependencies:
"@tanstack/query-core": 5.81.5
react: 19.1.0
"@tanstack/react-table@8.21.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)":
dependencies:
"@tanstack/table-core": 8.21.3
@ -9237,6 +9373,36 @@ snapshots:
"@types/react": 19.1.8
"@types/react-dom": 19.1.6(@types/react@19.1.8)
"@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3)":
dependencies:
"@trpc/server": 11.4.3(typescript@5.8.3)
typescript: 5.8.3
"@trpc/next@11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/react-query@11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(next@15.3.4(@babel/core@7.27.7)(@playwright/test@1.53.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)":
dependencies:
"@trpc/client": 11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3)
"@trpc/server": 11.4.3(typescript@5.8.3)
next: 15.3.4(@babel/core@7.27.7)(@playwright/test@1.53.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
typescript: 5.8.3
optionalDependencies:
"@tanstack/react-query": 5.81.5(react@19.1.0)
"@trpc/react-query": 11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)
"@trpc/react-query@11.4.3(@tanstack/react-query@5.81.5(react@19.1.0))(@trpc/client@11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3))(@trpc/server@11.4.3(typescript@5.8.3))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.8.3)":
dependencies:
"@tanstack/react-query": 5.81.5(react@19.1.0)
"@trpc/client": 11.4.3(@trpc/server@11.4.3(typescript@5.8.3))(typescript@5.8.3)
"@trpc/server": 11.4.3(typescript@5.8.3)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
typescript: 5.8.3
"@trpc/server@11.4.3(typescript@5.8.3)":
dependencies:
typescript: 5.8.3
"@tsconfig/node10@1.0.11": {}
"@tsconfig/node12@1.0.11": {}
@ -9983,6 +10149,10 @@ snapshots:
cookie@0.7.2: {}
copy-anything@3.0.5:
dependencies:
is-what: 4.1.16
create-require@1.1.1: {}
cross-spawn@7.0.6:
@ -11099,6 +11269,8 @@ snapshots:
call-bound: 1.0.4
get-intrinsic: 1.3.0
is-what@4.1.16: {}
isarray@2.0.5: {}
isexe@2.0.0: {}
@ -12528,6 +12700,10 @@ snapshots:
optionalDependencies:
"@babel/core": 7.27.7
superjson@2.2.2:
dependencies:
copy-anything: 3.0.5
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0