You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(storage): migrate to D1 for encrypted blob storage
This commit migrates the encrypted blob storage mechanism from Cloudflare R2 to Cloudflare D1. This change streamlines the infrastructure, reduces operational complexity, and consolidates all data (metadata and blobs) within the D1 database for improved consistency and edge performance.
BREAKING CHANGE: The maximum file size for seals has been reduced from 25MB to 750KB. This is due to Cloudflare D1's column size limitations when storing base64 encoded blobs.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -203,7 +203,7 @@ sequenceDiagram
203
203
**✅ YES, BY DESIGN.** The URL hash is never sent to the server (unlike query parameters). HTTPS protects it in transit. Browser history/bookmarks are your responsibility—treat vault links like passwords. This is the tradeoff for zero-trust, no-authentication security. Alternative approaches (server-side key storage, password protection) would defeat the entire architecture.
204
204
205
205
### "Can I delete or cancel a seal after creating it?"
Copy file name to clipboardExpand all lines: app/faq/page.tsx
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ export default function FAQPage() {
24
24
<CardclassName="p-4 sm:p-6 md:p-8 space-y-6">
25
25
<div>
26
26
<h3className="text-base sm:text-lg font-bold text-neon-green mb-2">What is the maximum file size?</h3>
27
-
<pclassName="text-neon-green/60 text-sm">25 MB per seal (Cloudflare Pages limit).</p>
27
+
<pclassName="text-neon-green/60 text-sm">750 KB per seal (D1 database limit with base64 encoding).</p>
28
28
</div>
29
29
30
30
<div>
@@ -44,17 +44,17 @@ export default function FAQPage() {
44
44
45
45
<div>
46
46
<h3className="text-base sm:text-lg font-bold text-neon-green mb-2">Can I cancel or delete a seal?</h3>
47
-
<pclassName="text-neon-green/60 text-sm">Dead Man's Switch seals can be burned (permanently destroyed) using the pulse token. Timed seals cannot be deleted due to WORM storage.</p>
47
+
<pclassName="text-neon-green/60 text-sm">Dead Man's Switch seals can be burned (permanently destroyed) using the pulse token. Timed seals cannot be deleted.</p>
48
48
</div>
49
49
50
50
<div>
51
51
<h3className="text-base sm:text-lg font-bold text-neon-green mb-2">Where is my data stored?</h3>
52
-
<pclassName="text-neon-green/60 text-sm">Encrypted blobs are stored in Cloudflare R2 (global edge storage). Metadata is in Cloudflare D1 database.</p>
52
+
<pclassName="text-neon-green/60 text-sm">Encrypted blobs are stored in Cloudflare D1 database. Metadata and keys are also in D1.</p>
53
53
</div>
54
54
55
55
<div>
56
56
<h3className="text-base sm:text-lg font-bold text-neon-green mb-2">Is this really secure?</h3>
57
-
<pclassName="text-neon-green/60 text-sm">Yes. We use AES-GCM 256-bit encryption, split-key architecture, and WORM storage. The code is open source for audit.</p>
57
+
<pclassName="text-neon-green/60 text-sm">Yes. We use AES-GCM 256-bit encryption, split-key architecture, and database-backed storage. The code is open source for audit.</p>
<p>Encrypted blobs are stored with Write Once, Read Many compliance. Files cannot be deleted or modified until the retention period expires—even by administrators.</p>
0 commit comments