S
Soham
@sohampal
NeTuArk — a social media for builders in public.
Tech stack:
• Firebase-backed
• AES-GCM encrypted DMs
• PWA with offline support
• Cloudinary media streaming
• Custom sticker & watermark engines
Let me break down the entire architecture 👇
📦 Database Layout
DM channels use a deterministic ID:
chatId = [email1, email2].sort().join('_')
Each chat doc holds members[], deletedBy[], and clearTimestamps{} for per-user history clearing. Messages live in subcollections: chats/{chatId}/messages
🔐 Encryption & Media
All DM messages are AES-GCM encrypted client-side BEFORE hitting Firestore. Keys derived via crypto.subtle.importKey. Ciphertext + IV stored as base64. Cloudinary API handles media uploads. Large backgrounds cached in IndexedDB (nta_chat_bg_db).
🛠️ SDK & Security
netuark-sdk.js enforces origin lock: window.location.origin === 'https://themeet.pages.dev'. Key handshake reads sdk_keys/{apiKey} to validate permissions before any data bridge operations.
⚡ UX & Lifecycle
ConvoList uses DocumentFragment for reflow-free real-time list updates. Custom 2000ms TouchHold gesture cancels on >10px scroll delta to prevent accidental deletes. Typing indicators via chatPresence heartbeats — client-evaluated, no DB locks.
🧹 Smart Clearing & Groups
Messages filtered client-side against clearTimestamps[email] — delete your history, theirs stays intact. Sending a new message auto-revives cleared chats. Group deletion cascades: remove from members[] → empty group = full doc delete.
🤖 AI Resume Maker
Generate your AI-powered resume directly from your profile. Access it via the gradient card on your Profile page, or view other users' published resumes from the feed with a real-time preview at resumeMaker.html?viewEmail=<email>.
Full stack. Zero compromises. 🔥
🔗 netuark.pages.dev
❤️ 2 likes
💬 0 comments
Replies
No replies yet.