Skip to content

Repository files navigation

MusicWall

Overview

MusicWall is an iOS app that integrates with Apple Music to help users curate and visualize their album collection.

Screenshots

Key Features

  • Apple Music Integration: Full integration with Apple MusicKit API for searching and playing music
  • Dual Search Capability: Search both your personal music library and the Apple Music catalog
  • Flexible Layouts: Switch between grid and list views for different browsing experiences
  • Smart Sorting: Sort albums by artist, title, or release year with ascending/descending options
  • Persistent Storage: Album collections are saved locally using UserDefaults with backup recovery
  • One-Tap Playback: Play albums directly from the app using SystemMusicPlayer

Technical Highlights

Architecture & Design Patterns

  • SwiftUI: Modern declarative UI framework
  • Observable Pattern: Using @Observable macro for reactive state management
  • MVVM-inspired: Clean separation of concerns with view models and service layers

Key Technologies

  • SwiftUI: User interface framework
  • MusicKit: Apple Music API integration

Technical Implementation Details

  • Image caching for optimized album artwork loading
  • State management with SwiftUI's @State and @Environment
  • Snackbar notifications for user feedback

Project Structure

MusicWall/
├── MusicWallApp.swift          # App entry point
├── ContentView.swift            # Main view with authorization handling
├── HomePageView.swift           # Primary album display interface
├── AlbumSearchView.swift        # Album search and selection
├── Album.swift                  # Data models and album management
├── MusicService.swift           # Apple Music API service layer
├── LayoutViews.swift            # Grid and list layout implementations
├── ImageCache.swift             # Album artwork caching
├── Core/PreferencesStore.swift    # Persistence protocol
├── Adapters/UserDefaultsPreferencesStore.swift
└── SnackbarView.swift           # User notification component

Requirements

  • iOS 17.0+
  • Xcode 15.0+
  • Swift 5.9+
  • Apple Music subscription (for catalog access)
  • Apple Developer account (for MusicKit entitlements)

CI/CD

GitHub Actions on macos-26 (Xcode 26 default) with Fastlane and match:

Event Workflow Result
Pull request / push to main ci-tests.yml Simulator unit tests (fastlane ci_tests)
Pull request (default, when CI Tests pass) testflight-release.yml TestFlight internal build
PR with label no-deploy testflight-release.yml Skip TestFlight upload
Tag v* (e.g. v1.2.0) app-store-release.yml App Store upload + submit for review

Design and setup: docs/specs/2026-05-24-ios-cicd-design.md. Agent conventions: Agent.md. On PRs, testflight-release.yml is triggered by successful completion of CI Tests.

Local Fastlane (after bundle install):

bundle exec fastlane match appstore --readonly
bundle exec fastlane ci_build
bundle exec fastlane ci_tests

Shield: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

About

Check it out on the App Store!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages