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