A modern, native macOS file browser with advanced tagging and filtering capabilities built with SwiftUI.
HyperTagBrowser is a sophisticated file management application that goes beyond traditional file browsers by providing powerful tagging, filtering, and organization features. Built entirely with SwiftUI for macOS, it offers a native experience with modern design patterns and efficient file indexing.
- Multi-domain tagging: Organize files with descriptive, attribution, creation date, and queue-based tags
- Smart tag suggestions: Context-aware tag recommendations as you type
- Tag hierarchies: Create relationships between tags for better organization
- Bulk tag operations: Apply or remove tags from multiple files simultaneously
- Real-time filtering: Instantly filter files by tags, dates, artists, creators, and more
- Complex queries: Combine multiple filter criteria for precise results
- Date-based filtering: Filter by creation dates with flexible date ranges
- Search suggestions: Intelligent autocomplete for tag and content search
- Native macOS design: Built with SwiftUI following Apple's Human Interface Guidelines
- Responsive layout: Adapts to different window sizes and screen configurations
- Dark mode support: Full support for light and dark appearance modes
- Keyboard navigation: Comprehensive keyboard shortcuts for power users
- Thumbnail generation: Automatic thumbnail creation for images and documents
- Grid and table views: Multiple viewing modes for different use cases
- Detail inspector: Comprehensive file information and metadata display
- Image preview: Built-in image viewing with zoom and pan capabilities
- Background indexing: Efficient file system scanning without blocking the UI
- SQLite database: Fast, reliable storage for file metadata and tags
- Memory optimization: Smart caching and resource management
- Incremental updates: Only re-index changed files for better performance
- macOS: 15.0 or later
- Architecture: Apple Silicon (M1/M2/M3) or Intel
- Memory: 4GB RAM minimum, 8GB recommended
- Storage: 100MB for the application, additional space for database
-
Clone the repository
git clone https://github.com/robinsr/HyperTagBrowser.git cd HyperTagBrowser -
Open in Xcode
open HyperTagBrowser.xcodeproj
-
Build and run
- Select your target device (Mac)
- Press
Cmd+Rto build and run - Or use
Product > Runfrom the menu
The project uses several dependencies managed through Swift Package Manager:
- GRDB: Database layer with SQLite
- Factory: Dependency injection
- Defaults: User preferences management
- GRDBQuery: Reactive database queries
- MacSettings: Settings UI components
- Launch the app and grant necessary permissions for file access
- Select a folder to index using the folder picker or drag and drop
- Wait for indexing to complete (progress is shown in the status bar)
- Start tagging files by selecting them and using the tag panel
- Select one or more files
- Open the tag panel (
βT) - Type tag names and press Enter to apply
- Use tag suggestions for consistency
- Use the browse refinements panel (
βF) - Add multiple filter criteria
- Combine tags, dates, and other attributes
- Save frequently used filter combinations
- Grid view: Visual browsing with thumbnails
- Table view: Detailed list with sortable columns
- Detail view: Full file information and preview
- Sidebar: Quick access to bookmarks and work queues
| Action | Shortcut |
|---|---|
| Show Quick Actions | β§βP |
| Toggle Sidebar | βS |
| Show Filters | βF |
| Show Bookmarks | βB |
| Show Work Queues | βQ |
| Manage Tags | βT |
| Edit Tags | βE |
| Select All | βA |
| Navigate Back | β[ |
| Navigate Forward | β] |
- AppViewModel: Main application state management
- IndexerService: File system scanning and metadata extraction
- Database Layer: SQLite-based storage with GRDB
- Tag System: Flexible tagging with multiple domains and types
- UI Components: Modular SwiftUI views and modifiers
- MVVM: Model-View-ViewModel architecture
- Dependency Injection: Using Factory for service management
- Reactive Programming: GRDBQuery for database observations
- Composition: Modular UI components and modifiers
HyperTagBrowser/
βββ App/
β βββ Components/ # Reusable UI components
β βββ Data/ # Domain models and view models
β βββ Screens/ # Main application screens
β βββ Services/ # Business logic and external services
β βββ Utilities/ # Helper functions and extensions
βββ Extensions/ # Swift extensions
βββ Resources/ # Assets and resources
βββ Tests/ # Unit and UI tests
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Swift API Design Guidelines
- Use SwiftUI best practices
- Maintain consistent naming conventions
- Include comprehensive documentation
- Write unit tests for new features
# Run all tests
xcodebuild test -scheme HyperTagBrowser -destination 'platform=macOS'
# Run specific test target
xcodebuild test -scheme HyperTagBrowser -destination 'platform=macOS' -only-testing:HyperTagBrowserTestsThe project includes:
- Unit tests: Core business logic and data models
- UI tests: User interface interactions
- Integration tests: Database and service layer testing
- Lazy loading: Images and thumbnails loaded on demand
- Background processing: File indexing doesn't block the UI
- Memory management: Efficient caching and cleanup
- Database optimization: Indexed queries and connection pooling
- Indexing speed: ~1000 files/second on SSD
- Memory usage: <100MB for typical usage
- Startup time: <2 seconds on modern hardware
App won't start
- Check macOS version compatibility
- Verify file permissions
- Check Console.app for crash logs
Slow performance
- Reduce the number of indexed files
- Check available disk space
- Restart the application
Tags not saving
- Verify database permissions
- Check disk space
- Try rebuilding the database
Enable debug features by adding development flags in the settings panel:
- SQL query logging
- Performance metrics
- UI debugging tools
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with SwiftUI
- Database powered by GRDB
- Icons from SF Symbols
- Design inspiration from native macOS applications
HyperTagBrowser - Organize your digital life with intelligent tagging