- Biometric Authentication: Use fingerprint or face recognition for secure access
- PIN Protection: 6-digit PIN code as fallback authentication
- YubiKey Support: Hardware security key integration
- Encrypted Storage: All data stored locally with encryption
- Session Timeout: Auto-lock after 30 minutes of inactivity
- Install as App: Add to home screen on any device
- Offline Support: Works without internet connection
- Auto Updates: Seamlessly updates in the background
- Native Feel: Full-screen experience with app-like interface
- Applications: Track all your apps with descriptions and URLs
- API Keys: Securely store and manage API keys with masked display
- Bookmarks: Organize important links with tags
- Import/Export: Multiple format support (JSON, CSV, Markdown)
- Smart Search: Filter and search across all your data
- Edit Modal: Edit any item inline with a beautiful modal interface
- Glass Morphism: Modern translucent design with blur effects
- Pink Glow Theme: Distinctive pink accent with glow effects
- Dark Mode: Easy on the eyes with dark background
- Responsive Design: Works perfectly on desktop and mobile
# Clone the repository
git clone https://github.com/webdevtodayjason/MyVault.git
cd MyVault
# Run with Docker Compose
docker-compose up -d
# Access at http://localhost:3000# Build the image
docker build -t my-vault .
# Run the container
docker run -d -p 3000:80 --name my-vault my-vault
# Access at http://localhost:3000# Clone the repository
git clone https://github.com/webdevtodayjason/MyVault.git
cd MyVault
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview- Node.js 18+ (for local development)
- Docker & Docker Compose (for containerized deployment)
- Modern web browser with WebAuthn support
-
Access the Application
- Navigate to
http://localhost:3000 - You'll see the lock screen
- Navigate to
-
Initial PIN Setup
- Default PIN:
445566 - Change it in Settings after first login
- Default PIN:
-
Configure Biometrics
- Go to Settings β Security
- Click "Add Biometric"
- Enter admin PIN:
999999 - Follow browser prompts
-
Start Adding Your Data
- Applications: Track apps and services
- API Keys: Store keys securely
- Bookmarks: Save important links
version: '3.8'
services:
my-vault:
build: .
container_name: my-vault
ports:
- "3000:80"
volumes:
- vault-data:/data
environment:
- NODE_ENV=production
restart: unless-stoppedCreate a .env file for custom configuration:
PORT=3000
NODE_ENV=production# Build for multiple architectures
docker buildx build --platform linux/amd64,linux/arm64 -t my-vault .- Visit the application
- Click the install icon in the address bar
- Follow the installation prompts
- Open in Safari
- Tap the Share button
- Select "Add to Home Screen"
- Open in Chrome
- Tap the menu (three dots)
- Select "Install app"
Edit src/config/auth.config.ts:
export const authConfig = {
pin: '445566', // Change this
adminPin: '999999' // Change this
};Edit src/globals.css:
/* Customize pink glow effects */
.glass-pink-glow {
@apply text-pink-500 font-semibold;
text-shadow: 0 0 10px rgba(236, 72, 153, 0.5);
}"Type","Name","Description","URL","API Key ID","Tags"
"Application","GitHub","Version control","https://github.com","***","development,git"
"API Key","OpenAI","GPT API","","sk-***","ai,llm"
"Bookmark","Documentation","","https://docs.example.com","","docs,reference"
- Application: Any app or service
- API Key: Standalone API keys
- Bookmark: Web links with tags
- Custom Types: AI/LLM, WordPress Theme, etc.
- CSV files with API Key ID create linked Application + API Key
- Tags can be comma-separated or pipe-separated
- Masked keys (***) are accepted
- All data stored locally in browser (IndexedDB)
- No cloud sync or external servers
- Biometric data never leaves device
- Export regularly for backup
- Change default PINs immediately
- Enable biometric authentication
- Regular backups via export
- Use unique names for items
- Don't share Docker volumes
- Frontend: React 18 + TypeScript
- Styling: Tailwind CSS + Shadcn/ui
- Build: Vite
- Database: IndexedDB
- Auth: WebAuthn API
- PWA: Vite PWA Plugin
- Container: Docker + Nginx
my-vault/
βββ src/
β βββ components/ # React components
β β βββ ui/ # Shadcn components
β β βββ EditModal.tsx
β β βββ ExportImportModal.tsx
β β βββ LockScreen.tsx
β βββ pages/ # Page components
β βββ hooks/ # Custom hooks
β βββ services/ # Business logic
β βββ utils/ # Utilities
β βββ config/ # Configuration
βββ public/ # Static assets
βββ docker-compose.yml # Docker config
βββ Dockerfile # Container build
βββ package.json # Dependencies
- New Component:
// src/components/NewFeature.tsx
export const NewFeature = () => {
return <div className="glass-pink-glow">...</div>
}- New Data Type:
- Update types in Dashboard.tsx
- Add to useDatabase hook
- Update dataConverters.ts
If the PIN authentication fails in Docker but works locally:
- Clear all Docker caches:
docker-compose down -v
docker system prune -f
docker-compose build --no-cache
docker-compose up -d- Browser cache issues:
- Clear all browser data for localhost:3000
- Use a fresh incognito/private window
- Disable service workers if they're caching old files
- Default PIN:
445566(6 digits) - Admin PIN for biometric setup:
999999 - After 3 failed attempts, account locks for 5 minutes
- Service workers may cache old JavaScript files - clear browser data to resolve
- On Windows, ensure Docker Desktop is running with WSL2 backend
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing - Commit changes:
git commit -m 'Add amazing feature' - Push branch:
git push origin feature/amazing - Open Pull Request
MIT License - Use freely for personal or commercial purposes.
Biometric not working
- Ensure HTTPS or localhost
- Check browser WebAuthn support
- Try different browser
Data not persisting
- Check browser storage settings
- Disable private/incognito mode
- Clear browser cache
Docker not starting
# Check logs
docker logs my-vault
# Verify port availability
lsof -i :3000PWA not installing
- Requires HTTPS in production
- Check manifest.json validity
- Clear service worker cache
See included Railway configuration for one-click deployment.
npm run build
# Deploy dist folder as static site- Build production files
- Serve with any web server (Nginx, Apache)
- Configure HTTPS for PWA/WebAuthn
For issues or questions:
- Open GitHub issue
- Check existing issues first
- Provide detailed information
- Lucide Icons - Beautiful icon set
- Shadcn/ui - UI components
- Tailwind CSS - Styling
- Vite - Build tool
Remember: Your keys, your control!
