浏览代码

统一移动到web目录下

yourname 1 月之前
父节点
当前提交
cf450b9e7c
共有 100 个文件被更改,包括 214 次插入148 次删除
  1. 10 148
      package.json
  2. 0 0
      web/.env.example
  3. 0 0
      web/.env.test.example
  4. 53 0
      web/.gitignore
  5. 0 0
      web/.npmrc
  6. 0 0
      web/.rooignore
  7. 0 0
      web/Dockerfile.release
  8. 0 0
      web/Dockerfile.test
  9. 0 0
      web/README.md
  10. 0 0
      web/components.json
  11. 0 0
      web/docker-compose.yml
  12. 0 0
      web/eslint.config.js
  13. 0 0
      web/index.html
  14. 151 0
      web/package.json
  15. 0 0
      web/pnpm-lock.yaml
  16. 0 0
      web/public/vite.svg
  17. 0 0
      web/server.js
  18. 0 0
      web/src/assets/react.svg
  19. 0 0
      web/src/client/admin/components/AvatarSelector.tsx
  20. 0 0
      web/src/client/admin/components/DataTablePagination.tsx
  21. 0 0
      web/src/client/admin/components/ErrorPage.tsx
  22. 0 0
      web/src/client/admin/components/FileSelector.tsx
  23. 0 0
      web/src/client/admin/components/MinioUploader.tsx
  24. 0 0
      web/src/client/admin/components/NotFoundPage.tsx
  25. 0 0
      web/src/client/admin/components/ProtectedRoute.tsx
  26. 0 0
      web/src/client/admin/hooks/AuthProvider.tsx
  27. 0 0
      web/src/client/admin/index.tsx
  28. 0 0
      web/src/client/admin/layouts/MainLayout.tsx
  29. 0 0
      web/src/client/admin/menu.tsx
  30. 0 0
      web/src/client/admin/pages/Dashboard.tsx
  31. 0 0
      web/src/client/admin/pages/Files.tsx
  32. 0 0
      web/src/client/admin/pages/Login.tsx
  33. 0 0
      web/src/client/admin/pages/Users.tsx
  34. 0 0
      web/src/client/admin/routes.tsx
  35. 0 0
      web/src/client/api.ts
  36. 0 0
      web/src/client/components/ui/accordion.tsx
  37. 0 0
      web/src/client/components/ui/alert-dialog.tsx
  38. 0 0
      web/src/client/components/ui/alert.tsx
  39. 0 0
      web/src/client/components/ui/aspect-ratio.tsx
  40. 0 0
      web/src/client/components/ui/avatar.tsx
  41. 0 0
      web/src/client/components/ui/badge.tsx
  42. 0 0
      web/src/client/components/ui/breadcrumb.tsx
  43. 0 0
      web/src/client/components/ui/button.tsx
  44. 0 0
      web/src/client/components/ui/calendar.tsx
  45. 0 0
      web/src/client/components/ui/card.tsx
  46. 0 0
      web/src/client/components/ui/carousel.tsx
  47. 0 0
      web/src/client/components/ui/chart.tsx
  48. 0 0
      web/src/client/components/ui/checkbox.tsx
  49. 0 0
      web/src/client/components/ui/collapsible.tsx
  50. 0 0
      web/src/client/components/ui/command.tsx
  51. 0 0
      web/src/client/components/ui/context-menu.tsx
  52. 0 0
      web/src/client/components/ui/dialog.tsx
  53. 0 0
      web/src/client/components/ui/drawer.tsx
  54. 0 0
      web/src/client/components/ui/dropdown-menu.tsx
  55. 0 0
      web/src/client/components/ui/form.tsx
  56. 0 0
      web/src/client/components/ui/hover-card.tsx
  57. 0 0
      web/src/client/components/ui/input-otp.tsx
  58. 0 0
      web/src/client/components/ui/input.tsx
  59. 0 0
      web/src/client/components/ui/label.tsx
  60. 0 0
      web/src/client/components/ui/menubar.tsx
  61. 0 0
      web/src/client/components/ui/navigation-menu.tsx
  62. 0 0
      web/src/client/components/ui/pagination.tsx
  63. 0 0
      web/src/client/components/ui/popover.tsx
  64. 0 0
      web/src/client/components/ui/progress.tsx
  65. 0 0
      web/src/client/components/ui/radio-group.tsx
  66. 0 0
      web/src/client/components/ui/resizable.tsx
  67. 0 0
      web/src/client/components/ui/scroll-area.tsx
  68. 0 0
      web/src/client/components/ui/select.tsx
  69. 0 0
      web/src/client/components/ui/separator.tsx
  70. 0 0
      web/src/client/components/ui/sheet.tsx
  71. 0 0
      web/src/client/components/ui/sidebar.tsx
  72. 0 0
      web/src/client/components/ui/skeleton.tsx
  73. 0 0
      web/src/client/components/ui/slider.tsx
  74. 0 0
      web/src/client/components/ui/sonner.tsx
  75. 0 0
      web/src/client/components/ui/switch.tsx
  76. 0 0
      web/src/client/components/ui/table.tsx
  77. 0 0
      web/src/client/components/ui/tabs.tsx
  78. 0 0
      web/src/client/components/ui/textarea.tsx
  79. 0 0
      web/src/client/components/ui/toggle-group.tsx
  80. 0 0
      web/src/client/components/ui/toggle.tsx
  81. 0 0
      web/src/client/components/ui/tooltip.tsx
  82. 0 0
      web/src/client/home/components/ErrorPage.tsx
  83. 0 0
      web/src/client/home/components/NotFoundPage.tsx
  84. 0 0
      web/src/client/home/components/ProtectedRoute.tsx
  85. 0 0
      web/src/client/home/hooks/AuthProvider.tsx
  86. 0 0
      web/src/client/home/index.tsx
  87. 0 0
      web/src/client/home/layouts/MainLayout.tsx
  88. 0 0
      web/src/client/home/pages/HomePage.tsx
  89. 0 0
      web/src/client/home/pages/LoginPage.tsx
  90. 0 0
      web/src/client/home/pages/MemberPage.tsx
  91. 0 0
      web/src/client/home/pages/RegisterPage.tsx
  92. 0 0
      web/src/client/home/routes.tsx
  93. 0 0
      web/src/client/hooks/use-mobile.ts
  94. 0 0
      web/src/client/index.tsx
  95. 0 0
      web/src/client/lib/utils.ts
  96. 0 0
      web/src/client/utils/ClientOnly.tsx
  97. 0 0
      web/src/client/utils/logger.ts
  98. 0 0
      web/src/client/utils/minio.ts
  99. 0 0
      web/src/client/utils/utils.ts
  100. 0 0
      web/src/server/api.ts

+ 10 - 148
package.json

@@ -1,151 +1,13 @@
 {
-  "name": "d8d-starter",
-  "private": true,
-  "type": "module",
+  "name": "155-138-template-6",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
   "scripts": {
-    "dev": "concurrently \"pnpm run dev:mini\" \"pnpm run dev:web\" \"pnpm run dev:weapp\"",
-    "dev:web": "PORT=8080 node server",
-    "dev:mini": "cd mini && pnpm run dev:h5", 
-    "dev:weapp": "cd mini && pnpm run dev:weapp", 
-    "build": "npm run build:client && npm run build:server",
-    "build:client": "cross-env NODE_ENV=production vite build --outDir dist/client --manifest --mode production",
-    "build:server": "cross-env NODE_ENV=production vite build --ssr src/server/index.tsx --outDir dist/server --mode production",
-    "start": "PORT=8080 cross-env NODE_ENV=production node server",
-    "test": "vitest",
-    "test:coverage": "vitest --coverage",
-    "test:api": "vitest run --project=node",
-    "test:components": "vitest run --project=happy-dom",
-    "test:integration": "vitest run --project=happy-dom",
-    "test:api:coverage": "vitest run --coverage --project=node",
-    "test:components:coverage": "vitest run --coverage --project=happy-dom",
-    "test:unit": "vitest run tests/unit",
-    "test:integration:server": "vitest run tests/integration/server",
-    "test:integration:client": "vitest run tests/integration/client",
-    "test:e2e": "playwright test --config=tests/e2e/playwright.config.ts",
-    "test:e2e:ui": "playwright test --config=tests/e2e/playwright.config.ts --ui",
-    "test:e2e:debug": "playwright test --config=tests/e2e/playwright.config.ts --debug",
-    "test:e2e:chromium": "playwright test --config=tests/e2e/playwright.config.ts --project=chromium",
-    "db:migrate": "tsx scripts/migrate.ts",
-    "db:seed": "tsx scripts/seed.ts",
-    "db:reset": "tsx scripts/reset-db.ts",
-    "db:backup": "tsx src/server/utils/backup.ts backup",
-    "db:restore": "tsx src/server/utils/restore.ts restore",
-    "db:backup:list": "tsx src/server/utils/restore.ts list",
-    "db:backup:latest": "tsx src/server/utils/restore.ts latest",
-    "db:backup:cleanup": "tsx src/server/utils/backup.ts cleanup",
-    "test:analyze": "node scripts/analyze-test-results.js",
-    "lint": "eslint . --ext .ts,.tsx",
-    "lint:fix": "eslint . --ext .ts,.tsx --fix",
-    "typecheck": "tsc --noEmit --project ."
+    "test": "echo \"Error: no test specified\" && exit 1"
   },
-  "dependencies": {
-    "@ant-design/icons": "^6.0.0",
-    "@heroicons/react": "^2.2.0",
-    "@hono/node-server": "^1.17.1",
-    "@hono/react-renderer": "^1.0.1",
-    "@hono/swagger-ui": "^0.5.2",
-    "@hono/zod-openapi": "^1.0.2",
-    "@hookform/resolvers": "^5.2.1",
-    "@radix-ui/react-accordion": "^1.2.11",
-    "@radix-ui/react-alert-dialog": "^1.1.14",
-    "@radix-ui/react-aspect-ratio": "^1.1.7",
-    "@radix-ui/react-avatar": "^1.1.10",
-    "@radix-ui/react-checkbox": "^1.3.2",
-    "@radix-ui/react-collapsible": "^1.1.11",
-    "@radix-ui/react-context-menu": "^2.2.15",
-    "@radix-ui/react-dialog": "^1.1.14",
-    "@radix-ui/react-dropdown-menu": "^2.1.15",
-    "@radix-ui/react-hover-card": "^1.1.14",
-    "@radix-ui/react-label": "^2.1.7",
-    "@radix-ui/react-menubar": "^1.1.15",
-    "@radix-ui/react-navigation-menu": "^1.2.13",
-    "@radix-ui/react-popover": "^1.1.14",
-    "@radix-ui/react-progress": "^1.1.7",
-    "@radix-ui/react-radio-group": "^1.3.7",
-    "@radix-ui/react-scroll-area": "^1.2.9",
-    "@radix-ui/react-select": "^2.2.5",
-    "@radix-ui/react-separator": "^1.1.7",
-    "@radix-ui/react-slider": "^1.3.5",
-    "@radix-ui/react-slot": "^1.2.3",
-    "@radix-ui/react-switch": "^1.2.5",
-    "@radix-ui/react-tabs": "^1.1.12",
-    "@radix-ui/react-toggle": "^1.1.9",
-    "@radix-ui/react-toggle-group": "^1.1.10",
-    "@radix-ui/react-tooltip": "^1.2.7",
-    "@tanstack/react-query": "^5.83.0",
-    "@types/node-cron": "^3.0.11",
-    "axios": "^1.11.0",
-    "bcrypt": "^6.0.0",
-    "class-variance-authority": "^0.7.1",
-    "clsx": "^2.1.1",
-    "cmdk": "^1.1.1",
-    "compression": "^1.8.0",
-    "date-fns": "^4.1.0",
-    "dayjs": "^1.11.13",
-    "debug": "^4.4.1",
-    "dotenv": "^17.2.1",
-    "embla-carousel-react": "^8.6.0",
-    "formdata-node": "^6.0.3",
-    "hono": "^4.8.5",
-    "input-otp": "^1.4.2",
-    "ioredis": "^5.6.1",
-    "jsonwebtoken": "^9.0.2",
-    "lucide-react": "^0.536.0",
-    "minio": "^8.0.5",
-    "next-themes": "^0.4.6",
-    "node-cron": "^4.2.1",
-    "pg": "^8.16.3",
-    "pg-dump-restore": "1.0.13",
-    "rc-upload": "^4.9.2",
-    "react": "^19.1.0",
-    "react-day-picker": "^9.8.1",
-    "react-dom": "^19.1.0",
-    "react-hook-form": "^7.61.1",
-    "react-resizable-panels": "^3.0.4",
-    "react-router": "^7.7.0",
-    "react-router-dom": "^7.7.0",
-    "recharts": "2.15.4",
-    "react-toastify": "^11.0.5",
-    "reflect-metadata": "^0.2.2",
-    "sirv": "^3.0.1",
-    "uuid": "^11.1.0",
-    "sonner": "^2.0.7",
-    "tailwind-merge": "^3.3.1",
-    "tw-animate-css": "^1.3.6",
-    "typeorm": "^0.3.25",
-    "vaul": "^1.1.2",
-    "zod": "^4.0.15"
-  },
-  "devDependencies": {
-    "@eslint/js": "^9.35.0",
-    "@playwright/test": "1.55.0",
-    "@tailwindcss/vite": "^4.1.11",
-    "@testing-library/jest-dom": "^6.8.0",
-    "@testing-library/react": "^16.3.0",
-    "@testing-library/user-event": "^14.6.1",
-    "@types/bcrypt": "^6.0.0",
-    "@types/debug": "^4.1.12",
-    "@types/jsonwebtoken": "^9.0.10",
-    "@types/node": "^24.0.10",
-    "@types/react": "^19.1.8",
-    "@types/react-dom": "^19.1.6",
-    "@typescript-eslint/eslint-plugin": "^8.43.0",
-    "@typescript-eslint/parser": "^8.43.0",
-    "@vitejs/plugin-react-swc": "^3.10.2",
-    "@vitest/coverage-v8": "^3.2.4",
-    "concurrently": "^9.2.0",
-    "cross-env": "^7.0.3",
-    "eslint": "^9.35.0",
-    "eslint-plugin-react": "^7.37.5",
-    "eslint-plugin-react-hooks": "^5.2.0",
-    "globals": "^16.4.0",
-    "happy-dom": "^18.0.1",
-    "tailwindcss": "^4.1.11",
-    "tsx": "^4.20.3",
-    "typescript": "~5.8.3",
-    "vite": "^7.0.0",
-    "vite-plugin-iframe-communicator": "^0.0.10",
-    "vite-progress-tracking-plugin": "^0.0.2",
-    "vitest": "^3.2.4"
-  }
-}
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "packageManager": "pnpm@10.18.3"
+}

+ 0 - 0
.env.example → web/.env.example


+ 0 - 0
.env.test.example → web/.env.test.example


+ 53 - 0
web/.gitignore

@@ -0,0 +1,53 @@
+# prod
+dist/
+dist-server/
+
+bun.lock
+package-lock.json
+
+# dev
+.yarn/
+!.yarn/releases
+.vscode/*
+!.vscode/launch.json
+!.vscode/*.code-snippets
+.idea/workspace.xml
+.idea/usage.statistics.xml
+.idea/shelf
+
+# deps
+node_modules/
+.wrangler
+
+# env
+.env
+.env.production
+.env.development
+.dev.vars
+
+# logs
+logs/
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+# misc
+.DS_Store
+
+.pnpm-store
+old
+certs
+
+# test artifacts
+test-results/
+playwright-report/
+coverage/
+
+# database backups
+backups/
+scripts/time_logger.sh
+loop.txt
+.nfs*

+ 0 - 0
.npmrc → web/.npmrc


+ 0 - 0
.rooignore → web/.rooignore


+ 0 - 0
Dockerfile.release → web/Dockerfile.release


+ 0 - 0
Dockerfile.test → web/Dockerfile.test


+ 0 - 0
README.md → web/README.md


+ 0 - 0
components.json → web/components.json


+ 0 - 0
docker-compose.yml → web/docker-compose.yml


+ 0 - 0
eslint.config.js → web/eslint.config.js


+ 0 - 0
index.html → web/index.html


+ 151 - 0
web/package.json

@@ -0,0 +1,151 @@
+{
+  "name": "d8d-starter",
+  "private": true,
+  "type": "module",
+  "scripts": {
+    "dev": "concurrently \"pnpm run dev:mini\" \"pnpm run dev:web\" \"pnpm run dev:weapp\"",
+    "dev:web": "PORT=8080 node server",
+    "dev:mini": "cd mini && pnpm run dev:h5", 
+    "dev:weapp": "cd mini && pnpm run dev:weapp", 
+    "build": "npm run build:client && npm run build:server",
+    "build:client": "cross-env NODE_ENV=production vite build --outDir dist/client --manifest --mode production",
+    "build:server": "cross-env NODE_ENV=production vite build --ssr src/server/index.tsx --outDir dist/server --mode production",
+    "start": "PORT=8080 cross-env NODE_ENV=production node server",
+    "test": "vitest",
+    "test:coverage": "vitest --coverage",
+    "test:api": "vitest run --project=node",
+    "test:components": "vitest run --project=happy-dom",
+    "test:integration": "vitest run --project=happy-dom",
+    "test:api:coverage": "vitest run --coverage --project=node",
+    "test:components:coverage": "vitest run --coverage --project=happy-dom",
+    "test:unit": "vitest run tests/unit",
+    "test:integration:server": "vitest run tests/integration/server",
+    "test:integration:client": "vitest run tests/integration/client",
+    "test:e2e": "playwright test --config=tests/e2e/playwright.config.ts",
+    "test:e2e:ui": "playwright test --config=tests/e2e/playwright.config.ts --ui",
+    "test:e2e:debug": "playwright test --config=tests/e2e/playwright.config.ts --debug",
+    "test:e2e:chromium": "playwright test --config=tests/e2e/playwright.config.ts --project=chromium",
+    "db:migrate": "tsx scripts/migrate.ts",
+    "db:seed": "tsx scripts/seed.ts",
+    "db:reset": "tsx scripts/reset-db.ts",
+    "db:backup": "tsx src/server/utils/backup.ts backup",
+    "db:restore": "tsx src/server/utils/restore.ts restore",
+    "db:backup:list": "tsx src/server/utils/restore.ts list",
+    "db:backup:latest": "tsx src/server/utils/restore.ts latest",
+    "db:backup:cleanup": "tsx src/server/utils/backup.ts cleanup",
+    "test:analyze": "node scripts/analyze-test-results.js",
+    "lint": "eslint . --ext .ts,.tsx",
+    "lint:fix": "eslint . --ext .ts,.tsx --fix",
+    "typecheck": "tsc --noEmit --project ."
+  },
+  "dependencies": {
+    "@ant-design/icons": "^6.0.0",
+    "@heroicons/react": "^2.2.0",
+    "@hono/node-server": "^1.17.1",
+    "@hono/react-renderer": "^1.0.1",
+    "@hono/swagger-ui": "^0.5.2",
+    "@hono/zod-openapi": "^1.0.2",
+    "@hookform/resolvers": "^5.2.1",
+    "@radix-ui/react-accordion": "^1.2.11",
+    "@radix-ui/react-alert-dialog": "^1.1.14",
+    "@radix-ui/react-aspect-ratio": "^1.1.7",
+    "@radix-ui/react-avatar": "^1.1.10",
+    "@radix-ui/react-checkbox": "^1.3.2",
+    "@radix-ui/react-collapsible": "^1.1.11",
+    "@radix-ui/react-context-menu": "^2.2.15",
+    "@radix-ui/react-dialog": "^1.1.14",
+    "@radix-ui/react-dropdown-menu": "^2.1.15",
+    "@radix-ui/react-hover-card": "^1.1.14",
+    "@radix-ui/react-label": "^2.1.7",
+    "@radix-ui/react-menubar": "^1.1.15",
+    "@radix-ui/react-navigation-menu": "^1.2.13",
+    "@radix-ui/react-popover": "^1.1.14",
+    "@radix-ui/react-progress": "^1.1.7",
+    "@radix-ui/react-radio-group": "^1.3.7",
+    "@radix-ui/react-scroll-area": "^1.2.9",
+    "@radix-ui/react-select": "^2.2.5",
+    "@radix-ui/react-separator": "^1.1.7",
+    "@radix-ui/react-slider": "^1.3.5",
+    "@radix-ui/react-slot": "^1.2.3",
+    "@radix-ui/react-switch": "^1.2.5",
+    "@radix-ui/react-tabs": "^1.1.12",
+    "@radix-ui/react-toggle": "^1.1.9",
+    "@radix-ui/react-toggle-group": "^1.1.10",
+    "@radix-ui/react-tooltip": "^1.2.7",
+    "@tanstack/react-query": "^5.83.0",
+    "@types/node-cron": "^3.0.11",
+    "axios": "^1.11.0",
+    "bcrypt": "^6.0.0",
+    "class-variance-authority": "^0.7.1",
+    "clsx": "^2.1.1",
+    "cmdk": "^1.1.1",
+    "compression": "^1.8.0",
+    "date-fns": "^4.1.0",
+    "dayjs": "^1.11.13",
+    "debug": "^4.4.1",
+    "dotenv": "^17.2.1",
+    "embla-carousel-react": "^8.6.0",
+    "formdata-node": "^6.0.3",
+    "hono": "^4.8.5",
+    "input-otp": "^1.4.2",
+    "ioredis": "^5.6.1",
+    "jsonwebtoken": "^9.0.2",
+    "lucide-react": "^0.536.0",
+    "minio": "^8.0.5",
+    "next-themes": "^0.4.6",
+    "node-cron": "^4.2.1",
+    "pg": "^8.16.3",
+    "pg-dump-restore": "1.0.13",
+    "rc-upload": "^4.9.2",
+    "react": "^19.1.0",
+    "react-day-picker": "^9.8.1",
+    "react-dom": "^19.1.0",
+    "react-hook-form": "^7.61.1",
+    "react-resizable-panels": "^3.0.4",
+    "react-router": "^7.7.0",
+    "react-router-dom": "^7.7.0",
+    "recharts": "2.15.4",
+    "react-toastify": "^11.0.5",
+    "reflect-metadata": "^0.2.2",
+    "sirv": "^3.0.1",
+    "uuid": "^11.1.0",
+    "sonner": "^2.0.7",
+    "tailwind-merge": "^3.3.1",
+    "tw-animate-css": "^1.3.6",
+    "typeorm": "^0.3.25",
+    "vaul": "^1.1.2",
+    "zod": "^4.0.15"
+  },
+  "devDependencies": {
+    "@eslint/js": "^9.35.0",
+    "@playwright/test": "1.55.0",
+    "@tailwindcss/vite": "^4.1.11",
+    "@testing-library/jest-dom": "^6.8.0",
+    "@testing-library/react": "^16.3.0",
+    "@testing-library/user-event": "^14.6.1",
+    "@types/bcrypt": "^6.0.0",
+    "@types/debug": "^4.1.12",
+    "@types/jsonwebtoken": "^9.0.10",
+    "@types/node": "^24.0.10",
+    "@types/react": "^19.1.8",
+    "@types/react-dom": "^19.1.6",
+    "@typescript-eslint/eslint-plugin": "^8.43.0",
+    "@typescript-eslint/parser": "^8.43.0",
+    "@vitejs/plugin-react-swc": "^3.10.2",
+    "@vitest/coverage-v8": "^3.2.4",
+    "concurrently": "^9.2.0",
+    "cross-env": "^7.0.3",
+    "eslint": "^9.35.0",
+    "eslint-plugin-react": "^7.37.5",
+    "eslint-plugin-react-hooks": "^5.2.0",
+    "globals": "^16.4.0",
+    "happy-dom": "^18.0.1",
+    "tailwindcss": "^4.1.11",
+    "tsx": "^4.20.3",
+    "typescript": "~5.8.3",
+    "vite": "^7.0.0",
+    "vite-plugin-iframe-communicator": "^0.0.10",
+    "vite-progress-tracking-plugin": "^0.0.2",
+    "vitest": "^3.2.4"
+  }
+}

+ 0 - 0
pnpm-lock.yaml → web/pnpm-lock.yaml


+ 0 - 0
public/vite.svg → web/public/vite.svg


+ 0 - 0
server.js → web/server.js


+ 0 - 0
src/assets/react.svg → web/src/assets/react.svg


+ 0 - 0
src/client/admin/components/AvatarSelector.tsx → web/src/client/admin/components/AvatarSelector.tsx


+ 0 - 0
src/client/admin/components/DataTablePagination.tsx → web/src/client/admin/components/DataTablePagination.tsx


+ 0 - 0
src/client/admin/components/ErrorPage.tsx → web/src/client/admin/components/ErrorPage.tsx


+ 0 - 0
src/client/admin/components/FileSelector.tsx → web/src/client/admin/components/FileSelector.tsx


+ 0 - 0
src/client/admin/components/MinioUploader.tsx → web/src/client/admin/components/MinioUploader.tsx


+ 0 - 0
src/client/admin/components/NotFoundPage.tsx → web/src/client/admin/components/NotFoundPage.tsx


+ 0 - 0
src/client/admin/components/ProtectedRoute.tsx → web/src/client/admin/components/ProtectedRoute.tsx


+ 0 - 0
src/client/admin/hooks/AuthProvider.tsx → web/src/client/admin/hooks/AuthProvider.tsx


+ 0 - 0
src/client/admin/index.tsx → web/src/client/admin/index.tsx


+ 0 - 0
src/client/admin/layouts/MainLayout.tsx → web/src/client/admin/layouts/MainLayout.tsx


+ 0 - 0
src/client/admin/menu.tsx → web/src/client/admin/menu.tsx


+ 0 - 0
src/client/admin/pages/Dashboard.tsx → web/src/client/admin/pages/Dashboard.tsx


+ 0 - 0
src/client/admin/pages/Files.tsx → web/src/client/admin/pages/Files.tsx


+ 0 - 0
src/client/admin/pages/Login.tsx → web/src/client/admin/pages/Login.tsx


+ 0 - 0
src/client/admin/pages/Users.tsx → web/src/client/admin/pages/Users.tsx


+ 0 - 0
src/client/admin/routes.tsx → web/src/client/admin/routes.tsx


+ 0 - 0
src/client/api.ts → web/src/client/api.ts


+ 0 - 0
src/client/components/ui/accordion.tsx → web/src/client/components/ui/accordion.tsx


+ 0 - 0
src/client/components/ui/alert-dialog.tsx → web/src/client/components/ui/alert-dialog.tsx


+ 0 - 0
src/client/components/ui/alert.tsx → web/src/client/components/ui/alert.tsx


+ 0 - 0
src/client/components/ui/aspect-ratio.tsx → web/src/client/components/ui/aspect-ratio.tsx


+ 0 - 0
src/client/components/ui/avatar.tsx → web/src/client/components/ui/avatar.tsx


+ 0 - 0
src/client/components/ui/badge.tsx → web/src/client/components/ui/badge.tsx


+ 0 - 0
src/client/components/ui/breadcrumb.tsx → web/src/client/components/ui/breadcrumb.tsx


+ 0 - 0
src/client/components/ui/button.tsx → web/src/client/components/ui/button.tsx


+ 0 - 0
src/client/components/ui/calendar.tsx → web/src/client/components/ui/calendar.tsx


+ 0 - 0
src/client/components/ui/card.tsx → web/src/client/components/ui/card.tsx


+ 0 - 0
src/client/components/ui/carousel.tsx → web/src/client/components/ui/carousel.tsx


+ 0 - 0
src/client/components/ui/chart.tsx → web/src/client/components/ui/chart.tsx


+ 0 - 0
src/client/components/ui/checkbox.tsx → web/src/client/components/ui/checkbox.tsx


+ 0 - 0
src/client/components/ui/collapsible.tsx → web/src/client/components/ui/collapsible.tsx


+ 0 - 0
src/client/components/ui/command.tsx → web/src/client/components/ui/command.tsx


+ 0 - 0
src/client/components/ui/context-menu.tsx → web/src/client/components/ui/context-menu.tsx


+ 0 - 0
src/client/components/ui/dialog.tsx → web/src/client/components/ui/dialog.tsx


+ 0 - 0
src/client/components/ui/drawer.tsx → web/src/client/components/ui/drawer.tsx


+ 0 - 0
src/client/components/ui/dropdown-menu.tsx → web/src/client/components/ui/dropdown-menu.tsx


+ 0 - 0
src/client/components/ui/form.tsx → web/src/client/components/ui/form.tsx


+ 0 - 0
src/client/components/ui/hover-card.tsx → web/src/client/components/ui/hover-card.tsx


+ 0 - 0
src/client/components/ui/input-otp.tsx → web/src/client/components/ui/input-otp.tsx


+ 0 - 0
src/client/components/ui/input.tsx → web/src/client/components/ui/input.tsx


+ 0 - 0
src/client/components/ui/label.tsx → web/src/client/components/ui/label.tsx


+ 0 - 0
src/client/components/ui/menubar.tsx → web/src/client/components/ui/menubar.tsx


+ 0 - 0
src/client/components/ui/navigation-menu.tsx → web/src/client/components/ui/navigation-menu.tsx


+ 0 - 0
src/client/components/ui/pagination.tsx → web/src/client/components/ui/pagination.tsx


+ 0 - 0
src/client/components/ui/popover.tsx → web/src/client/components/ui/popover.tsx


+ 0 - 0
src/client/components/ui/progress.tsx → web/src/client/components/ui/progress.tsx


+ 0 - 0
src/client/components/ui/radio-group.tsx → web/src/client/components/ui/radio-group.tsx


+ 0 - 0
src/client/components/ui/resizable.tsx → web/src/client/components/ui/resizable.tsx


+ 0 - 0
src/client/components/ui/scroll-area.tsx → web/src/client/components/ui/scroll-area.tsx


+ 0 - 0
src/client/components/ui/select.tsx → web/src/client/components/ui/select.tsx


+ 0 - 0
src/client/components/ui/separator.tsx → web/src/client/components/ui/separator.tsx


+ 0 - 0
src/client/components/ui/sheet.tsx → web/src/client/components/ui/sheet.tsx


+ 0 - 0
src/client/components/ui/sidebar.tsx → web/src/client/components/ui/sidebar.tsx


+ 0 - 0
src/client/components/ui/skeleton.tsx → web/src/client/components/ui/skeleton.tsx


+ 0 - 0
src/client/components/ui/slider.tsx → web/src/client/components/ui/slider.tsx


+ 0 - 0
src/client/components/ui/sonner.tsx → web/src/client/components/ui/sonner.tsx


+ 0 - 0
src/client/components/ui/switch.tsx → web/src/client/components/ui/switch.tsx


+ 0 - 0
src/client/components/ui/table.tsx → web/src/client/components/ui/table.tsx


+ 0 - 0
src/client/components/ui/tabs.tsx → web/src/client/components/ui/tabs.tsx


+ 0 - 0
src/client/components/ui/textarea.tsx → web/src/client/components/ui/textarea.tsx


+ 0 - 0
src/client/components/ui/toggle-group.tsx → web/src/client/components/ui/toggle-group.tsx


+ 0 - 0
src/client/components/ui/toggle.tsx → web/src/client/components/ui/toggle.tsx


+ 0 - 0
src/client/components/ui/tooltip.tsx → web/src/client/components/ui/tooltip.tsx


+ 0 - 0
src/client/home/components/ErrorPage.tsx → web/src/client/home/components/ErrorPage.tsx


+ 0 - 0
src/client/home/components/NotFoundPage.tsx → web/src/client/home/components/NotFoundPage.tsx


+ 0 - 0
src/client/home/components/ProtectedRoute.tsx → web/src/client/home/components/ProtectedRoute.tsx


+ 0 - 0
src/client/home/hooks/AuthProvider.tsx → web/src/client/home/hooks/AuthProvider.tsx


+ 0 - 0
src/client/home/index.tsx → web/src/client/home/index.tsx


+ 0 - 0
src/client/home/layouts/MainLayout.tsx → web/src/client/home/layouts/MainLayout.tsx


+ 0 - 0
src/client/home/pages/HomePage.tsx → web/src/client/home/pages/HomePage.tsx


+ 0 - 0
src/client/home/pages/LoginPage.tsx → web/src/client/home/pages/LoginPage.tsx


+ 0 - 0
src/client/home/pages/MemberPage.tsx → web/src/client/home/pages/MemberPage.tsx


+ 0 - 0
src/client/home/pages/RegisterPage.tsx → web/src/client/home/pages/RegisterPage.tsx


+ 0 - 0
src/client/home/routes.tsx → web/src/client/home/routes.tsx


+ 0 - 0
src/client/hooks/use-mobile.ts → web/src/client/hooks/use-mobile.ts


+ 0 - 0
src/client/index.tsx → web/src/client/index.tsx


+ 0 - 0
src/client/lib/utils.ts → web/src/client/lib/utils.ts


+ 0 - 0
src/client/utils/ClientOnly.tsx → web/src/client/utils/ClientOnly.tsx


+ 0 - 0
src/client/utils/logger.ts → web/src/client/utils/logger.ts


+ 0 - 0
src/client/utils/minio.ts → web/src/client/utils/minio.ts


+ 0 - 0
src/client/utils/utils.ts → web/src/client/utils/utils.ts


+ 0 - 0
src/server/api.ts → web/src/server/api.ts


部分文件因为文件数量过多而无法显示