Conversation
…ions - Integrate next-intl for internationalization support - Add Chinese (zh) and English (en) translation files - Add language switcher component in navbar - Internationalize all data tables (users, teams, transactions, api-keys, permissions, payments) - Add i18n props to DataTable components in stack-ui - Translate all page components and dialogs - Add i18n test page for development
- Add kill-dev-servers.sh to gracefully stop dev processes without affecting Docker - Add restart-dev-basic.sh for intelligent dev server restart - Add fix-docker.sh to diagnose and fix Docker daemon issues - Add check-docker.sh for Docker health verification - Update start-dev.sh with improved Docker dependency management - Add docker.compose.minimal.yaml for minimal dependency setup - Add comprehensive README.md for Docker dependencies - Add npm scripts: restart-dev-basic and fix-docker - Improve process tree killing to preserve Docker containers - Add intelligent port management to avoid Docker conflicts
|
@fuwenbin is attempting to deploy a commit to the Stack Team on Vercel. A member of the Team first needs to authorize it. |
|
|
|
Caution Review failedThe pull request is closed. WalkthroughAdds internationalization to the dashboard using next-intl: introduces locale routing/config, message bundles (en/zh), server-side locale/messages in RootLayout, a LanguageSwitcher, and widespread replacement of hard-coded strings with translations across pages and data tables. Extends stack-ui DataTable with i18n props. Adds scripts and Docker minimal compose setup. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant Browser
participant App as Next.js App Router
participant I18n as next-intl (request.ts)
participant Layout as RootLayout
participant UI as Pages/Components
User->>Browser: Navigate to dashboard
Browser->>App: HTTP request
App->>I18n: Resolve locale (request param/cookie/default)
I18n-->>App: { locale, messages }
App->>Layout: Render with locale/messages
Layout->>UI: Provide NextIntlClientProvider
UI-->>User: Render translated UI
sequenceDiagram
autonumber
actor User
participant UI as LanguageSwitcher
participant Browser
participant Router as next-intl router
User->>UI: Select language (en/zh)
UI->>Browser: Set NEXT_LOCALE cookie
UI->>Router: Refresh route
Router->>Server: Re-request page
Server-->>Router: HTML with new locale/messages
Router-->>User: UI in selected language
sequenceDiagram
autonumber
participant Page as Page Component
participant Table as DataTable (stack-ui)
participant I18n as useTranslations()
Page->>I18n: Get t(...) for namespaces
Page->>Table: Pass DataTableI18n + translated headers/placeholders
Table-->>Page: Render toolbar/pagination with provided labels
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
Poem
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (53)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| "stop-deps:minimal": "POSTGRES_DELAY_MS=0 pnpm run deps-compose:minimal kill && POSTGRES_DELAY_MS=0 pnpm run deps-compose:minimal down -v", | ||
| "wait-until-postgres-is-ready:pg_isready": "until pg_isready -h localhost -p 5432; do sleep 1; done", | ||
| "wait-until-postgres-is-ready": "command -v pg_isready >/dev/null 2>&1 && pnpm run wait-until-postgres-is-ready:pg_isready || sleep 10 # not everyone has pg_isready installed, so we fallback to sleeping", | ||
| "start-deps:no-delay": "pnpm pre && pnpm run deps-compose up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nDependencies started in the background as Docker containers. 'pnpm run stop-deps' to stop them\"n", |
There was a problem hiding this comment.
Typo detected: The echo command ends with "n" which might be a mistake. Should it be "\n" instead of ""n"?
| "start-deps:no-delay": "pnpm pre && pnpm run deps-compose up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nDependencies started in the background as Docker containers. 'pnpm run stop-deps' to stop them\"n", | |
| "start-deps:no-delay": "pnpm pre && pnpm run deps-compose up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nDependencies started in the background as Docker containers. 'pnpm run stop-deps' to stop them\"", |
| "wait-until-postgres-is-ready": "command -v pg_isready >/dev/null 2>&1 && pnpm run wait-until-postgres-is-ready:pg_isready || sleep 10 # not everyone has pg_isready installed, so we fallback to sleeping", | ||
| "start-deps:no-delay": "pnpm pre && pnpm run deps-compose up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nDependencies started in the background as Docker containers. 'pnpm run stop-deps' to stop them\"n", | ||
| "start-deps": "POSTGRES_DELAY_MS=${POSTGRES_DELAY_MS:-20} pnpm run start-deps:no-delay", | ||
| "start-deps:minimal:no-delay": "pnpm pre && pnpm run deps-compose:minimal up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nMinimal dependencies started (7 containers). 'pnpm run stop-deps:minimal' to stop them\"n", |
There was a problem hiding this comment.
Typo detected: The echo command ends with "n" which might be a mistake. Consider changing it to "\n" if a newline is intended.
| "start-deps:minimal:no-delay": "pnpm pre && pnpm run deps-compose:minimal up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nMinimal dependencies started (7 containers). 'pnpm run stop-deps:minimal' to stop them\"n", | |
| "start-deps:minimal:no-delay": "pnpm pre && pnpm run deps-compose:minimal up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run db:init && echo \"\\nMinimal dependencies started (7 containers). 'pnpm run stop-deps:minimal' to stop them\\n\"," |
There was a problem hiding this comment.
Review by RecurseML
🔍 Review performed on 017b43f..aa2321b
✨ No bugs found, your code is sparkling clean
✅ Files analyzed, no issues (50)
• apps/dashboard/messages/en.json
• apps/dashboard/messages/zh.json
• apps/dashboard/next.config.mjs
• apps/dashboard/package.json
• apps/dashboard/src/app/(main)/(protected)/(outside-dashboard)/new-project/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/(outside-dashboard)/projects/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/globe.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/line-chart.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/metrics-page.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/setup-page.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/api-keys/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/domains/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/email-drafts/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/email-templates/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/email-themes/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/emails/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/payments/transactions/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-permissions/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/sidebar-layout.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/team-permissions/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/team-settings/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/teams/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/users/[userId]/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/users/page-client.tsx
• apps/dashboard/src/app/(main)/(protected)/projects/[projectId]/webhooks/page-client.tsx
• apps/dashboard/src/app/(main)/i18n-test/page.tsx
• apps/dashboard/src/app/layout.tsx
• apps/dashboard/src/components/data-table/api-key-table.tsx
• apps/dashboard/src/components/data-table/payment-item-table.tsx
• apps/dashboard/src/components/data-table/payment-product-table.tsx
• apps/dashboard/src/components/data-table/permission-table.tsx
• apps/dashboard/src/components/data-table/team-member-table.tsx
• apps/dashboard/src/components/data-table/team-table.tsx
• apps/dashboard/src/components/data-table/transaction-table.tsx
• apps/dashboard/src/components/data-table/user-table.tsx
• apps/dashboard/src/components/language-switcher.tsx
• apps/dashboard/src/components/navbar.tsx
• apps/dashboard/src/components/user-dialog.tsx
• apps/dashboard/src/i18n/request.ts
• apps/dashboard/src/i18n/routing.ts
• docker/dependencies/README.md
• docker/dependencies/docker.compose.minimal.yaml
• package.json
• packages/stack-ui/src/components/data-table/data-table.tsx
• packages/stack-ui/src/components/data-table/pagination.tsx
• packages/stack-ui/src/components/data-table/toolbar.tsx
• packages/stack-ui/src/components/data-table/view-options.tsx
• pnpm-lock.yaml
• scripts/check-docker.sh
⏭️ Files skipped (4)
| Locations |
|---|
scripts/fix-docker.sh |
scripts/kill-dev-servers.sh |
scripts/restart-dev-basic.sh |
scripts/start-dev.sh |
High-level PR Summary
This PR adds comprehensive internationalization (i18n) support to the Stack Auth dashboard, implementing next-intl for multilingual support with English and Chinese (Simplified) translations. It includes over 1,000 translated strings covering all dashboard components, a language switcher UI component, and complete i18n configuration using Next.js 15's routing capabilities. Additionally, it introduces a minimal Docker Compose configuration (7 containers vs 16) for resource-constrained development environments and adds several developer experience scripts for managing Docker services and dev servers.
⏱️ Estimated Review Time: 30-90 minutes
💡 Review Order Suggestion
apps/dashboard/src/i18n/routing.tsapps/dashboard/src/i18n/request.tsapps/dashboard/messages/en.jsonapps/dashboard/messages/zh.jsonapps/dashboard/src/app/layout.tsxapps/dashboard/next.config.mjsapps/dashboard/package.jsonapps/dashboard/src/components/language-switcher.tsxapps/dashboard/src/components/navbar.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/sidebar-layout.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/setup-page.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/metrics-page.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/line-chart.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/(overview)/globe.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/users/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/users/[userId]/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/teams/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/api-keys/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/domains/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/webhooks/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/emails/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/email-templates/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/email-themes/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/email-drafts/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/payments/transactions/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-permissions/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/team-permissions/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/team-settings/page-client.tsxapps/dashboard/src/app/(main)/(protected)/projects/[projectId]/project-settings/page-client.tsxapps/dashboard/src/app/(main)/(protected)/(outside-dashboard)/new-project/page-client.tsxapps/dashboard/src/app/(main)/(protected)/(outside-dashboard)/projects/page-client.tsxapps/dashboard/src/app/(main)/i18n-test/page.tsxapps/dashboard/src/components/user-dialog.tsxapps/dashboard/src/components/data-table/user-table.tsxapps/dashboard/src/components/data-table/team-table.tsxapps/dashboard/src/components/data-table/team-member-table.tsxapps/dashboard/src/components/data-table/permission-table.tsxapps/dashboard/src/components/data-table/api-key-table.tsxapps/dashboard/src/components/data-table/payment-product-table.tsxapps/dashboard/src/components/data-table/payment-item-table.tsxapps/dashboard/src/components/data-table/transaction-table.tsxpackages/stack-ui/src/components/data-table/data-table.tsxpackages/stack-ui/src/components/data-table/pagination.tsxpackages/stack-ui/src/components/data-table/toolbar.tsxpackages/stack-ui/src/components/data-table/view-options.tsxdocker/dependencies/docker.compose.minimal.yamldocker/dependencies/README.mdscripts/kill-dev-servers.shscripts/restart-dev-basic.shscripts/fix-docker.shscripts/check-docker.shscripts/start-dev.shpackage.jsonpnpm-lock.yamldocker/dependencies/docker.compose.minimal.yamldocker/dependencies/README.mdscripts/kill-dev-servers.shscripts/restart-dev-basic.shscripts/fix-docker.shscripts/check-docker.shscripts/start-dev.shpackage.jsonImportant
Integrate i18n support using
next-intl, add language switcher, update components for translations, and introduce Docker management scripts.next-intlfor i18n support inlayout.tsxandrequest.ts.LanguageSwitchercomponent inlanguage-switcher.tsx.i18n-test/page.tsx.next.config.mjsto includecreateNextIntlPlugin.package.jsonto addnext-intldependency.useTranslationsfor text, e.g.,navbar.tsx,sidebar-layout.tsx.api-key-table.tsx,payment-item-table.tsx.docker.compose.minimal.yamlfor minimal Docker setup.check-docker.sh,kill-dev-servers.sh.This description was created by
for aa2321b. You can customize this summary. It will automatically update as commits are pushed.
Summary by CodeRabbit
New Features
Chores
Documentation