Itinero
A beautiful, feature-rich iOS app for planning and managing your trips. Built with SwiftUI and SwiftData.

β¨ Features
Trip Management
- βοΈ Create and manage multiple trips with detailed information
- π Add multiple destinations to trips with location search
- π
Set trip dates, duration, and travel companions
- π° Budget tracking with category breakdowns
- π·οΈ Organize trips with categories and tags
- π Rich notes and trip memories
- πΊοΈ Interactive maps with nearby places discovery
- π Itinerary timeline with activities and events
- π Packing list management
- π³ Expense tracking by category
- π Analytics and statistics dashboard
- π― Smart trip templates for quick planning
User Experience
- π¨ Customizable themes (Light, Dark, System)
- π Multi-language support
- π± Multi-currency support with dynamic formatting
- π± iOS Widgets for quick trip access
- π Trip reminders and notifications
- πΈ Document management for travel papers
Advanced Features
- π€ AI-powered budget insights
- π Smart destination search
- π Spending analytics and predictions
- π¨ Custom theme creation
- π Trip collaboration features
- π± Live Activities support
ποΈ Architecture
Built with modern iOS development practices:
- SwiftUI - Declarative UI framework
- SwiftData - Modern data persistence
- MVVM - Clean architecture pattern
- Combine - Reactive programming
- WidgetKit - Home screen widgets
- Core Location - Location services
- UserNotifications - Reminders and alerts
π Requirements
- iOS 17.0+
- Xcode 15.0+
- Swift 5.9+
- macOS 14.0+ (for development)
π Getting Started
Prerequisites
- Install Xcode 15.0 or later
- Ensure you have a valid Apple Developer account (for device testing)
Installation
- Clone the repository
git clone <repository-url>
cd Triply
- Open the project
- Install dependencies
- Swift Package Manager dependencies resolve automatically on first open
- Configure the project
- Update the Bundle Identifier in Xcode if needed
- Configure signing & capabilities for your team
- Build and run
- Select a simulator or connected device
- Press
βR to build and run
Quick Run Scripts
./run.sh # Build and run in simulator
./run_device.sh # Build and run on connected device
./build.sh # Just build the project
./watch.sh # Auto-rebuild on file changes
π Project Structure
Itinero/
βββ ItineroApp.swift # App entry point
βββ Models/ # SwiftData models
β βββ TripModel.swift
β βββ DestinationModel.swift
β βββ ItineraryItem.swift
β βββ Expense.swift
β βββ ...
βββ Views/ # SwiftUI views
β βββ ContentView.swift # Root view
β βββ TripListView.swift # Main trip list
β βββ TripDetailView.swift # Trip details
β βββ AddTripView.swift # Trip creation
β βββ AnalyticsView.swift # Statistics & analytics
β βββ ...
βββ Managers/ # Business logic
β βββ SettingsManager.swift # App settings
β βββ TripDataManager.swift # Data operations
β βββ FreePlacesManager.swift # Places discovery
β βββ ...
βββ Widgets/ # iOS Widgets
β βββ TripStatsWidget.swift
βββ Extensions/ # Swift extensions
βββ Components/ # Reusable UI components
βββ Resources/ # Assets & localizations
βββ ItineroUITests/ # UI test suite
π§ͺ Testing
The project includes comprehensive UI tests:
# Run all tests
xcodebuild test -project Itinero.xcodeproj -scheme Itinero
# Run specific test suite
xcodebuild test -project Itinero.xcodeproj -scheme Itinero \
-only-testing:ItineroUITests/ScreenshotUITests
Test Coverage
- β
Trip management (create, edit, delete)
- β
Form validation
- β
Permissions handling
- β
Orientation support
- β
Screenshot capture
- β
Expense tracking
- β
Itinerary management
π¨ Customization
Themes
The app supports multiple themes:
- Light Mode
- Dark Mode
- System (follows device setting)
- Custom themes (user-created)
Localization
Currently supports:
- English
- Additional languages can be added via
Resources/Localizable.strings
Currency
Supports all major currencies with dynamic formatting:
- USD, EUR, GBP, JPY, CAD, AUD, and more
- Automatic symbol and formatting based on selection
The app includes iOS widgets for quick access:
- Trip Statistics Widget
- Upcoming Trips Widget
- Active Trip Widget
Add widgets from the home screen by long-pressing and selecting βItineroβ.
π Permissions
The app requests the following permissions:
- Location - For maps and nearby places
- Camera - For document scanning
- Photo Library - For trip photos
- Notifications - For trip reminders
- Calendar - For itinerary events
All permissions are optional and the app gracefully handles denied permissions.
π οΈ Development
Code Style
- Follow Swift API Design Guidelines
- Use SwiftUI best practices
- Maintain MVVM architecture
- Write self-documenting code
Contributing
- Create a feature branch
- Make your changes
- Add tests for new features
- Ensure all tests pass
- Submit a pull request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- Built with SwiftUI
- Uses SwiftData for persistence
- Icons and UI elements use SF Symbols
π Support
For issues, questions, or feature requests:
- Open an issue on GitHub
- Contact: tobiadegoroye49@gmail.com
Support
If you need help with Itinero, please contact:
Email: Tobi_adegoroye@yahoo.com
Subscriptions
You can manage or cancel your subscription from your Apple ID subscription settings.
Restore Purchases
Open Itinero and tap Restore Purchases.
Made with β€οΈ using SwiftUI