{"id":31767885,"url":"https://github.com/webdevtodayjason/myvault","last_synced_at":"2025-10-10T01:48:42.485Z","repository":{"id":308221737,"uuid":"1032051937","full_name":"webdevtodayjason/MyVault","owner":"webdevtodayjason","description":"Your secure vault for API keys, applications, and bookmarks Locally Micro Docker Service.","archived":false,"fork":false,"pushed_at":"2025-08-04T23:54:28.000Z","size":1112,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-06T01:30:32.481Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webdevtodayjason.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-04T18:19:15.000Z","updated_at":"2025-08-04T23:54:31.000Z","dependencies_parsed_at":"2025-08-04T21:46:01.643Z","dependency_job_id":null,"html_url":"https://github.com/webdevtodayjason/MyVault","commit_stats":null,"previous_names":["webdevtodayjason/myvault"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/webdevtodayjason/MyVault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2FMyVault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2FMyVault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2FMyVault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2FMyVault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webdevtodayjason","download_url":"https://codeload.github.com/webdevtodayjason/MyVault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevtodayjason%2FMyVault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002400,"owners_count":26083375,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-10T01:48:34.237Z","updated_at":"2025-10-10T01:48:42.480Z","avatar_url":"https://github.com/webdevtodayjason.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔐 My Vault - Secure Key Manager\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/myvault-logo.png\" alt=\"My Vault Logo\" width=\"128\" height=\"128\"\u003e\n  \n  **Your personal secure vault for API keys, applications, and bookmarks**\n  \n  [![Docker](https://img.shields.io/badge/Docker-Ready-blue?logo=docker)](https://www.docker.com/)\n  [![PWA](https://img.shields.io/badge/PWA-Enabled-purple?logo=pwa)](https://web.dev/progressive-web-apps/)\n  [![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue?logo=typescript)](https://www.typescriptlang.org/)\n  [![React](https://img.shields.io/badge/React-18-61dafb?logo=react)](https://reactjs.org/)\n  [![GitHub](https://img.shields.io/badge/GitHub-Repository-black?logo=github)](https://github.com/webdevtodayjason/MyVault)\n\u003c/div\u003e\n\n## ✨ Features\n\n### 🔒 Security First\n- **Biometric Authentication**: Use fingerprint or face recognition for secure access\n- **PIN Protection**: 6-digit PIN code as fallback authentication\n- **YubiKey Support**: Hardware security key integration\n- **Encrypted Storage**: All data stored locally with encryption\n- **Session Timeout**: Auto-lock after 30 minutes of inactivity\n\n### 📱 Progressive Web App (PWA)\n- **Install as App**: Add to home screen on any device\n- **Offline Support**: Works without internet connection\n- **Auto Updates**: Seamlessly updates in the background\n- **Native Feel**: Full-screen experience with app-like interface\n\n### 🗂️ Data Management\n- **Applications**: Track all your apps with descriptions and URLs\n- **API Keys**: Securely store and manage API keys with masked display\n- **Bookmarks**: Organize important links with tags\n- **Import/Export**: Multiple format support (JSON, CSV, Markdown)\n- **Smart Search**: Filter and search across all your data\n- **Edit Modal**: Edit any item inline with a beautiful modal interface\n\n### 🎨 Beautiful UI\n- **Glass Morphism**: Modern translucent design with blur effects\n- **Pink Glow Theme**: Distinctive pink accent with glow effects\n- **Dark Mode**: Easy on the eyes with dark background\n- **Responsive Design**: Works perfectly on desktop and mobile\n\n## 🚀 Quick Start\n\n### Option 1: Docker (Recommended)\n\n```bash\n# Clone the repository\ngit clone https://github.com/webdevtodayjason/MyVault.git\ncd MyVault\n\n# Run with Docker Compose\ndocker-compose up -d\n\n# Access at http://localhost:3000\n```\n\n### Option 2: Docker Build\n\n```bash\n# Build the image\ndocker build -t my-vault .\n\n# Run the container\ndocker run -d -p 3000:80 --name my-vault my-vault\n\n# Access at http://localhost:3000\n```\n\n### Option 3: Local Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/webdevtodayjason/MyVault.git\ncd MyVault\n\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n\n# Build for production\nnpm run build\n\n# Preview production build\nnpm run preview\n```\n\n## 📦 Installation Guide\n\n### System Requirements\n- Node.js 18+ (for local development)\n- Docker \u0026 Docker Compose (for containerized deployment)\n- Modern web browser with WebAuthn support\n\n### First Time Setup\n\n1. **Access the Application**\n   - Navigate to `http://localhost:3000`\n   - You'll see the lock screen\n\n2. **Initial PIN Setup**\n   - Default PIN: `445566`\n   - Change it in Settings after first login\n\n3. **Configure Biometrics**\n   - Go to Settings → Security\n   - Click \"Add Biometric\"\n   - Enter admin PIN: `999999`\n   - Follow browser prompts\n\n4. **Start Adding Your Data**\n   - Applications: Track apps and services\n   - API Keys: Store keys securely\n   - Bookmarks: Save important links\n\n## 🐳 Docker Deployment\n\n### Docker Compose Configuration\n\n```yaml\nversion: '3.8'\n\nservices:\n  my-vault:\n    build: .\n    container_name: my-vault\n    ports:\n      - \"3000:80\"\n    volumes:\n      - vault-data:/data\n    environment:\n      - NODE_ENV=production\n    restart: unless-stopped\n```\n\n### Environment Variables\n\nCreate a `.env` file for custom configuration:\n\n```env\nPORT=3000\nNODE_ENV=production\n```\n\n### Building for ARM/x86\n\n```bash\n# Build for multiple architectures\ndocker buildx build --platform linux/amd64,linux/arm64 -t my-vault .\n```\n\n## 📱 PWA Installation\n\n### Desktop (Chrome/Edge)\n1. Visit the application\n2. Click the install icon in the address bar\n3. Follow the installation prompts\n\n### Mobile (iOS)\n1. Open in Safari\n2. Tap the Share button\n3. Select \"Add to Home Screen\"\n\n### Mobile (Android)\n1. Open in Chrome\n2. Tap the menu (three dots)\n3. Select \"Install app\"\n\n## 🔧 Configuration\n\n### Security Settings\n\nEdit `src/config/auth.config.ts`:\n```typescript\nexport const authConfig = {\n  pin: '445566',      // Change this\n  adminPin: '999999'  // Change this\n};\n```\n\n### Theme Customization\n\nEdit `src/globals.css`:\n```css\n/* Customize pink glow effects */\n.glass-pink-glow {\n  @apply text-pink-500 font-semibold;\n  text-shadow: 0 0 10px rgba(236, 72, 153, 0.5);\n}\n```\n\n## 📊 Data Import/Export\n\n### CSV Format\n```csv\n\"Type\",\"Name\",\"Description\",\"URL\",\"API Key ID\",\"Tags\"\n\"Application\",\"GitHub\",\"Version control\",\"https://github.com\",\"***\",\"development,git\"\n\"API Key\",\"OpenAI\",\"GPT API\",\"\",\"sk-***\",\"ai,llm\"\n\"Bookmark\",\"Documentation\",\"\",\"https://docs.example.com\",\"\",\"docs,reference\"\n```\n\n### Supported Types\n- **Application**: Any app or service\n- **API Key**: Standalone API keys\n- **Bookmark**: Web links with tags\n- **Custom Types**: AI/LLM, WordPress Theme, etc.\n\n### Import Notes\n- CSV files with API Key ID create linked Application + API Key\n- Tags can be comma-separated or pipe-separated\n- Masked keys (***) are accepted\n\n## 🔐 Security Best Practices\n\n### Important Notes\n- All data stored locally in browser (IndexedDB)\n- No cloud sync or external servers\n- Biometric data never leaves device\n- Export regularly for backup\n\n### Recommendations\n1. Change default PINs immediately\n2. Enable biometric authentication\n3. Regular backups via export\n4. Use unique names for items\n5. Don't share Docker volumes\n\n## 🛠️ Development\n\n### Tech Stack\n- **Frontend**: React 18 + TypeScript\n- **Styling**: Tailwind CSS + Shadcn/ui\n- **Build**: Vite\n- **Database**: IndexedDB\n- **Auth**: WebAuthn API\n- **PWA**: Vite PWA Plugin\n- **Container**: Docker + Nginx\n\n### Project Structure\n```\nmy-vault/\n├── src/\n│   ├── components/     # React components\n│   │   ├── ui/        # Shadcn components\n│   │   ├── EditModal.tsx\n│   │   ├── ExportImportModal.tsx\n│   │   └── LockScreen.tsx\n│   ├── pages/         # Page components\n│   ├── hooks/         # Custom hooks\n│   ├── services/      # Business logic\n│   ├── utils/         # Utilities\n│   └── config/        # Configuration\n├── public/            # Static assets\n├── docker-compose.yml # Docker config\n├── Dockerfile        # Container build\n└── package.json      # Dependencies\n```\n\n### Adding Features\n\n1. **New Component**:\n```tsx\n// src/components/NewFeature.tsx\nexport const NewFeature = () =\u003e {\n  return \u003cdiv className=\"glass-pink-glow\"\u003e...\u003c/div\u003e\n}\n```\n\n2. **New Data Type**:\n- Update types in Dashboard.tsx\n- Add to useDatabase hook\n- Update dataConverters.ts\n\n## 🐛 Troubleshooting\n\n### Docker Container Issues\n\nIf the PIN authentication fails in Docker but works locally:\n\n1. **Clear all Docker caches**:\n```bash\ndocker-compose down -v\ndocker system prune -f\ndocker-compose build --no-cache\ndocker-compose up -d\n```\n\n2. **Browser cache issues**:\n- Clear all browser data for localhost:3000\n- Use a fresh incognito/private window\n- Disable service workers if they're caching old files\n\n### PIN Authentication\n\n- Default PIN: `445566` (6 digits)\n- Admin PIN for biometric setup: `999999`\n- After 3 failed attempts, account locks for 5 minutes\n\n### Known Issues\n\n- Service workers may cache old JavaScript files - clear browser data to resolve\n- On Windows, ensure Docker Desktop is running with WSL2 backend\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create feature branch: `git checkout -b feature/amazing`\n3. Commit changes: `git commit -m 'Add amazing feature'`\n4. Push branch: `git push origin feature/amazing`\n5. Open Pull Request\n\n## 📝 License\n\nMIT License - Use freely for personal or commercial purposes.\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**Biometric not working**\n- Ensure HTTPS or localhost\n- Check browser WebAuthn support\n- Try different browser\n\n**Data not persisting**\n- Check browser storage settings\n- Disable private/incognito mode\n- Clear browser cache\n\n**Docker not starting**\n```bash\n# Check logs\ndocker logs my-vault\n\n# Verify port availability\nlsof -i :3000\n```\n\n**PWA not installing**\n- Requires HTTPS in production\n- Check manifest.json validity\n- Clear service worker cache\n\n## 🚀 Deployment Options\n\n### Railway\nSee included Railway configuration for one-click deployment.\n\n### Vercel\n```bash\nnpm run build\n# Deploy dist folder as static site\n```\n\n### Self-Hosted\n1. Build production files\n2. Serve with any web server (Nginx, Apache)\n3. Configure HTTPS for PWA/WebAuthn\n\n## 📧 Support\n\nFor issues or questions:\n- Open GitHub issue\n- Check existing issues first\n- Provide detailed information\n\n## 🙏 Acknowledgments\n\n- [Lucide Icons](https://lucide.dev/) - Beautiful icon set\n- [Shadcn/ui](https://ui.shadcn.com/) - UI components\n- [Tailwind CSS](https://tailwindcss.com/) - Styling\n- [Vite](https://vitejs.dev/) - Build tool\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  Made with ❤️ and 🔒 for security-conscious developers\n  \n  **Remember: Your keys, your control!**\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevtodayjason%2Fmyvault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebdevtodayjason%2Fmyvault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevtodayjason%2Fmyvault/lists"}