Visually Interesting Planned Easy Roadtrips (VIPER)
This is a Swift concurrency implementation of the VIPER architecture pattern tutorial from Kodeco. The original tutorial used Combine for reactive programming, while this version uses modern Swift concurrency.
- Swift Concurrency: Uses
async/awaitinstead of Combine'sPublisher/Subscriberpattern - @Observable Macro: Replaces Combine's
@Publishedproperties with the new@Observablemacro for reactive UI updates - @MainActor: Ensures UI updates happen on the main thread using the
@MainActormacro - Modern Swift: Leverages Swift 5.9+ features for cleaner, more maintainable code
VIPER stands for:
- View: SwiftUI views that display the user interface
- Interactor: Business logic and data manipulation
- Presenter: Coordinates between View and Interactor, handles presentation logic
- Entity: Data models (Trip, Waypoint)
- Router: Navigation and routing between screens
- To see pictures, you'll need to get a Pixabay API Key here: https://pixabay.com/accounts/register/?source=signup_button_header
- Then, paste it into the spot in
ImageDataProvider.swift - It'll look cool if you choose interesting places for your trip
- Then, paste it into the spot in
- Create and manage road trips with waypoints
- Interactive map view showing trip routes
- Image integration with Pixabay API
- Clean VIPER architecture with Swift concurrency
- Persistent data storage using JSON
Based on: Getting Started with the VIPER Architecture Pattern by Michael Katz
- maldives image: Photo by Sebastian Pena Lambarri on Unsplash
- neuschwanstein castle: Photo by Lukas K on Unsplash
- berlin: Photo by 🇨🇭 Claudio Schwarz | @purzlbaum on Unsplash

