Self-custodial dead-man switch for digital inheritance and account recovery.
- Frontend (Vercel): https://digital-will-asset-recovery.vercel.app
- Backend (Render): https://digital-will-asset-recovery.onrender.com
If someone loses access to their phone or passes away, families often lose access to important digital assets:
- bank communications
- utility/bill accounts
- subscriptions
- wallet recovery metadata
Traditional “legacy contact” approaches are usually centralized, app-specific, and unreliable across services.
Digital Will uses a self-custodial recovery design:
- Vault data is encrypted in-browser (Web Crypto API).
- User passphrase is split using Shamir Secret Sharing.
- Trusted contacts hold independent shares.
- If owner misses the check-in window, recovery can be initiated.
- Threshold shares unlock decryption for family recovery.
- System Architecture: ARCHITECTURE.md
- ER Diagram: ERD.md
- Frontend: React, Tailwind CSS, Vite
- Backend: Node.js, Express, MongoDB (Mongoose)
- Security: JWT, bcrypt, validation middleware, rate limiting, Helmet
- Crypto: Web Crypto API (AES-GCM + PBKDF2), Shamir Secret Sharing
- Deployment: Vercel (frontend), Render (backend)
- DevOps: Docker, Docker Compose, GitHub Actions CI
- User registers/logs in.
- User creates encrypted vault in browser.
- Passphrase is split into shares and distributed to trusted contacts.
- User periodically checks in to prove active status.
- If inactivity threshold is crossed, recovery session starts.
- Contacts submit shares; threshold unlocks vault recovery.
- Family reconstructs secret and decrypts vault content.
backend/API serverfrontend/React appdeploy/frontend-nginx/default.confnginx config for SPA serving.github/workflows/ci.ymlCI pipeline
cd backend
cp .env.example .env
npm install
npm run devcd frontend
cp .env.example .env
npm install
npm run devPORT=5000
MONGO_URI=mongodb://127.0.0.1:27017/digital_will
JWT_SECRET=replace_with_long_random_secret_min_32_chars
JWT_EXPIRES_IN=7d
JWT_ISSUER=digital-will-api
CORS_ORIGIN=http://localhost:5173
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX=100
RECOVERY_EXPIRY_HOURS=168VITE_API_URL=http://localhost:5000/apicp backend/.env.example backend/.env
docker compose up --build- Frontend:
http://localhost:8080 - Backend:
http://localhost:5000/api/health