Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Manage fleet, service pages, and website enquiries
Translation pending
AI summary · website content
BusinessTypeScript · CSSGitHub @clientreach-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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