This app contains information about characters and events from Breaking Bad, Better Call Saul, and El Camino.
...
...
...
...
...
BBQuotes is a SwiftUI application that showcases quotes and episodes from the Breaking Bad universe, including Breaking Bad, Better Call Saul, and El Camino. The app allows users to view random quotes, character information, explore details about their favorite characters, and get information about random episodes from these iconic TV series.
Based on the Udemy course iOS 18, SwiftUI 6, & Swift 6: Build iOS Apps From Scratch.
The following features and improvements were independently developed, extending beyond the course curriculum:
- Integration of additional packages to extend capabilities and streamline development
- Project structure for better organization
- Unit tests for API client and view models
- Generic API client with
makeRequest
function - Custom error handling with
APIError
messages - Quote fetching feature on app launch
- Mock data in Preview Content for SwiftUI previews
A performance issue was discovered and fixed:
- Fetch and display random quotes from Breaking Bad, Better Call Saul, and El Camino
- View detailed character information, including images, occupations, and status
- Fetch and display random episode information, including title, season, episode number, and synopsis
- Toggle between different TV series
- Error handling and user feedback
.
├── BBQuotes
│ ├── BBQuotesApp.swift
│ ├── Clients
│ │ └── APIClient.swift
│ ├── Models
│ │ ├── Character.swift
│ │ ├── Death.swift
│ │ ├── Episode.swift
│ │ ├── Production.swift
│ │ └── Quote.swift
│ ├── Preview Content
│ │ ├── MockData.swift
│ │ └── Preview Assets.xcassets
│ │ └── Contents.json
│ └── Screens
│ ├── Character
│ │ └── Views
│ │ └── CharacterView.swift
│ ├── ContentView.swift
│ └── QuoteEpisode
│ ├── Subviews
│ │ ├── EpisodeView.swift
│ │ └── QuoteView.swift
│ ├── ViewModels
│ │ └── QuoteEpisodeViewModel.swift
│ └── Views
│ └── QuoteEpisodeView.swift
└── BBQuotesTests
├── Clients
│ ├── APIClientIntegrationTests.swift
│ └── APIClientTests.swift
├── Models
│ ├── EpisodeTests.swift
│ └── ProductionTests.swift
└── Screens
└── QuoteEpisode
└── ViewModels
└── QuoteViewModelTests.swift
This project uses Swift Package Manager (SPM) for dependency management. The following packages are included:
- Inject - Used for hot reloading during development
- SwiftLint - Used for code linting
- SwiftFormat - Used for code formatting