Self-hosted web app to manage Ring Intercom access for B&B and small hospitality workflows.
Main use case: create temporary guest links (check-in/check-out window) so guests can unlock the door only during their stay.
Supported languages: English, Italian, Spanish, German.
Most project details are maintained in Docusaurus:
- Docs source:
website/ - Intro:
website/docs/intro.md - Architecture:
website/docs/architecture.md - API (generated from backend docstrings):
website/docs/api/reference.md - Deployment:
website/docs/deployment.md - Development:
website/docs/development.md - Security:
website/docs/security.md - Contributing:
website/docs/contributing.md
Published docs:
https://mrgionsi.github.io/ring-intercom-control/
- Ring account integration (single or multiple accounts per user)
- Intercom unlock from web dashboard
- Guest links with start/end window and max-use limit
- Admin/user role model
- Audit trails for unlocks and login attempts
cd backend && npm install
cd ../frontend && npm installcd backend
cp .env.example .env
npm run devcd frontend
npm run devApp URLs:
- Frontend:
http://localhost:5173 - Backend:
http://localhost:3001
For complete setup, security, Docker, and CI/CD instructions, use the Docusaurus docs above.
The project supports containerized deployment for both backend and frontend.
- Backend image:
backend/Dockerfile - Frontend image:
frontend/Dockerfile - Compose stack:
docker-compose/docker-compose.yml - Env template:
docker-compose/.env.example
Build:
docker build ./frontend -t mrgionsi/ring-intercom-control-frontend:0.1.0-betaRun:
docker run --rm -p 5173:5173 \
-e PORT=5173 \
-e BACKEND_URL=http://host.docker.internal:3001 \
mrgionsi/ring-intercom-control-frontend:0.1.0-betaNotes:
BACKEND_URLis optional. If set,/api/*requests are proxied to backend.host.docker.internalworks by default on Docker Desktop (Windows/macOS). On Linux, add:--add-host=host.docker.internal:host-gateway
- Health endpoint inside container:
GET /healthreturns{ "ok": true }. - Static cache policy:
index.html:no-cache/assets/*:public, max-age=31536000, immutable
Files:
docker-compose/docker-compose.ymldocker-compose/.env
Run:
cd docker-compose
cp .env.example .env
docker compose up -dStop:
cd docker-compose
docker compose downcd backend && npm run build
cd ../frontend && npm run buildPowerShell:
scripts/smoke-test.ps1Bash:
scripts/smoke-test.shOptional authenticated smoke checks:
SMOKE_USERNAME=<username>SMOKE_PASSWORD=<password>SMOKE_BASE_URL=http://localhost:3001
PowerShell:
scripts/security-check.ps1Bash:
scripts/security-check.shCurrent npm audit reports high-severity vulnerabilities in transitive dependencies:
ipviaring-client-api(fix path requires breaking downgrade)tarviasqlite3/node-gyp(fix path requires breaking downgrade)
These are currently tracked and deferred until upstream fix availability and the planned DB migration.
main: stable, production-ready branchdev: integration and pre-release branchfeature/*: short-lived implementation brancheshotfix/*: emergency fixes frommain
- Optional managed DB migration path (Supabase/Postgres)
- Extended automated test coverage (API + UI)
- See
LICENSE.
- Contribution guide:
CONTRIBUTING.md - Security policy:
SECURITY.md - Support:
SUPPORT.md - Issues:
https://github.com/mrgionsi/ring-intercom-control/issues





