This guide helps you run IVISS locally and validate a healthy development setup.
- Docker Engine
20.10+ - Docker Compose
v2+ - Node.js
20+(only if running frontend outside Docker)
From repository root:
cp .env.example .envRequired values for backend startup:
POSTGRES_PASSWORDEXTERNAL_POSTGRES_PASSWORDJWT_PRIVATE_KEY_PEMJWT_PUBLIC_KEY_PEMACTIVATION_CODE_PEPPER(minimum 32 chars)SMS_PROVIDER(vonage,twilio, ororange)
Provider-specific required variables:
- If
SMS_PROVIDER=vonage: setVONAGE_API_KEY,VONAGE_API_SECRET - If
SMS_PROVIDER=twilio: setTWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN,TWILIO_FROM_NUMBER - If
SMS_PROVIDER=orange: setORANGE_CLIENT_ID,ORANGE_CLIENT_SECRET - If
EMAIL_PROVIDER=lettre(orsmtp): setSMTP_HOST,SMTP_PORT,SMTP_USERNAME,SMTP_PASSWORD,SMTP_FROM_EMAIL
Notes:
EMAIL_PROVIDERdefaults tomockif unset.ADMIN_BOOTSTRAP_*variables are optional. If all are set, an admin seed is attempted at startup.EXTERNAL_POSTGRES_PASSWORDis currently required by Docker Compose interpolation, even though external DB integration is not fully used by business workflows yet.
From repository root:
docker compose --profile dev up -d --buildThis starts local development services (database, backend, frontend, adminer, metrics).
Check containers:
docker compose psCheck backend health:
curl http://localhost:3000/api/v1/healthExpected response:
OK
Useful local URLs:
- Frontend:
http://localhost:8080 - Swagger UI:
http://localhost:3000/docs - OpenAPI JSON:
http://localhost:3000/api-doc/openapi.json - Adminer:
http://localhost:8081 - Metrics health:
http://localhost:9091/health
Follow logs:
docker compose logs -f backend
docker compose logs -f frontendRestart a service:
docker compose restart backendStop stack:
docker compose downStop stack and remove volumes (destructive for local DB data):
docker compose down -vIf backend is already running on localhost:3000:
cd frontend
npm install
npm run devNotes:
- Frontend runs on
http://localhost:8080. - On
npm run dev, thepredevhook fetches OpenAPI fromhttp://127.0.0.1:3000/api-doc/openapi.jsonand falls back tofrontend/openapi.jsonif backend is unreachable.
First you need to import the backend .env file
cp iviss-backend/.env.example iviss-backend/.envAnd then run the cargo run command:
cd iviss-backend
cargo build
cargo runNote:
- Backend runs on
http://localhost:3000. - Agent shift windows are defined at the organization level (
start_work_time/end_work_time) during organization create/update, not fromSHIFT_START_HOUR/SHIFT_END_HOURat app startup.
SMS_PROVIDER must be set:
- Set
SMS_PROVIDERin.envwith one ofvonage|twilio|orange.
Invalid SMS_PROVIDER value:
- Use only
vonage,twilio, ororange.
JWT_PRIVATE_KEY_PEM must be set or JWT_PUBLIC_KEY_PEM must be set:
- Ensure both PEM variables are present and non-empty in
.env.
ACTIVATION_CODE_PEPPER must be at least 32 characters:
- Use a longer value in
.env.
Backend unhealthy after startup:
- Check logs with
docker compose logs -f backend. - Confirm DB is healthy with
docker compose ps.