Running Locally
Because Rendez-vous.ai is a distributed system, the order in which you start the services matters. The Core API relies on the Dashboard (Payload CMS) being available to fetch the GraphQL schema and database records.
Follow these steps to spin up your local development environment.
1. Start Stateful Dependencies
Before starting any Node.js applications, you need your PostgreSQL database and S3-compatible storage (MinIO) running.
Create a docker-compose.yml (or podman-compose.yml) file anywhere on your local machine with the following combined configuration for Postgres and MinIO:
services:
postgres:
container_name: postgres
image: postgres:latest
ports:
- "5432:5432"
environment:
POSTGRES_USER: "admin"
POSTGRES_HOST_AUTH_METHOD: "trust"
minio:
container_name: minio
image: minio/minio:latest
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: "admin"
MINIO_ROOT_PASSWORD: "12345678"
command: server --console-address ":9001" /data
createbuckets:
container_name: createbuckets
image: minio/mc
depends_on:
- minio
restart: 'no'
labels: {"com.docker.compose.oneoff=true"}
deploy: {
restart_policy: {
condition: none
}
}
entrypoint: >
/bin/sh -c "
sleep 5;
/usr/bin/mc alias set myminio http://minio:9000 admin 12345678;
/usr/bin/mc mb -p myminio/media;
exit 0;
"Start the containers in detached mode using Podman:
podman-compose up -dVerify: Ensure your database is accepting connections on
localhost:5432and MinIO is accessible onlocalhost:9001.
2. Start the Dashboard & CMS
The Dashboard acts as the single source of truth. It must be running for the Core API to function.
Open a new terminal window, navigate to the Dashboard repository, install dependencies using pnpm, and start the development server.
cd rdv.ai-dashboard
corepack enable pnpm
pnpm install
pnpm devThe Dashboard should now be accessible at https://localhost:3000Ā .
3. Start the Core API & Ngrok Tunnel
The Core API requires two terminal windows: one for the Express server and one for the Ngrok tunnel (to receive telephony webhooks).
Terminal A (The API Server):
Navigate to the API repository. Remember, this repository uses native npm.
cd rdv.ai-API
npm install
npm run devThe Core API should now be running (typically on http://localhost:3001Ā or the port specified in your .env).
Terminal B (The Ngrok Tunnel):
In the same rdv.ai-API directory, start your Ngrok tunnel using the provided npm script. This relies on the NGROK_URL variable you set in .env.local.
npm run ngrokCopy the public HTTPS URL generated by Ngrok. You will need this for the next step.
4. Bridge Telephony (The K8s Secret)
To test incoming phone calls, you need to tell the cloud-hosted FreeSWITCH instance to route its traffic to your local Ngrok tunnel.
- Ensure you have
kubectlaccess configured for thebetaorstablecluster. - Update the
API_HOSTsecret in thefreeswitchnamespace to match your Ngrok URL.
kubectl edit secret/secret -n freeswitchChange the API_HOST value to your Ngrok domain (e.g., your-domain.ngrok-free.app), omitting the https:// prefix.
Once updated, dialing your test Twilio or VoIP.ms phone numbers will route the call through the Kubernetes FreeSWITCH instance directly into your local rdv.ai-API debugger.
5. Start the Web Widget (Optional)
If you are working on the text-based chat interface, you can start the lightweight Vite development server for the widget.
Open a new terminal window:
cd rdv.ai-widget
corepack enable pnpm
pnpm install
pnpm devThis will spin up a local preview of the widget, allowing you to test its connection to your locally running Core API.