From e135b0b919b710c8bd4602d5d879d5df86579dd6 Mon Sep 17 00:00:00 2001 From: hamid Date: Thu, 18 Jun 2026 01:19:23 +0330 Subject: [PATCH] another step constructing base project --- client/CLAUDE.md | 123 ++- client/middleware.ts | 41 +- client/package-lock.json | 751 ++++++++++-------- client/package.json | 5 + client/src/app/[locale]/layout.tsx | 10 +- client/src/config.ts | 3 + client/src/constants/index.ts | 1 + client/src/constants/routes.ts | 7 + client/src/hooks/auth.ts | 37 +- client/src/layout/PrivateLayout.tsx | 12 +- client/src/lib/api/client.ts | 80 ++ client/src/lib/api/errors.ts | 10 + client/src/lib/api/server.ts | 60 ++ client/src/lib/cookies/client.ts | 37 +- client/src/lib/cookies/constants.ts | 16 + client/src/lib/query/QueryProvider.tsx | 17 + client/src/lib/query/queryClient.ts | 27 + client/src/lib/toast/ToastBridge.tsx | 31 + client/src/lib/toast/dispatchToast.ts | 11 + client/src/lib/toast/index.ts | 2 + client/src/services/auth/apis/clientApi.ts | 16 + .../src/services/auth/hooks/useCurrentUser.ts | 11 + client/src/services/auth/hooks/useLogin.ts | 22 + client/src/services/auth/hooks/useLogout.ts | 26 + client/src/services/auth/index.ts | 3 + client/src/services/auth/keys.ts | 4 + client/src/services/auth/types.ts | 14 + 27 files changed, 1022 insertions(+), 355 deletions(-) create mode 100644 client/src/constants/index.ts create mode 100644 client/src/constants/routes.ts create mode 100644 client/src/lib/api/client.ts create mode 100644 client/src/lib/api/errors.ts create mode 100644 client/src/lib/api/server.ts create mode 100644 client/src/lib/query/QueryProvider.tsx create mode 100644 client/src/lib/query/queryClient.ts create mode 100644 client/src/lib/toast/ToastBridge.tsx create mode 100644 client/src/lib/toast/dispatchToast.ts create mode 100644 client/src/lib/toast/index.ts create mode 100644 client/src/services/auth/apis/clientApi.ts create mode 100644 client/src/services/auth/hooks/useCurrentUser.ts create mode 100644 client/src/services/auth/hooks/useLogin.ts create mode 100644 client/src/services/auth/hooks/useLogout.ts create mode 100644 client/src/services/auth/index.ts create mode 100644 client/src/services/auth/keys.ts create mode 100644 client/src/services/auth/types.ts diff --git a/client/CLAUDE.md b/client/CLAUDE.md index 1810573..e55bdde 100644 --- a/client/CLAUDE.md +++ b/client/CLAUDE.md @@ -39,11 +39,27 @@ client/ │ ├── DarkModeButton.tsx # 'use client' — only subscriber to useColorScheme() │ └── index.tsx ├── lib/ + │ ├── api/ + │ │ ├── client.ts # clientFetch — throws ApiError on error; use in hooks/client components + │ │ ├── server.ts # serverFetch — throws ApiError on error; use in RSCs/Server Actions + │ │ └── errors.ts # ApiError class (status, message, code) + │ ├── query/ + │ │ ├── queryClient.ts # makeQueryClient factory + getQueryClient() SSR-safe singleton + │ │ └── QueryProvider.tsx # 'use client' — QueryClientProvider + ReactQueryDevtools │ └── cookies/ # Cookie manager — strict server/client separation - │ ├── constants.ts # COOKIE_NAMES, CookieOptions, COLOR_SCHEME_COOKIE_OPTIONS + │ ├── constants.ts # COOKIE_NAMES, CookieOptions, AUTH_*_COOKIE_OPTIONS │ ├── server.ts # getServerCookie, getThemeMode, setServerCookie │ ├── client.ts # getClientCookie, setClientCookie, deleteClientCookie │ └── index.ts # Re-exports constants ONLY (never server/client) + ├── services/ # Domain services — no top-level barrel; import directly from the file + │ └── {domain}/ + │ ├── types.ts # Request/response types for this domain + │ ├── keys.ts # React Query key factory + │ ├── apis/ + │ │ ├── clientApi.ts # Namespace object wrapping clientFetch calls + │ │ └── serverApi.ts # Namespace object wrapping serverFetch calls (only when needed) + │ └── hooks/ + │ └── use{Action}.ts # One hook per file — useQuery or useMutation ├── store/ # AppStore (Redux-like client state) ├── theme/ │ ├── ColorSchemeScript.tsx # Inline