Note: For privacy reasons, only partial code is displayed in this repository.
MetExplorer is an iOS app that allows users to explore artwork from the Metropolitan Museum of Art (The Met) using their public REST API. Users can browse collections by department, view detailed artwork information, save favorite pieces, and organize their collections using custom tags.
- Browse artworks by department using a NavigationStack interface
- View detailed information for each artwork, including title, artist, culture,medium, and etc
- Zoom in to view artwork images in full-screen mode with pinch gestures
- Search and filter artworks by keywords,culture and medium
- Mark artworks as favorites and organize them using custom tags
- Create and manage custom tag categories stored locally using SwiftData
- See your favorite collection in a dedicated My Collection tab
- Search through your personal collection
- Clean UI with error handling and user-friendly alerts
- Uses URLSession to fetch data from The Met’s API
- Decodes JSON into Swift model objects
- Displays user-friendly messages when errors occur
- Department → ArtworkList → ArtworkDetail with NavigationStack
- Titles reflect current content (e.g., department name as title)
- Navigation behaves as expected (no glitches)
- Searchable list (manual search bar used to workaround iOS 18.4 bug)
- Filter artworks by medium or culture
- Favorite artworks with one-tap tagging and removal
- Tag management with real-time UI update
- Full-screen zoomable image viewer for artwork
- Stores user’s favorites and custom tag categories locally
- Reloads persisted data on launch
- TabView with “Find” and “Collection” sections
- Clear labels and SF Symbols used
- Built using SwiftUI, Swift 6, and SwiftData
- ViewModels use
@Observablefor Swift Concurrency compatibility - Async/await used exclusively for data fetching
- Proper error messages shown using alerts and
ContentUnavailableView - HTML in artwork titles is parsed and rendered using AttributedString
MetExplorer/
├── Models/ // Artwork, Department, FavoriteItem, UserTag..
├── Views/ // DepartmentListView, ArtworkListView, CollectionView..
├── ViewModels/ // DepartmentViewModel, ArtworkListViewModel..
├── Networking/ // MetMuseumAPI, APIError
├── Resources/ // Assets, Preview Content
- Open
MetExplorer.xcodeprojin Xcode 16+ - Ensure the simulator is set to iOS 18.4 or higher
- Run the app on iPhone 16 simulator (recommended)
-
My Collection: sorting, multi-tag filtering, visual tag indicators
-
Artwork sharing & export: PDF, social cards
-
Context enrichment: Wikipedia integration, ChatGPT AI-generated descriptions
-
Image pipeline: skeleton loading, caching, progressive loading
-
Accessibility: Dark Mode, Dynamic Type, VoiceOver support
-
System integration: WidgetKit, App Intents (Siri/Shortcuts), Core Spotlight
-
Collection insights: simple analytics with Swift Charts
-
Cross-device sync: iCloud / CloudKit for favorites and tags
-
Advanced features (optional): MapKit for artwork locations, ARKit for real-world previews, TipKit onboarding
2108















