A secure, zero-knowledge password manager with end-to-end encryption.
Your master password never leaves your device, ensuring complete privacy and security.
- π― Problem Statement
- π Security Architecture
- πΈ Screenshots
- β¨ Features
- β¨ Browser Extension
- π Quick Start
- ποΈ Tech Stack
- π Project Structure
- π€ Contributing
- π License
Most people have 100+ online accounts but reuse only 5-7 passwords. Traditional password managers store your master password or have recovery mechanisms, meaning they can potentially access your data.
CryptLock uses true zero-knowledge architecture - we literally cannot see your passwords, even if we wanted to.
- Account Password: Firebase authentication for app access (recoverable via email)
- Master Password: Vault encryption key that never leaves your device (unrecoverable by design)
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Your Device β β CryptLock β β Your Vault β
β β β Servers β β β
β Master Password βββββΆβ βββββΆβ Encrypted Blob β
β (Never Sent!) β β Cannot Read This β β (Unreadable) β
β β β β β β
β AES-256 Key βΌβββΆβ Only Stores βΌβ-ββΆβ Encrypted Data β
β (Local Only) β β Encrypted Data β β β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
- β Hackers: Even if CryptLock is breached, your data remains encrypted
- β Governments: No backdoors or master keys exist - we cannot be forced to decrypt
- β CryptLock Employees: Our team cannot access your passwords
- β Future Threats: Quantum-resistant by design
β οΈ Trade-off: Forgotten master password = permanent data loss (this ensures your security)
graph TD
A[User Master Password] --> B[PBKDF2 Key Derivation]
B --> C[AES-256 Encryption Key]
C --> D[Client-Side Encryption]
D --> E[Encrypted Data Blob]
E --> F[Firebase Firestore]
G[Server/Firebase] -.-> H[Never Sees Plain Text]
I[CryptLock Team] -.-> H
- Master Password β PBKDF2 (100,000+ iterations) β AES-256 Key
- Client-Side Encryption β Encrypted Blob β Firebase Storage
- Only your device can decrypt with the original master password
- π AES-256-CBC encryption with unique IVs
- π PBKDF2 key derivation (100,000+ iterations) with unique salts
- π« No plain-text storage on servers
- π‘οΈ Firestore security rules prevent unauthorized access
- π Master password never transmitted or stored anywhere
- π Password Generation - Cryptographically secure password generation with customizable criteria
- π Security Dashboard - Real-time password strength evaluation and security insights
- π Multi-Type Storage - Store passwords, secure notes, credit cards, and identity information
- π¨ Security Monitoring - Password strength tracking and security recommendations
- π Real-Time Sync - Encrypted data synchronization with optimized performance
- πΎ Offline Support - Works without internet connection with local caching
- π± Cross-Platform Ready - Responsive web app design
- π‘οΈ Route Protection - Automatic authentication guards and session management
CryptLock includes a powerful browser extension that automatically detects password fields and saves them to your vault with one click.
- π― Auto-Detection - Automatically finds password fields on any website
- πΎ One-Click Save - Save passwords directly from any website
- π Zero-Knowledge - Passwords go directly to your encrypted vault
- π Universal - Works on Gmail, GitHub, banking sites, and more
- π« No Local Storage - Extension never stores passwords locally
- Download: Visit your CryptLock homepage and click "Download Extension"
- Extract: Unzip the downloaded file to a folder
- Install:
- Chrome/Edge: Go to
chrome://extensions/β Enable Developer mode β Load unpacked - Firefox: Go to
about:debuggingβ Load Temporary Add-on β Select manifest.json
- Chrome/Edge: Go to
- Use: Visit any website, type in password fields, click "Save to CryptLock"
π Extension files are in the
/extensionfolder
# Clone the repository
git clone https://github.com/nerdylua/password-manager-web.git
cd password-manager-web
# Install dependencies
npm install
# or
yarn installCreate a .env.local file in the root directory:
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key_here
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
# Optional: Firebase Emulator (for development)
NEXT_PUBLIC_USE_EMULATOR=falsenpm run dev
# or
yarn devπ Success! Visit http://localhost:3000 to see CryptLock in action!
|
Frontend
|
Backend & Services
|
|
Security & Crypto
|
Development
|
password-manager-web/
βββ π app/ # Next.js App Router
β βββ π api/ # API routes
β β βββ download-extension/ # Extension download endpoint
β βββ π auth/ # Authentication pages
β β βββ login/ # Login page
β β βββ register/ # Registration page
β β βββ forgot-password/ # Password recovery
β βββ π dashboard/ # Security dashboard
β βββ π vault/ # Main vault interface
β βββ layout.tsx # Root layout with providers
β βββ page.tsx # Landing page
β βββ globals.css # Global styles
β βββ not-found.tsx # 404 page
β βββ global-error.tsx # Global error handling
β βββ favicon.ico # Site favicon
βββ π components/ # Reusable UI components
β βββ π ui/ # shadcn/ui base components
β βββ AddItemModal.tsx # Add/edit vault items
β βββ DeleteConfirmModal.tsx # Deletion confirmation
β βββ ErrorModal.tsx # Error handling UI
β βββ RouteGuard.tsx # Authentication guard
β βββ theme-provider.tsx # Theme context provider
β βββ theme-toggle.tsx # Theme switcher
β βββ master-password-education.tsx # Master password guidance
β βββ header-mobile.tsx # Mobile navigation
β βββ animated-counter.tsx # Animated statistics
β βββ floating-card.tsx # Floating UI elements
β βββ parallax-section.tsx # Parallax effects
βββ π extension/ # Browser extension
β βββ π icons/ # Extension icons
β βββ manifest.json # Extension manifest
β βββ popup.html # Extension popup UI
β βββ popup.js # Popup functionality
β βββ background.js # Background script
β βββ content.js # Content script
β βββ styles.css # Extension styles
βββ π hooks/ # React hooks & contexts
β βββ AuthContext.tsx # Authentication & user state
β βββ use-mobile.ts # Mobile detection hook
βββ π lib/ # Core utilities & services
β βββ firebase.ts # Firebase configuration
β βββ encryption.ts # Zero-knowledge encryption
β βββ vault-service.ts # Vault CRUD with real-time sync
β βββ password-strength.ts # Security analysis
β βββ crypto-worker.ts # Web worker for encryption
β βββ auth-utils.ts # Authentication utilities
β βββ firebase-errors.ts # Firebase error handling
β βββ security-config.ts # Security configuration
β βββ utils.ts # General utilities
βββ π public/ # Static assets
βββ π scripts/ # Build & utility scripts
β βββ analyze-bundle.js # Bundle analysis
βββ π .next/ # Next.js build output
βββ π node_modules/ # Dependencies
βββ π middleware.ts # Next.js middleware
βββ π next.config.js # Next.js configuration (JS)
βββ π next.config.ts # Next.js configuration (TS)
βββ π package.json # Project dependencies
βββ π package-lock.json # Locked dependencies
βββ π tsconfig.json # TypeScript configuration
βββ π tailwind.config.ts # Tailwind CSS configuration
βββ π postcss.config.mjs # PostCSS configuration
βββ π eslint.config.mjs # ESLint configuration
βββ π components.json # shadcn/ui configuration
βββ π .gitignore # Git ignore rules
βββ π LICENSE # MIT License
βββ π README.md # This file
We welcome contributions! Please fork the repository and submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
π Remember: Your master password cannot be recovered due to our zero-knowledge architecture. Keep it safe!
Built with β€οΈ using Next.js, Firebase, and cutting-edge cryptography.

