⚡ Sentria - Built with Bolt.new
Inspiration
We’ve all pasted a password or API key (or any other sensitive information) into Slack, Email, or Messages, and felt that instant “yikes” moment, because once it’s there, it lives in backups, logs, screenshots, bot indexes, and search logs forever, even if we don't know it. Sentria eliminates that with one-time, self-destructing links to completely secure text / files.
What It Does
- 🔐 One-time links — Each secret or file can be opened only a limited number of times
- ⏳ Auto-expiry — Pick a lifetime (minutes to days); secrets erase themselves after the timer hits zero
- 🔑 Optional passphrase — Add a password without storing accounts or sessions
- 📊 Live stats — Global dashboard tracks Total, Active, Accessed, and Deleted secrets
No login, no signup, no leftovers, just temporary, encrypted sharing that evaporates on cue.
How I Built It
I built Sentria solo in under a week:
- Bolt.new handled all UI, routing, and state with drag-and-drop blocks, so design iterations were instant. Took me just 10 minutes to start with a great UI template and the design was on par with those that large companies take weeks to build.
- Netlify hosts the static React bundle behind a custom domain, and serving deep links for auto-filling the View Secrets form through the URL with a single
_redirectsrule. - AWS services do the heavylifting—DynamoDB TTL to store records and streams to delete expired/exhausted secrets, S3 stores files with presigned URL uploads and lifecycle rules purge files, and a few Lambda serverless functions keep everything running.
Challenges & Lessons
| Challenge | Solution |
|---|---|
| Secure file sharing without user accounts | Presigned S3 URLs + secure link sharing |
| Counters even after records delete | Separate “SecretMetrics” table + stream listener |
| Double CORS (API & S3) | Wildcard in dev, locked origin in prod |
| Fast UI polish | Bolt's amazing generative abilities + Netlify’s instant deploy previews |
🛠️ Built With
| Category | Tech |
|---|---|
| Frontend & | Bolt.new |
| Static Hosting / CDN | Netlify (continuous deploy, custom domain) |
| Cloud Storage | Amazon S3 (presigned URLs) |
| Database | Amazon DynamoDB (TTL, Streams) |
| Security | bcryptjs for passphrase hashing |
| Design | Tailwind-inspired classes, Lucide React icons |
Paste. Share. Forget.
Sentria lets secrets vanish on your schedule, designed, built, and shipped single-handedly with Bolt.new + Netlify + AWS.
Serverless Architecture
┌────────────── Client ──────────────┐
│ React + Tailwind (static Netlify) │
└───────────────┬────────────────────┘
│ 1. POST /secrets
▼
┌────── Amazon API Gateway ──────┐
│ CORS + Routing (HTTP API) │
└────────┬───────────┬───────────┘
│ │
│2a. create │2b. get
▼ ▼
┌─────── Lambda ────────┐ ┌────── Lambda ───────┐
│ createSecret() │ │ getSecret() │
└───────┬───────┬───────┘ └────────┬────────────┘
│3a. put│3b. log 4a. read
▼ ▼ ▼
┌─ DynamoDB ──┐ 5. PUT presign ┌─ DynamoDB ─┐
│ Secrets tbl │───────────────▶│ Secrets tbl │
│ (TTL) │ │ │
└─────────────┘ └────┬───────┘
│4b. presign GET
┌─────────────────────▼─────────────────┐
│ Amazon S3 (files bucket) │
└───────────────────────────────────────┘
▲
│6. REMOVE (TTL)
┌───┴──────────┐
│ DynamoDB │
│ Stream │
└───┬──────────┘
│7. event
┌───▼──────────┐
│ Lambda │
│ metricsListener() │
└───┬──────────┘
│8. update
┌───▼──────────┐
│ DynamoDB │
│ SecretMetrics│
└──────────────┘
Built With
- amazon-dynamodb
- amazon-web-services
- aws-lambda
- bcryptjs
- bolt
- netlify
- s3
Log in or sign up for Devpost to join the conversation.