{"id":46937551,"url":"https://github.com/rilltome/atlas","last_synced_at":"2026-03-11T06:01:58.156Z","repository":{"id":330723114,"uuid":"1121525646","full_name":"rillToMe/Atlas","owner":"rillToMe","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-27T14:01:18.000Z","size":226,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-29T09:47:05.588Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rillToMe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-23T06:12:05.000Z","updated_at":"2025-12-27T14:01:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rillToMe/Atlas","commit_stats":null,"previous_names":["rilltome/atlas"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rillToMe/Atlas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rillToMe%2FAtlas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rillToMe%2FAtlas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rillToMe%2FAtlas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rillToMe%2FAtlas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rillToMe","download_url":"https://codeload.github.com/rillToMe/Atlas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rillToMe%2FAtlas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30372537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"online","status_checked_at":"2026-03-11T02:00:07.027Z","response_time":84,"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":"2026-03-11T06:01:53.381Z","updated_at":"2026-03-11T06:01:58.149Z","avatar_url":"https://github.com/rillToMe.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🗺️ Atlas - Private Media Vault\n\n\u003cdiv align=\"center\"\u003e\n\n![Atlas Logo](https://img.shields.io/badge/Atlas-Private%20Media%20Vault-007ACC?style=for-the-badge\u0026logo=windows\u0026logoColor=white)\n![.NET](https://img.shields.io/badge/.NET-8.0-512BD4?style=for-the-badge\u0026logo=dotnet\u0026logoColor=white)\n![WPF](https://img.shields.io/badge/WPF-Windows-0078D4?style=for-the-badge\u0026logo=windows\u0026logoColor=white)\n![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)\n\n**A modern Windows desktop application for securing and managing your private photos and videos with PIN protection and hidden storage.**\n\n[Features](#-features) • [Installation](#-installation) • [Usage](#-usage) • [Architecture](#-architecture) • [Contributing](#-contributing)\n\n\u003c/div\u003e\n\n---\n\n## 📖 Overview\n\nAtlas is a privacy-focused media vault application built with .NET 8.0 and WPF. It provides a secure, user-friendly way to hide and protect your sensitive photos and videos from unauthorized access. With PIN-protected authentication and hidden folder storage, your media files remain invisible to file explorers while being easily accessible through Atlas's built-in viewers.\n\n### Why Atlas?\n\n- **🔐 Privacy First**: PIN-protected access ensures only you can view your media\n- **👁️ Hidden Storage**: Files stored in hidden folders, invisible to file explorers\n- **🎬 Built-in Players**: No need for external apps - view images and play videos directly\n- **🚀 Simple \u0026 Fast**: Intuitive interface with drag-and-drop import\n- **🎨 Modern UI**: Clean, dark-themed interface designed for Windows 10/11\n\n---\n\n## ✨ Features\n\n### Security\n- **4-8 Digit PIN Protection**: Numeric PIN authentication for quick access\n- **SHA-256 Hashing**: Secure PIN storage using industry-standard hashing\n- **Hidden Storage**: Automatic folder hiding with Windows file attributes\n- **Reset Mechanism**: Complete app reset option if PIN is forgotten\n\n### Media Management\n- **Image Support**: JPG, JPEG, PNG, GIF, BMP, WebP\n- **Video Support**: MP4, AVI, MKV, MOV, WMV, FLV\n- **Drag \u0026 Drop Import**: Simply drag files into the app\n- **File Browser Import**: Traditional file picker for adding media\n- **Grid Gallery View**: Thumbnail-based gallery with file information\n\n### Viewers\n- **Image Viewer**: Full-screen image preview with zoom support\n- **Video Player**: Built-in player with playback controls (play, pause, stop, seek)\n- **Smooth Playback**: Hardware-accelerated video rendering\n\n### User Experience\n- **First-Time Setup**: Guided onboarding with storage location selection\n- **Auto-Save Settings**: Persistent configuration across sessions\n- **Status Indicators**: Real-time feedback on operations\n- **Scrollable Interfaces**: All windows support scrolling for various screen sizes\n\n---\n\n## 🚀 Installation\n\n### Prerequisites\n- **Windows 10/11** (64-bit)\n- **.NET 8.0 Runtime** ([Download](https://dotnet.microsoft.com/download/dotnet/8.0))\n- **Visual Studio 2022** (for building from source)\n\n### Building from Source\n\n1. **Clone the repository**\n```bash\ngit clone https://github.com/rillToMe/atlas.git\ncd atlas\n```\n\n2. **Restore dependencies**\n```bash\ndotnet restore\n```\n\n3. **Build the project**\n```bash\ndotnet build --configuration Release\n```\n\n4. **Run the application**\n```bash\ndotnet run\n```\n\n### Creating an Executable\n\n```bash\ndotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true\n```\n\nThe executable will be in `bin/Release/net8.0/win-x64/publish/`\n\n---\n\n## 📱 Usage\n\n### First Time Setup\n\n1. **Welcome Screen**\n   - Read about Atlas's features\n   - Click \"Let's Go!\" to proceed\n\n2. **Storage Location Setup**\n   - Choose where to store your hidden files\n   - Options: Default location (AppData) or custom folder\n   - Click \"Next: Set Your PIN\"\n\n3. **PIN Creation**\n   - Enter a 4-8 digit numeric PIN\n   - Confirm your PIN\n   - Click \"Create and Enter Atlas\"\n\n### Daily Use\n\n1. **Login**\n   - Enter your PIN\n   - Click \"Unlock\" or press Enter\n\n2. **Import Media**\n   - **Method 1**: Click \"📁 Import Files\" button\n   - **Method 2**: Drag and drop files into the window\n   - Supported formats will be automatically copied to hidden storage\n\n3. **View Media**\n   - Click any thumbnail to open the viewer\n   - Images: Full-screen preview with zoom\n   - Videos: Built-in player with standard controls\n\n4. **Forgot PIN?**\n   - Click \"Forgot PIN?\" on login screen\n   - Confirm reset (this clears app data, not your files)\n   - Go through setup process again\n\n---\n\n## 🏗️ Architecture\n\n### Project Structure\n\n```\nAtlas/\n├── Models/\n│   └── AppConfig.cs          # Configuration \u0026 Media models\n├── Services/\n│   ├── ConfigService.cs      # JSON config management\n│   ├── SecurityService.cs    # PIN hashing \u0026 validation\n│   └── StorageService.cs     # File operations \u0026 hidden folders\n├── Views/\n│   ├── WelcomeWindow.xaml    # First-time welcome screen\n│   ├── SetupWindow.xaml      # Storage location setup\n│   ├── PinSetupWindow.xaml   # PIN creation\n│   ├── PinEntryWindow.xaml   # Login screen\n│   ├── MainWindow.xaml       # Main gallery interface\n│   ├── ImageViewerWindow.xaml # Image viewer\n│   ├── VideoPlayerWindow.xaml # Video player\n│   └── SettingsWindow.xaml   # Settings \u0026 About\n├── App.xaml                  # Application entry \u0026 styles\n└── App.xaml.cs               # Startup logic\n```\n\n### UI/UX Flow Diagram\n\n```\n┌─────────────────┐\n│   App Startup   │\n└────────┬────────┘\n         │\n    ┌────▼────┐\n    │Is First │\n    │  Run?   │\n    └─┬────┬──┘\n      │    │\n   Yes│    │No\n      │    │\n      ▼    ▼\n┌──────────┐  ┌──────────────┐\n│ Welcome  │  │  PIN Entry   │\n│  Screen  │  │   (Login)    │\n└────┬─────┘  └──┬────────┬──┘\n     │           │        │\n     │       Correct   Forgot?\n     │         PIN       │\n     ▼           │       ▼\n┌──────────┐     │  ┌─────────┐\n│  Setup   │     │  │  Reset  │\n│ Storage  │     │  │   App   │\n└────┬─────┘     │  └────┬────┘\n     │           │       │\n     ▼           │       │\n┌──────────┐     │       │\n│  Create  │     │       │\n│   PIN    │     │       │\n└────┬─────┘     │       │\n     │           │       │\n     └───────┬───┴───────┘\n             │\n             ▼\n      ┌─────────────┐\n      │    Main     │\n      │   Gallery   │\n      └──┬──────┬───┘\n         │      │\n    Import│      │Click Media\n         │      │\n         ▼      ▼\n    ┌────────┐ ┌────────────┐\n    │ Files  │ │   Viewer   │\n    │ Added  │ │  (Image/   │\n    └────────┘ │   Video)   │\n               └────────────┘\n```\n\n### Data Flow\n\n```\n┌──────────────┐\n│    User      │\n│   Actions    │\n└──────┬───────┘\n       │\n       ▼\n┌──────────────────┐      ┌──────────────┐\n│     Views        │◄────►│   Services   │\n│  (XAML/C#)       │      │              │\n└──────────────────┘      └──────┬───────┘\n                                 │\n                   ┌─────────────┼─────────────┐\n                   │             │             │\n                   ▼             ▼             ▼\n           ┌──────────┐  ┌──────────┐  ┌──────────┐\n           │  Config  │  │ Storage  │  │ Security │\n           │ Service  │  │ Service  │  │ Service  │\n           └────┬─────┘  └────┬─────┘  └────┬─────┘\n                │             │              │\n                ▼             ▼              ▼\n           ┌──────────┐  ┌──────────┐  ┌──────────┐\n           │ config   │  │  Hidden  │  │   PIN    │\n           │  .json   │  │  Folder  │  │  Hashing │\n           └──────────┘  └──────────┘  └──────────┘\n```\n\n### Technology Stack\n\n| Component | Technology |\n|-----------|-----------|\n| Framework | .NET 8.0 |\n| UI Framework | WPF (Windows Presentation Foundation) |\n| Language | C# 12.0 |\n| Config Storage | System.Text.Json |\n| Security | SHA-256 Hashing |\n| Video Playback | MediaElement (WPF) |\n| Styling | XAML Resources \u0026 Styles |\n\n---\n\n## 🔒 Security Features\n\n### PIN Storage\n- PINs are **never stored in plain text**\n- SHA-256 hashing algorithm used for secure storage\n- Hash comparison for authentication\n\n### Hidden Storage\n- Media files stored in folders with Windows `Hidden` attribute\n- Folders invisible in standard file explorer views\n- Files remain encrypted by Windows filesystem if drive encryption is enabled\n\n### Important Security Notes\n\n⚠️ **Current Version (v1.0):**\n- Uses basic hidden folder storage (not encrypted)\n- PIN hashing prevents plain-text storage but isn't bullet-proof security\n- Suitable for privacy from casual browsing, not forensic-level security\n\n🔐 **Future Enhancements:**\n- AES-256 file encryption\n- Biometric authentication (Windows Hello)\n- Secure key management\n- Multiple user profiles\n\n---\n\n## 🎨 UI/UX Design\n\n### Design Principles\n- **Dark Theme First**: Optimized for low-light use and privacy\n- **Minimal Clutter**: Focus on content, hide complexity\n- **Immediate Feedback**: Visual states for all interactions\n- **Accessibility**: Keyboard shortcuts and clear visual hierarchy\n\n### Color Palette\n\n| Purpose | Color | Hex |\n|---------|-------|-----|\n| Background | Dark Gray | `#1E1E1E` |\n| Surface | Darker Gray | `#2D2D30` |\n| Primary | Blue | `#007ACC` |\n| Primary Hover | Light Blue | `#1C97EA` |\n| Text | White | `#FFFFFF` |\n| Text Secondary | Light Gray | `#CCCCCC` |\n| Border | Gray | `#3F3F46` |\n\n---\n\n## 📊 File Support\n\n### Images\n| Format | Extension | Notes |\n|--------|-----------|-------|\n| JPEG | `.jpg`, `.jpeg` | Most common format |\n| PNG | `.png` | Transparency support |\n| GIF | `.gif` | Animation support |\n| BMP | `.bmp` | Uncompressed |\n| WebP | `.webp` | Modern format |\n\n### Videos\n| Format | Extension | Notes |\n|--------|-----------|-------|\n| MP4 | `.mp4` | Best compatibility |\n| AVI | `.avi` | Legacy format |\n| MKV | `.mkv` | High quality |\n| MOV | `.mov` | QuickTime format |\n| WMV | `.wmv` | Windows Media |\n| FLV | `.flv` | Flash video |\n\n**Note**: Video playback depends on codecs installed on Windows system.\n\n---\n\n## 🛠️ Configuration\n\n### Config File Location\n```\n%AppData%\\Atlas\\config.json\n```\n\n### Config Structure\n```json\n{\n  \"isFirstRun\": false,\n  \"pinHash\": \"hashed_pin_string\",\n  \"storagePath\": \"C:\\\\path\\\\to\\\\storage\",\n  \"theme\": \"dark\"\n}\n```\n\n### Default Storage Location\n```\n%AppData%\\Atlas\\Storage\\\n```\n\n---\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**Q: Video won't play**\n- A: Install Windows Media Feature Pack or VLC codec pack\n- Some video formats require additional codecs\n\n**Q: Forgot PIN, can't reset**\n- A: Click \"Forgot PIN?\" on login screen\n- Note: This resets app settings, not your files\n\n**Q: Files not showing in gallery**\n- A: Check file format is supported\n- Verify files were successfully imported\n\n**Q: Hidden folder visible in Explorer**\n- A: Ensure \"Show hidden files\" is disabled in Explorer\n- File → Options → View → Hidden files and folders\n\n**Q: Import fails**\n- A: Check disk space\n- Verify file isn't locked by another program\n- Run app as administrator if needed\n\n---\n\n## 🚧 Roadmap\n\n### Version 1.x (Current)\n- [x] PIN authentication\n- [x] Hidden storage\n- [x] Image viewer\n- [x] Video player\n- [x] Drag \u0026 drop import\n- [x] Settings window\n\n### Version 2.0 (Planned)\n- [ ] AES-256 file encryption\n- [ ] Thumbnail generation for videos\n- [ ] Search \u0026 filter functionality\n- [ ] Categories/Albums\n- [ ] Batch operations (delete, move)\n- [ ] Export functionality\n- [ ] Dark/Light theme toggle\n\n### Version 3.0 (Future)\n- [ ] Windows Hello integration\n- [ ] Cloud backup option\n- [ ] Multi-user support\n- [ ] Mobile companion app\n- [ ] Advanced security features\n- [ ] Slideshow mode\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Here's how you can help:\n\n1. **Fork the repository**\n2. **Create a feature branch** (`git checkout -b feature/AmazingFeature`)\n3. **Commit your changes** (`git commit -m 'Add some AmazingFeature'`)\n4. **Push to the branch** (`git push origin feature/AmazingFeature`)\n5. **Open a Pull Request**\n\n### Development Guidelines\n- Follow existing code style and naming conventions\n- Add XML documentation for public methods\n- Test on Windows 10 and Windows 11\n- Update README if adding new features\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 👨‍💻 Author\n\n**DitDev**\n- Portfolio: [https://ditdev.vercel.app](https://ditdev.vercel.app)\n- GitHub: [@rillToMe](https://github.com/rillToMe)\n\n---\n\n## 🙏 Acknowledgments\n\n- Built for privacy-conscious users\n- Inspired by the need for simple, effective media protection\n- Thanks to the .NET and WPF community for excellent documentation\n\n---\n\n## 📞 Support\n\nIf you encounter any issues or have questions:\n- Open an issue on GitHub\n- Check the [Troubleshooting](#-troubleshooting) section\n- Contact via portfolio website\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ Star this repo if you find it helpful!**\n\nMade by [DitDev](https://ditdev.vercel.app)\n\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frilltome%2Fatlas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frilltome%2Fatlas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frilltome%2Fatlas/lists"}