A secure, end-to-end encrypted message sharing tool that prioritizes privacy. Share sensitive information with confidence through password-protected, self-destructing messages.
CryptDrop implements client-side encryption to ensure that your messages remain private. The server never has access to your decrypted content, passwords, or encryption keys—providing true zero-knowledge security.
- Client-side encryption using AES-GCM via the Web Crypto API
- Authenticated encryption ensuring both confidentiality and integrity
- Zero-knowledge architecture—server never sees decrypted messages
- Secure password storage using SHA-256 hashing
- View limits and burn-after-read functionality
- End-to-end encryption: Messages encrypted locally in your browser
- Password protection: Set alphanumeric or numeric passwords for message access
- View limits: Control how many times a message can be opened
- Burn-after-read: Messages automatically disappear after viewing
- Link-based sharing: No user accounts required—just share the link
- Mobile-friendly: Works seamlessly across all devices
- Next.js (App Router) - React framework for production
- Tailwind CSS - Utility-first CSS framework
- shadcn/ui - Re-usable component library
- Aceternity UI - Modern UI components
- Next.js API Routes - Serverless API endpoints
- Prisma ORM - Type-safe database client
- MongoDB - Document database for encrypted message storage
- Web Crypto API - Browser-native cryptographic operations
- AES-GCM - Authenticated encryption algorithm
-
Clone the repository
git https://github.com/Debjyoti2004/CryptDrop.git cd CryptDrop -
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory:# Database DATABASE_URL= <YOUR MONGODB DATABASE_URL> NEXT_PUBLIC_DEFAULT_PASSWORD= <YOUR DEFAULT_PASSWORD>
-
Set up the database
npm run db:dev
-
Start the development server
npm run dev
-
Open your browser
Navigate to
http://localhost:3000to start using CryptDrop.
- Client-side encryption: All encryption/decryption happens in the browser
- No server-side keys: Encryption keys never leave the client
- Password security: Passwords are hashed using SHA-256 before storage