Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗This project was created with Better-T-Stack, a modern TypeScript stack that combines Next.js, Hono, and more.
Three applications — a website, an admin and the API behind both — sharing one typed contract. See docs/ARCHITECTURE.md for how they fit together.
apps/web | The public website | http://localhost:3001 |
apps/admin | The admin | http://localhost:3002 |
apps/server | The API | http://localhost:3000 |
packages/core | Types, validation and publishing rules, shared by all three | |
packages/db | Drizzle schema, migrations and the seed | |
packages/ui | Design tokens and the components the site and its previews share |
packages/uiFirst, install the dependencies:
pnpm install
This project uses PostgreSQL with Drizzle ORM.
Make sure you have a PostgreSQL database of your own — on your machine, in
Docker, or a development branch on Neon. Never production: the seed
below rewrites every content table and --samples deletes every real
enquiry, booking and customer.
Update your apps/server/.env file with that database's connection details.
Fill in the Cloudflare R2 variables — every photograph is stored in and served
from that bucket. apps/server/.env.example explains each one.
Apply the schema, then seed it from the website's own content:
pnpm run db:migrate
pnpm run db:seed -- --samples # --samples adds example enquiries and bookings
Seeding is destructive for content and idempotent: it rewrites every content
table from apps/web/src/content/*. It leaves enquiries, bookings and
customers alone unless you ask it not to — and --samples does ask: it
clears them before adding the examples.
It runs only against a database on your machine (or a local container). For
any other host it stops and says so; to rewrite a remote development
database on purpose, name its host:
SEED_DATABASE_HOST=<host> pnpm run db:seed.
The seed writes bucket addresses for the site's own photography. To put the files themselves in the bucket (once, or again to fill a gap):
cd apps/server
bun run scripts/migrate-media-to-r2.ts # says what it would do
bun run scripts/migrate-media-to-r2.ts --apply # does it
Then, run the development server:
pnpm run dev
Open http://localhost:3001 in your browser to see the web application. The API is running at http://localhost:3000.
React web apps in this stack share shadcn/ui primitives through packages/ui.
packages/ui/src/styles/globals.csspackages/ui/src/components/*packages/ui/components.json and apps/web/components.jsonRun this from the project root to add more primitives to the shared UI package:
npx shadcn@latest add accordion dialog popover sheet table -c packages/ui
Import shared components like this:
import { Button } from "@CC-City-Chauffeurs/ui/components/button";
If you want to add app-specific blocks instead of shared primitives, run the shadcn CLI from apps/web.
CC-City-Chauffeurs/
├── apps/
│ ├── web/ # Frontend application (Next.js)
│ └── server/ # Backend API (Hono)
├── packages/
│ ├── ui/ # Shared shadcn/ui components and styles
│ ├── auth/ # Authentication configuration & logic
│ └── db/ # Database schema & queries
pnpm run dev: Start all applications in development modepnpm run build: Build all applicationspnpm run dev:web: Start only the web applicationpnpm run dev:server: Start only the serverpnpm run check-types: Check TypeScript types across all appspnpm run db:push: Push schema changes to databasepnpm run db:generate: Generate database client/typespnpm run db:migrate: Run database migrationspnpm run db:studio: Open database studio UI