[call-me] - add privacy policy
This commit is contained in:
@@ -26,6 +26,9 @@ const PUBLIC_DIR = path.join(__dirname, '../', 'public');
|
||||
// Home page/client
|
||||
const HOME = path.join(PUBLIC_DIR, '/index.html');
|
||||
|
||||
// Privacy page
|
||||
const PRIVACY = path.join(PUBLIC_DIR, '/privacy.html');
|
||||
|
||||
// Locales directory location
|
||||
const LOCALES_DIR = path.join(__dirname, 'locales');
|
||||
|
||||
@@ -212,6 +215,11 @@ app.get('/', (req, res) => {
|
||||
res.sendFile(HOME);
|
||||
});
|
||||
|
||||
// Serve the privacy policy page
|
||||
app.get('/privacy', (req, res) => {
|
||||
res.sendFile(PRIVACY);
|
||||
});
|
||||
|
||||
// Get Random Background Images
|
||||
app.get('/randomImage', async (req, res) => {
|
||||
if (config.randomImageUrl === '') return; // Keep client default bg image
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "call-me",
|
||||
"version": "1.3.37",
|
||||
"version": "1.3.38",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "call-me",
|
||||
"version": "1.3.37",
|
||||
"version": "1.3.38",
|
||||
"license": "AGPLv3",
|
||||
"dependencies": {
|
||||
"@ngrok/ngrok": "1.7.0",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "call-me",
|
||||
"version": "1.3.37",
|
||||
"version": "1.3.38",
|
||||
"description": "Your Go-To for Instant Video Calls",
|
||||
"author": "Miroslav Pejic - miroslav.pejic.85@gmail.com",
|
||||
"license": "AGPLv3",
|
||||
|
||||
@@ -149,6 +149,10 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="privacy-divider">
|
||||
<span><a href="/privacy" class="privacy-link">Privacy Policy</a></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Call-me - Privacy Policy</title>
|
||||
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Call-me Privacy Policy – learn how we handle your data with minimal collection and end-to-end encryption."
|
||||
/>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png" />
|
||||
<link rel="stylesheet" href="./style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="privacy-container">
|
||||
<div class="privacy-header">
|
||||
<h1>Privacy Policy</h1>
|
||||
</div>
|
||||
|
||||
<div class="privacy-body">
|
||||
<p>
|
||||
<strong>Minimal Data Collection</strong><br />
|
||||
We collect only the minimal data required to provide real-time communication functionality in
|
||||
<strong>Call-me</strong>.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Signaling Data</strong><br />
|
||||
<strong>Call-me</strong> is a real-time peer-to-peer WebRTC application. Establishing a connection
|
||||
requires temporary signaling data such as
|
||||
<a
|
||||
href="https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>RTCICECandidates</a
|
||||
>
|
||||
and
|
||||
<a
|
||||
href="https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>RTCSessionDescription</a
|
||||
>. This data is used only to negotiate the connection between peers.
|
||||
</p>
|
||||
<p>
|
||||
<strong>No Persistent Storage</strong><br />
|
||||
This signaling data is not stored in any persistent database and is discarded immediately after the
|
||||
session ends or the user leaves the call. <strong>Call-me</strong> does not retain chat, audio,
|
||||
video, or file transfer content.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Encryption</strong><br />
|
||||
Media streams are transmitted directly between peers using WebRTC and are encrypted using
|
||||
<a
|
||||
href="https://en.wikipedia.org/wiki/Secure_Real-time_Transport_Protocol"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>Secure Real-time Transport Protocol</a
|
||||
>
|
||||
(SRTP). Data channels used for chat and file sharing via
|
||||
<a
|
||||
href="https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>RTCDataChannel</a
|
||||
>
|
||||
are secured using
|
||||
<a
|
||||
href="https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>Datagram Transport Layer Security</a
|
||||
>
|
||||
(DTLS).
|
||||
</p>
|
||||
<p>
|
||||
<strong>Peer-to-Peer Architecture</strong><br />
|
||||
<strong>Call-me</strong> does not act as an intermediary for user communications. Audio, video, chat
|
||||
messages, and file transfers are exchanged directly between users and are not routed through or
|
||||
stored on <strong>Call-me</strong> servers.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Third-Party Services</strong><br />
|
||||
We do not use third-party analytics, advertising, or tracking services. Our focus is on providing a
|
||||
secure and private communication platform without compromising user privacy.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="privacy-footer">
|
||||
<a class="btn-agree" href="/">AGREE</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -3250,3 +3250,101 @@ z-index:
|
||||
right: var(--spacing-xs);
|
||||
}
|
||||
}
|
||||
|
||||
/* Privacy link in sign-in divider */
|
||||
|
||||
.privacy-divider {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-top: var(--spacing-md);
|
||||
color: var(--text-muted);
|
||||
font-size: var(--font-size-sm);
|
||||
}
|
||||
|
||||
.privacy-divider .privacy-link {
|
||||
color: var(--text-muted);
|
||||
text-decoration: none;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
.privacy-divider .privacy-link:hover {
|
||||
color: var(--primary-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Privacy Policy Page */
|
||||
|
||||
.privacy-container {
|
||||
background: var(--glass-bg-strong);
|
||||
border: 1px solid var(--glass-border);
|
||||
border-radius: var(--border-radius-lg);
|
||||
padding: 40px 36px 32px;
|
||||
backdrop-filter: blur(20px);
|
||||
-webkit-backdrop-filter: blur(20px);
|
||||
box-shadow: var(--shadow-xl);
|
||||
width: 100%;
|
||||
max-width: 720px;
|
||||
margin: 60px auto;
|
||||
}
|
||||
|
||||
.privacy-header {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.privacy-header h1 {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 700;
|
||||
color: var(--text-color);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.privacy-body p {
|
||||
color: var(--text-secondary);
|
||||
font-size: 0.92rem;
|
||||
line-height: 1.7;
|
||||
margin: 0 0 18px;
|
||||
}
|
||||
|
||||
.privacy-body strong {
|
||||
color: var(--text-color);
|
||||
}
|
||||
|
||||
.privacy-body a {
|
||||
color: var(--primary-light);
|
||||
text-decoration: none;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
|
||||
.privacy-body a:hover {
|
||||
color: var(--primary-color);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.privacy-footer {
|
||||
text-align: center;
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
.privacy-footer .btn-agree {
|
||||
display: inline-block;
|
||||
padding: 12px 40px;
|
||||
background: var(--primary-color);
|
||||
color: #fff;
|
||||
font-family: 'Comfortaa', sans-serif;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 600;
|
||||
border: none;
|
||||
border-radius: var(--border-radius);
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
transition:
|
||||
background 0.2s,
|
||||
transform 0.15s;
|
||||
}
|
||||
|
||||
.privacy-footer .btn-agree:hover {
|
||||
background: var(--primary-hover);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user