🔹 Inspiration
People lose data, leak data, and sometimes straight-up forget where they stored it. In a world where everyone’s info is floating around like confetti in a storm, I wanted a tool that locks down data the traditional way — tight, disciplined — but with futuristic detection superpowers.
🔹 What It Does
Shadow Seal lets users:
Upload text or files
Encrypt them with AES-GCM + PBKDF2
Store them safely
Decrypt only with the correct password
Detect tampering attempts
Track all logs (failed attempts, device ID, timestamps)
Get anomaly alerts when things look sus
It’s a vault, a watchdog, and a detective rolled into one.
🔹 How I Built It
Frontend: React + Tailwind + shadcn/ui
Backend: Node.js + Express
Database: MongoDB + GridFS for encrypted blobs
Crypto: PBKDF2 (240k iterations), AES-GCM, HMAC signatures
Auth: JWT + bcrypt
Logs: request metadata + anomaly detection engine
UI: Glassmorphism dashboard with panels for upload, logs, and alerts
The Web Crypto API handles encryption, while the backend validates signatures and flags sketchy behavior like repeated failures or mismatched HMACs.
🔹 Challenges I Ran Into
Getting AES-GCM + PBKDF2 to work seamlessly across frontend + backend
Ensuring no plaintext touches logs or storage
Making anomaly detection actually useful, not spammy
Balancing clean UI with “security tool” vibes
🔹 Accomplishments I’m Proud Of
Fully sealed data flow — no plaintext ever saved
Clean, responsive dashboard
Early intrusion detection baked right into the app
Simple UX even though the backend is a cryptographic labyrinth
🔹 What I Learned
Implementing encryption properly is harder than reading a crypto PDF at 2 AM
UI/UX matters even in security tools
Logs are basically the soul of security
Little details (IV length, tag mismatch handling) make or break real-world crypto systems
🔹 What’s Next
Add multi-user access sharing
Add mobile app support
Integrate cloud KMS (GCP/AWS)
Add blockchain-backed tamper evidence (optional)
Push real-time anomaly notifications
Log in or sign up for Devpost to join the conversation.