How giselezz/encore works
Encore is an offline iOS concert journal: people record shows, attach photos and captions, browse and revisit memories, and can share images into a concert or see the latest memory in a widget. The main flow runs from SwiftUI screens through view models and use cases to repository protocols, Core Data, and JPEG photo storage. The share extension reuses browse/save operations; the widget reads a featured-memory repository. Edges reflect README statements or shown source references/calls; unsampled subsystem links are limited to documented relationships.
Main entry points: ShareViewController.swift Share extension flow · UseCases Concert use cases · ViewModels Screen view models · CoreDataConcertRepository.swift Core Data concert store
Components 22
Encore app
- Concert library
Encore/Encore/Views/ConcertLibraryView.swift - Concert details
Encore/Encore/Views/ConcertDetailView.swift - Add memory screen
Encore/Encore/Views/AddConcertMemoryView.swift - Screen view models
Encore/Encore/ViewModels
Journal operations
- Concert use cases
Encore/Encore/UseCases - Concert model
Encore/Encore/Domain/Concert.swift - Memory model
Encore/Encore/Domain/ConcertMoment.swift - Featured memory
Encore/Encore/Domain/FeaturedConcertMemory.swift
Local persistence
- Concert repository contract
Encore/Encore/Repositories/ConcertRepository.swift - Memory repository contract
Encore/Encore/Repositories/ConcertMemoryRepository.swift - Featured repository contract
Encore/Encore/Repositories/FeaturedConcertMemoryRepository.swift - Core Data concert store
Encore/Encore/Repositories/CoreDataConcertRepository.swift - Core Data memory store
Encore/Encore/Repositories/CoreDataConcertMemoryRepository.swift - Latest memory reader
Encore/Encore/Repositories/CoreDataFeaturedConcertMemoryRepository.swift - Photo storage
Encore/Encore/Storage/LocalConcertPhotoStorage.swift - App Group storage
Encore/Encore/Shared/EncoreSharedStorage.swift
Sharing and widget
- Share extension flow
Encore/EncoreShare/ShareViewController.swift - Concert chooser
Encore/EncoreShare/ShareConcertView.swift - Home Screen widget
Encore/EncoreWidget/EncoreWidget.swift - Widget refresh wrappers
Encore/Encore/Repositories/WidgetRefreshingMemoryRepository.swift
Other components
- Concert journal user
- Share sheet user
Connections 25
- Concert journal user → Concert library: opens journal
- Concert library → Screen view models: updates state
Encore/Encore/Views/ConcertLibraryView.swift - Concert details → Screen view models: loads details
Encore/Encore/Views/ConcertDetailView.swift - Add memory screen → Screen view models: submits memory
Encore/Encore/Views/AddConcertMemoryView.swift - Screen view models → Concert use cases: invokes operations
Encore/Encore/ViewModels/ConcertDetailViewModel.swift - Concert use cases → Concert repository contract: reads and writes
Encore/Encore/UseCases/BrowseConcertHistory.swift - Concert use cases → Memory repository contract: reads and writes
Encore/Encore/UseCases/AddConcertMemory.swift - Concert use cases → Photo storage: saves and cleans
Encore/Encore/UseCases/AddConcertMemory.swift - Core Data concert store → Concert repository contract: implements
Encore/Encore/Repositories/CoreDataConcertRepository.swift - Core Data memory store → Memory repository contract: implements
Encore/Encore/Repositories/CoreDataConcertMemoryRepository.swift - Latest memory reader → Featured repository contract: implements
Encore/Encore/Repositories/CoreDataFeaturedConcertMemoryRepository.swift - Photo storage → App Group storage: uses shared folder
Encore/Encore/Storage/LocalConcertPhotoStorage.swift - Core Data concert store → Concert model: maps records
Encore/Encore/Repositories/CoreDataConcertRepository.swift - Core Data memory store → Memory model: maps records
Encore/Encore/Repositories/CoreDataConcertMemoryRepository.swift - Latest memory reader → Featured memory: returns latest
Encore/Encore/Repositories/CoreDataFeaturedConcertMemoryRepository.swift - Share sheet user → Share extension flow: shares image
- Share extension flow → Concert chooser: presents chooser
Encore/EncoreShare/ShareViewController.swift - Share extension flow → Concert use cases: reuses browse and save
Encore/EncoreShare/ShareViewController.swift - Share extension flow → Core Data concert store: configures concert store
Encore/EncoreShare/ShareViewController.swift - Share extension flow → Core Data memory store: configures memory store
Encore/EncoreShare/ShareViewController.swift - Share extension flow → Photo storage: configures photo storage
Encore/EncoreShare/ShareViewController.swift - Home Screen widget → Latest memory reader: fetches latest memory
Encore/EncoreWidget/EncoreWidget.swift - Home Screen widget → App Group storage: loads photo
Encore/EncoreWidget/EncoreWidget.swift - Widget refresh wrappers → Home Screen widget: requests refresh
Encore/Encore/Repositories/WidgetRefreshingMemoryRepository.swift - Widget refresh wrappers → Memory repository contract: wraps repository
Encore/Encore/Repositories/WidgetRefreshingMemoryRepository.swift