Appsafe Club Apr 2026

.modal-content background: white; max-width: 450px; width: 90%; border-radius: 32px; padding: 1.8rem; position: relative; animation: fadeUp 0.2s ease;

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>AppSafe Club | Safe Apps, Smart Choices</title> <style> * margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; body background: #f4f7fc; color: #1a2c3e; line-height: 1.5;

/* main container */ .container max-width: 1300px; margin: 2rem auto; padding: 0 1.5rem; appsafe club

document.getElementById("safetyThreshold").addEventListener("change", (e) => currentSafetyThreshold = parseInt(e.target.value); renderApps(); );

.search-box input width: 100%; padding: 0.7rem 1rem; border-radius: 48px; border: 1px solid #cbdbe0; font-size: 0.9rem; background: #fefefe; transition: 0.2s; .modal-content background: white

/* filters & search */ .filters-panel background: white; border-radius: 24px; padding: 1.2rem 1.5rem; margin-bottom: 2rem; display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; box-shadow: 0 2px 8px rgba(0,0,0,0.03); border: 1px solid #e0edf2;

<div class="filters-panel"> <div class="search-box"> <input type="text" id="searchInput" placeholder="🔍 Search apps (e.g., Signal, Bitwarden...)"> </div> <div class="category-filter" id="categoryFilterContainer"> <button class="cat-btn active" data-cat="all">All</button> <button class="cat-btn" data-cat="messaging">Messaging</button> <button class="cat-btn" data-cat="password">Password</button> <button class="cat-btn" data-cat="finance">Finance</button> <button class="cat-btn" data-cat="health">Health</button> <button class="cat-btn" data-cat="productivity">Productivity</button> </div> <div class="safety-toggle"> <label>🔒 Minimum safety score:</label> <select id="safetyThreshold"> <option value="0">All scores</option> <option value="70">≥ 70 (Safe+)</option> <option value="85">≥ 85 (Premium safe)</option> </select> </div> </div> animation: fadeUp 0.2s ease

<script> // Mock app database (AppSafe Club dataset) const appsData = [ id: 1, name: "Signal Messenger", category: "messaging", score: 96, icon: "📞", desc: "End-to-end encrypted messaging, minimal metadata.", permissions: "Contacts, Camera, Microphone", trackers: "0 trackers", privacy: "Excellent, open-source", notes: "Gold standard for privacy." , id: 2, name: "Bitwarden", category: "password", score: 94, icon: "🔐", desc: "Open-source password manager, zero-knowledge architecture.", permissions: "Camera (optional), Accessibility", trackers: "None", privacy: "Transparent & audited", notes: "Highly recommended." , id: 3, name: "ProtonMail", category: "messaging", score: 92, icon: "📧", desc: "Encrypted email with Swiss privacy laws.", permissions: "Contacts, Storage", trackers: "No third-party", privacy: "Strict no-logs", notes: "Best for email security." , id: 4, name: "DuckDuckGo", category: "productivity", score: 90, icon: "🦆", desc: "Private search & browser with tracker blocking.", permissions: "Location (optional)", trackers: "Blocked by default", privacy: "No personal data collection", notes: "Easy privacy." , id: 5, name: "Mullvad VPN", category: "productivity", score: 98, icon: "🛡️", desc: "Anonymous VPN with cash payments.", permissions: "VPN, Notifications", trackers: "Zero", privacy: "Audited no-logs", notes: "Top-tier anonymity." , id: 6, name: "Joplin", category: "productivity", score: 88, icon: "📓", desc: "Open-source note taking with E2EE.", permissions: "Storage, Camera (optional)", trackers: "None", privacy: "Self-host optional", notes: "Great for notes." , id: 7, name: "Monzo", category: "finance", score: 78, icon: "💳", desc: "Digital bank with good security features.", permissions: "Location, Contacts (optional)", trackers: "Limited analytics", privacy: "Standard bank privacy", notes: "Solid but not fully anonymous." , id: 8, name: "MyFitnessPal", category: "health", score: 68, icon: "🏋️", desc: "Calorie counter but shares data with parent company.", permissions: "Location, Camera, Storage", trackers: "Multiple ad trackers", privacy: "Moderate, aggregated data", notes: "Use with caution." , id: 9, name: "Telegram", category: "messaging", score: 72, icon: "✈️", desc: "Cloud-based chats, not fully E2EE by default.", permissions: "Contacts, Microphone, Storage", trackers: "Some analytics", privacy: "Better than average", notes: "Enable secret chats for E2EE." , id: 10, name: "Firefox Focus", category: "productivity", score: 91, icon: "🦊", desc: "Privacy browser that auto-deletes history.", permissions: "Minimal", trackers: "Tracker blocking", privacy: "Strong privacy", notes: "Great for quick searches." , id: 11, name: "1Password", category: "password", score: 89, icon: "🔑", desc: "Feature-rich password manager with secret key.", permissions: "Accessibility, Camera", trackers: "First-party telemetry", privacy: "Strong encryption", notes: "Excellent UI." , id: 12, name: "Luno", category: "finance", score: 74, icon: "₿", desc: "Bitcoin wallet/exchange with 2FA.", permissions: "Identity verification", trackers: "Some analytics", privacy: "KYC required", notes: "Good but centralized." ];