beru-ba / index.html
D110's picture
Build me a secure and non traceable chatting app that uses https and XMPP. The app's template is black and the letter should be in green . The name is Beru.BA - Initial Deployment
a5330f6 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Beru.BA - Secure Encrypted Chat</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link href="https://unpkg.com/@chatscope/chat-ui-kit-styles/dist/default/styles.min.css" rel="stylesheet">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
beruGreen: {
100: '#d1fae5',
200: '#a7f3d0',
300: '#6ee7b7',
400: '#10b981',
500: '#059669',
600: '#047857',
700: '#065f46',
},
beruDark: {
100: '#1a202c',
200: '#171923',
300: '#12171f',
400: '#0d1219',
500: '#090c11',
}
}
}
}
}
</script>
<script src="https://unpkg.com/@chatscope/chat-ui-kit-core/dist/chat-ui-kit-core.umd.js"></script>
<style>
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #090c11;
}
::-webkit-scrollbar-thumb {
background: #065f46;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #047857;
}
.custom-backdrop {
background: radial-gradient(
circle at center,
rgba(15, 25, 40, 0.9) 0%,
rgba(9, 15, 27, 0.95) 100%
);
}
.status-indicator {
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
bottom: 0;
right: 0;
border: 2px solid #090c11;
}
.presence-online {
background-color: #10b981;
}
.presence-offline {
background-color: #6b7280;
}
.presence-away {
background-color: #f59e0b;
}
.presence-dnd {
background-color: #ef4444;
}
.chat-bubble-sent {
background-color: #065f46;
border-top-right-radius: 0;
border-bottom-left-radius: 12px;
}
.chat-bubble-received {
background-color: #12171f;
border-top-left-radius: 0;
border-bottom-right-radius: 12px;
}
.encrypted-indicator {
position: absolute;
bottom: 8px;
right: 10px;
font-size: 10px;
color: #a7f3d0;
opacity: 0.7;
}
.gradient-bottom {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 50px;
background: linear-gradient(transparent 0%, rgba(9,12,17,0.8) 40%, #090c11 100%);
}
.connection-status::after {
content: '';
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
margin-left: 8px;
}
.status-connected::after {
background-color: #10b981;
}
.status-encrypting::after {
background-color: #f59e0b;
animation: pulse 1.5s infinite;
}
.status-disconnected::after {
background-color: #ef4444;
}
@keyframes pulse {
0% { opacity: 1; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
@keyframes connectionPulse {
0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }
70% { box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); }
100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}
</style>
</head>
<body class="bg-beruDark-500 text-beruGreen-400 min-h-screen font-mono overflow-hidden">
<!-- Main App Container -->
<div class="flex flex-col h-screen max-w-7xl mx-auto custom-backdrop">
<!-- Header -->
<header class="bg-beruGreen-700/10 backdrop-blur border-b border-beruDark-300">
<div class="flex justify-between items-center px-4 py-3 sm:px-6">
<div class="flex items-center">
<div class="bg-beruGreen-500 text-beruDark-500 h-10 w-10 rounded-full flex items-center justify-center mr-3 relative">
<i class="fas fa-lock text-lg"></i>
<div class="status-indicator presence-online"></div>
</div>
<div>
<h1 class="text-xl sm:text-2xl font-bold tracking-wider">BERU<span class="text-beruGreen-300">.BA</span></h1>
<div class="flex items-center">
<div id="connectionStatus" class="connection-status status-connected text-xs text-beruGreen-500 flex items-center">
<span>Secure Connection: Established</span>
</div>
</div>
</div>
</div>
<div class="flex space-x-3">
<button class="bg-beruDark-400 rounded-full h-10 w-10 flex items-center justify-center hover:bg-beruGreen-500 hover:text-beruDark-500 transition">
<i class="fas fa-sliders-h"></i>
</button>
<button class="flex items-center justify-center bg-beruGreen-500 text-beruDark-500 py-2 px-4 rounded-full hover:bg-beruGreen-400 transition text-sm font-medium">
<i class="fas fa-sign-out-alt mr-1 transform rotate-180"></i>
Logout
</button>
</div>
</div>
</header>
<!-- Main Content -->
<div class="flex flex-1 overflow-hidden">
<!-- Sidebar -->
<div class="w-full sm:w-72 lg:w-80 bg-beruDark-400/30 flex flex-col border-r border-beruDark-300">
<!-- Search -->
<div class="p-3">
<div class="relative">
<div class="absolute inset-y-0 left-0 flex items-center pl-3">
<i class="fas fa-search text-beruGreen-600"></i>
</div>
<input
type="text"
placeholder="Search contacts..."
class="w-full bg-beruDark-300 border border-beruDark-200 rounded-lg py-2 pl-10 pr-4 text-sm focus:outline-none focus:ring-1 focus:ring-beruGreen-500 placeholder-beruGreen-600"
>
</div>
</div>
<!-- New Chat Button -->
<div class="px-3">
<button class="w-full bg-beruGreen-600/20 hover:bg-beruGreen-500/30 border border-beruGreen-500/30 py-2 px-4 rounded-lg text-sm transition duration-150">
<i class="fas fa-user-plus mr-2"></i>
Start New Conversation
</button>
</div>
<!-- Contacts Header -->
<div class="px-3 py-2 mt-4 flex justify-between items-center">
<h2 class="text-xs uppercase tracking-widest text-beruGreen-600">Contacts</h2>
<span class="text-xs bg-beruDark-300 px-2 py-0.5 rounded">32</span>
</div>
<!-- Contact List -->
<div class="flex-1 overflow-y-auto py-1">
<div class="contact-item hover:bg-beruDark-400/50 px-3 py-2 cursor-pointer border-l border-transparent hover:border-beruGreen-600 transition">
<div class="flex items-center">
<div class="relative mr-3">
<div class="bg-beruDark-200 h-10 w-10 rounded-full flex items-center justify-center">
<i class="fas fa-user text-beruGreen-500"></i>
</div>
<div class="status-indicator presence-online"></div>
</div>
<div class="flex-1">
<div class="flex justify-between">
<span class="font-medium text-sm">Alex Johnson</span>
<span class="text-xs text-beruGreen-600">12:45 PM</span>
</div>
<p class="text-xs text-beruGreen-600 truncate">Sent you the secure file...</p>
</div>
</div>
</div>
<div class="contact-item hover:bg-beruDark-400/50 px-3 py-2 cursor-pointer border-l border-transparent hover:border-beruGreen-600 transition">
<div class="flex items-center">
<div class="relative mr-3">
<div class="bg-beruDark-200 h-10 w-10 rounded-full flex items-center justify-center">
<span class="text-beruGreen-500 font-bold">SI</span>
</div>
<div class="status-indicator presence-away"></div>
</div>
<div class="flex-1">
<div class="flex justify-between">
<span class="font-medium text-sm">Project Sigma</span>
<span class="text-xs text-beruGreen-600">11:22 AM</span>
</div>
<p class="text-xs text-beruGreen-600 truncate">Latest data has been encrypted...</p>
</div>
</div>
</div>
<div class="contact-item hover:bg-beruDark-400/50 px-3 py-2 cursor-pointer border-l border-transparent hover:border-beruGreen-600 transition">
<div class="flex items-center">
<div class="relative mr-3">
<div class="bg-beruDark-200 h-10 w-10 rounded-full flex items-center justify-center">
<i class="fas fa-user-shield text-beruGreen-500"></i>
</div>
<div class="status-indicator presence-dnd"></div>
</div>
<div class="flex-1">
<div class="flex justify-between">
<span class="font-medium text-sm">Maya Rodriguez</span>
<span class="text-xs text-beruGreen-600">10:15 AM</span>
</div>
<p class="text-xs text-beruGreen-600 truncate">Are we still meeting at 2 PM?</p>
</div>
</div>
</div>
<div class="contact-item hover:bg-beruDark-400/50 px-3 py-2 cursor-pointer border-l border-transparent hover:border-beruGreen-600 transition">
<div class="flex items-center">
<div class="relative mr-3">
<div class="bg-beruDark-200 h-10 w-10 rounded-full flex items-center justify-center">
<i class="fas fa-user-secret text-beruGreen-500"></i>
</div>
<div class="status-indicator presence-online"></div>
</div>
<div class="flex-1">
<div class="flex justify-between">
<span class="font-medium text-sm">Security Team</span>
<span class="text-xs text-beruGreen-600">09:47 AM</span>
</div>
<p class="text-xs text-beruGreen-600 truncate">Security audit requested...</p>
</div>
</div>
</div>
<div class="contact-item hover:bg-beruDark-400/50 px-3 py-2 cursor-pointer border-l border-transparent hover:border-beruGreen-600 transition">
<div class="flex items-center">
<div class="relative mr-3">
<div class="bg-beruDark-200 h-10 w-10 rounded-full flex items-center justify-center">
<i class="fas fa-user-astronaut text-beruGreen-500"></i>
</div>
<div class="status-indicator presence-offline"></div>
</div>
<div class="flex-1">
<div class="flex justify-between">
<span class="font-medium text-sm">Robert Chen</span>
<span class="text-xs text-beruGreen-600">Yesterday</span>
</div>
<p class="text-xs text-beruGreen-600 truncate">Will send the documents tomorrow</p>
</div>
</div>
</div>
</div>
</div>
<!-- Chat Panel -->
<div class="flex-1 flex flex-col justify-between hidden sm:flex">
<!-- Chat Header -->
<div class="bg-beruDark-400/10 backdrop-blur border-b border-beruDark-300 py-3 px-6 flex items-center">
<div class="relative">
<div class="bg-beruDark-200 h-12 w-12 rounded-full flex items-center justify-center mr-3">
<i class="fas fa-user-shield text-xl text-beruGreen-500"></i>
</div>
<div class="status-indicator presence-online"></div>
</div>
<div>
<h3 class="font-bold text-lg">Maya Rodriguez</h3>
<div class="flex items-center">
<span class="text-xs text-beruGreen-500">Online</span>
<span class="text-xs px-2 text-beruGreen-400">
<i class="fas fa-shield-alt mr-1"></i>
XMPP over HTTPS
</span>
<span class="text-xs px-2 bg-beruDark-300 rounded-full">
<i class="fas fa-key mr-1"></i>
End-to-end encryption
</span>
</div>
</div>
<div class="ml-auto flex items-center space-x-3">
<button class="bg-beruDark-300 hover:bg-beruGreen-500 hover:text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-phone-alt"></i>
</button>
<button class="bg-beruDark-300 hover:bg-beruGreen-500 hover:text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-video"></i>
</button>
<button class="bg-beruDark-300 hover:bg-beruGreen-500 hover:text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-ellipsis-v"></i>
</button>
</div>
</div>
<!-- Chat Messages -->
<div class="flex-1 overflow-y-auto py-4 px-6">
<div class="text-center">
<span class="text-xs bg-beruDark-300 px-3 py-1 rounded-full">
<i class="fas fa-lock"></i>
Today
</span>
</div>
<!-- Message received -->
<div class="mt-5 flex items-start">
<div class="bg-beruDark-300 rounded-full h-8 w-8 flex-shrink-0 flex items-center justify-center mr-3">
<i class="fas fa-user-shield text-sm"></i>
</div>
<div class="mr-10 max-w-2xl">
<div class="chat-bubble-received rounded-xl py-3 px-4 relative">
<p class="text-sm">All communications on this channel are encrypted using AES-256. I have sent the protocol documentation for the operation.</p>
<div class="encrypted-indicator">
<i class="fas fa-shield-alt mr-1"></i>
Encrypted
</div>
</div>
<div class="mt-2 pl-1">
<span class="text-xs text-beruGreen-600">12:45 PM</span>
</div>
</div>
</div>
<!-- Message sent -->
<div class="mt-5 flex flex-row-reverse items-start">
<div class="bg-beruGreen-600 rounded-full h-8 w-8 flex-shrink-0 flex items-center justify-center ml-3">
<i class="fas fa-user text-sm text-beruDark-500"></i>
</div>
<div class="ml-10 max-w-2xl">
<div class="chat-bubble-sent rounded-xl py-3 px-4 relative">
<p class="text-sm">Received. I've set up OTR encryption for additional security. Please confirm the identity verification code: <code class="bg-beruGreen-700/30 px-1 py-0.5 rounded">172937AB5B</code></p>
<div class="encrypted-indicator">
<i class="fas fa-shield-alt mr-1"></i>
Encrypted
</div>
</div>
<div class="mt-2 pr-1 text-right">
<span class="text-xs text-beruGreen-600">12:47 PM</span>
</div>
</div>
</div>
<!-- Message received -->
<div class="mt-5 flex items-start">
<div class="bg-beruDark-300 rounded-full h-8 w-8 flex-shrink-0 flex items-center justify-center mr-3">
<i class="fas fa-user-shield text-sm"></i>
</div>
<div class="mr-10 max-w-2xl">
<div class="chat-bubble-received rounded-xl py-3 px-4 relative">
<p class="text-sm">Code verified. Identity confirmed. This session is now protected with perfect forward secrecy. Can we discuss Phase 3 deployment?</p>
<div class="encrypted-indicator">
<i class="fas fa-shield-alt mr-1"></i>
Encrypted
</div>
</div>
<div class="mt-2 pl-1">
<span class="text-xs text-beruGreen-600">12:48 PM</span>
</div>
</div>
</div>
<!-- File Attachment -->
<div class="mt-5 flex items-start">
<div class="bg-beruDark-300 rounded-full h-8 w-8 flex-shrink-0 flex items-center justify-center mr-3">
<i class="fas fa-user-shield text-sm"></i>
</div>
<div class="mr-10 max-w-2xl">
<div class="bg-beruDark-300 border border-beruDark-200 rounded-xl py-2 px-3">
<div class="flex items-center">
<div class="bg-beruGreen-900/20 p-3 rounded-lg">
<i class="fas fa-file-pdf text-beruGreen-500 text-2xl"></i>
</div>
<div class="ml-3 flex-1 min-w-0">
<div class="flex justify-between">
<span class="font-medium truncate">Phase3-Deployment-Protocol.pdf</span>
</div>
<div class="flex items-center justify-between mt-1">
<span class="text-xs text-beruGreen-600">2.3 MB • PDF</span>
<div class="flex space-x-2">
<button class="text-beruGreen-400 hover:text-beruGreen-300">
<i class="fas fa-download"></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="text-xs py-1 pl-1 text-beruGreen-600">
<i class="fas fa-lock mr-1"></i>
File encrypted with AES-256-CBC
</div>
<div class="mt-1 pl-1">
<span class="text-xs text-beruGreen-600">12:49 PM</span>
</div>
</div>
</div>
<!-- Message sent -->
<div class="mt-5 flex flex-row-reverse items-start">
<div class="bg-beruGreen-600 rounded-full h-8 w-8 flex-shrink-0 flex items-center justify-center ml-3">
<i class="fas fa-user text-sm text-beruDark-500"></i>
</div>
<div class="ml-10 max-w-2xl">
<div class="chat-bubble-sent rounded-xl py-3 px-4 relative">
<p class="text-sm">I've reviewed the protocol document. The encryption settings are fully compliant with our security standards. We can proceed with the deployment as planned.</p>
<div class="encrypted-indicator">
<i class="fas fa-shield-alt mr-1"></i>
Encrypted
</div>
</div>
<div class="mt-2 pr-1 text-right">
<span class="text-xs text-beruGreen-600">12:53 PM</span>
</div>
</div>
</div>
</div>
<!-- Message Input -->
<div class="bg-beruDark-400/10 backdrop-blur border-t border-beruDark-300 pt-3 px-6 pb-5">
<!-- File progress bar mock -->
<div class="mb-2 text-xs">
<div class="flex items-center justify-between mb-1">
<div class="text-beruGreen-400">
<i class="fas fa-lock mr-1"></i>
Encrypting file... (3.2 MB)
</div>
<div>32%</div>
</div>
<div class="w-full bg-beruDark-300 rounded-full h-2">
<div class="bg-beruGreen-600 h-2 rounded-full" style="width: 32%"></div>
</div>
</div>
<div class="flex items-center">
<div class="flex space-x-2 mr-3">
<button class="bg-beruDark-300 hover:bg-beruGreen-500 hover:text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-paperclip"></i>
</button>
<button class="bg-beruDark-300 hover:bg-beruGreen-500 hover:text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-image"></i>
</button>
<button class="bg-beruDark-300 hover:bg-beruGreen-500 hover:text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-lock"></i>
</button>
</div>
<div class="flex-1">
<div class="relative">
<textarea
id="messageInput"
placeholder="Type a secure message..."
class="w-full bg-beruDark-300 border border-beruDark-200 rounded-xl py-3 pl-4 pr-12 focus:outline-none focus:border-beruGreen-500 resize-none placeholder-beruGreen-700"
rows="1"
></textarea>
<div class="absolute right-3 bottom-3">
<button class="bg-beruGreen-500 hover:bg-beruGreen-400 text-beruDark-500 rounded-full h-10 w-10 flex items-center justify-center transition">
<i class="fas fa-paper-plane"></i>
</button>
</div>
</div>
</div>
</div>
<div class="pt-2 flex items-center">
<div class="text-xs flex space-x-2">
<div class="flex items-center">
<span class="block h-2 w-2 rounded-full bg-beruGreen-500 mr-1"></span>
<span>Connection Secure</span>
</div>
<div class="flex items-center">
<i class="fas fa-shield-alt mr-1 text-beruGreen-500"></i>
<span>End-to-end encrypted</span>
</div>
</div>
<div class="ml-auto">
<div class="flex items-center text-xs">
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='%23059E5A' d='M10 17l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8m0-5H5c-1.11 0-2 .89-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E"
alt="XMPP"
class="h-4 w-4 mr-1"
>
<span>XMPP</span>
<div class="w-1 h-1 rounded-full bg-beruGreen-500 mx-2"></div>
<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='%23059E5A' d='M18 9h-2V7c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-2h2c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm-4 10H8V7h6v12zm4-5v-1h-4v-1h4v-1h-4V9h4V8l3 3-3 3z'/%3E%3C/svg%3E"
alt="HTTPS"
class="h-4 w-4 mr-1 ml-2"
>
<span>HTTPS</span>
</div>
</div>
</div>
</div>
</div>
<!-- Empty chat panel for mobile -->
<div class="hidden flex-1 items-center justify-center sm:hidden">
<div class="text-center px-4">
<div class="bg-beruDark-300 h-20 w-20 rounded-full flex items-center justify-center mx-auto mb-4">
<i class="fas fa-lock text-3xl"></i>
</div>
<h3 class="text-xl font-medium mb-2">Secure Encrypted Chats</h3>
<p class="text-beruGreen-600 mb-6">Select a conversation to start messaging securely</p>
<button class="bg-beruGreen-600 hover:bg-beruGreen-500 text-beruDark-500 py-2 px-6 rounded-full font-medium">
Start New Conversation
</button>
</div>
</div>
</div>
</div>
<script>
// Handle textarea autoresize
const textarea = document.getElementById('messageInput');
textarea.addEventListener('input', function() {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
});
// Connection status animation
const statusEl = document.getElementById('connectionStatus');
let animationTimeout;
function simulateConnection() {
// Start with encrypting status
statusEl.className = 'connection-status status-encrypting text-beruGreen-400 flex items-center';
statusEl.innerHTML = '<span>Encrypting Channel: Connecting...</span>';
// After 2 seconds, switch to connected status
animationTimeout = setTimeout(() => {
statusEl.className = 'connection-status status-connected text-beruGreen-500 flex items-center';
statusEl.innerHTML = '<span>Secure Connection: Established</span>';
// Add pulse animation class
statusEl.classList.add('animate-pulse');
// Remove pulse animation after 3 seconds
setTimeout(() => {
statusEl.classList.remove('animate-pulse');
}, 3000);
}, 2000);
}
// Start simulation when page loads
simulateConnection();
// Demo status changing
setInterval(() => {
// Normally this would be based on real connection status
const statuses = ['connected', 'encrypting'];
const status = statuses[Math.floor(Math.random() * statuses.length)];
if (status === 'connected') {
clearTimeout(animationTimeout);
statusEl.className = 'connection-status status-connected text-beruGreen-500 flex items-center';
statusEl.innerHTML = '<span>Secure Connection: Established</span>';
statusEl.classList.add('animate-pulse');
// Remove pulse animation after 3 seconds
setTimeout(() => {
statusEl.classList.remove('animate-pulse');
}, 3000);
} else if (status === 'encrypting') {
statusEl.className = 'connection-status status-encrypting text-beruGreen-400 flex items-center';
statusEl.innerHTML = '<span>Re-negotiating: Encrypting...</span>';
}
}, 10000);
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=D110/beru-ba" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>