Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

DeadVault

DeadVault is a digital legacy platform built for LCS Hack to the Future. It gives users a secure way to store important files, assign recipients, and define how those files should be released if they pass away or become incapacitated.

The project focuses on a real-world problem: most people have no reliable plan for what happens to their digital documents, records, and sensitive files when they are no longer able to manage them. DeadVault is designed to make that process more secure, more structured, and easier to trust.

Features

  • Secure file upload flow for personal vault documents
  • File recipient management for release planning
  • Executer management with unique claim links
  • Claim submission flow with physician note upload
  • Physician license verification flow
  • Audit log for sensitive vault activity
  • Firebase authentication with two-factor authentication support
  • Profile and security settings
  • Email delivery for claim and release notifications
  • Signed URL release flow for recipient file access

How It Works

  1. A vault owner creates an account and signs in.
  2. The owner uploads important files to their vault.
  3. The owner assigns file recipients and designates an executer.
  4. The executer receives a unique claim link.
  5. When needed, the executer submits a claim with a physician's note and license number.
  6. The system verifies the claim and records the event in the audit log.
  7. Approved files are released to the intended recipients through secure download links.

Tech Stack

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Firebase Auth
  • Firestore
  • Firebase Admin SDK
  • Google Cloud Storage
  • Resend
  • OTPAuth
  • QRCode

Project Structure

app/
api/ API routes for uploads, claims, recipients, audit logs, and 2FA
claim/[token]/ Public claim flow for executers
dashboard/ Main authenticated vault dashboard
login/ Sign-in page
settings/ Profile, password, and 2FA settings
setup-2fa/ Initial 2FA setup flow
signup/ Account creation page
verify-2fa/ 2FA verification page
components/ Shared UI components
context/ Auth context and app-wide auth state
lib/ Firebase, Firestore, and utility helpers

Getting Started

Prerequisites

  • Node.js 18+ recommended
  • npm
  • Firebase project credentials
  • Google Cloud Storage bucket access
  • Resend API key for email delivery

Installation

npm install

Run Locally

npm run dev

Open http://localhost:3000.

Environment Variables

Create a .env.local file and add the values your setup needs.

NEXT_PUBLIC_FIREBASE_API_KEY=NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=NEXT_PUBLIC_FIREBASE_PROJECT_ID=NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=NEXT_PUBLIC_FIREBASE_APP_ID=FIREBASE_CLIENT_EMAIL=FIREBASE_PRIVATE_KEY=FIREBASE_PROJECT_ID=GCP_BUCKET_NAME=NEXT_PUBLIC_BASE_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=RESEND_API_KEY=RESEND_FROM_EMAIL=

Main User Flows

Vault Owner

  • Sign up or log in
  • Set up two-factor authentication
  • Upload files to the vault
  • Add file recipients
  • Add executers
  • Review vault activity in the audit log

Executer

  • Open a unique claim link
  • Submit a physician's note
  • Enter a physician license number
  • Trigger the verified release flow

Recipient

  • Receive a secure email with signed download links when files are released

Notes

  • License verification can use a backend API when configured through NEXT_PUBLIC_API_BASE_URL
  • If no external verification backend is configured, the app falls back to local sample verification data
  • Email sending can be mocked when a Resend API key is not present

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages