Travel Manager is a comprehensive iOS application that helps users plan and organize their trips by managing destinations, trips, activities, and expenses. The application provides an intuitive interface built with UIKit and Storyboard, robust data persistence with Core Data, advanced search functionality, and dynamic data retrieval from external APIs.
- Create, view, update, and delete travel destinations

- Store destination details: city, country, and picture
- Prevent deletion of destinations linked to existing trips
- Fetch destination data dynamically from API
- Manage destination images with UIImagePickerController
- Create trips with start/end dates associated with destinations

- Update trip details (title, dates) with validation
- Prevent deletion of trips with linked activities or expenses
- View all trips in an organized list with sorting options
- Schedule activities for specific trips with date, time, and location

- Update activity details with validation
- Prevent deletion of activities scheduled in the past
- View all activities for each trip in chronological order
- Record expenses for trips with amount and date

- Update expense details with validation
- Prevent deletion of expenses older than 30 days
- View expense summaries and totals for each trip
Powerful search capabilities across:
- Destination
- Trip
- Activity
- Clean, intuitive interface built with Storyboard
- Responsive design that adapts to all iPhone models
- Appropriate keyboard types for different input fields
- Automatic keyboard management with input field scrolling
- Xcode 13.0 or later
- iOS 14.0+ device or simulator
-
Clone this repository
git clone https://github.com/HeminPatel05/travel-manager.git cd travel-manager -
Open the project in Xcode
open TravelManager.xcworkspaceor
open TravelManager.xcodeproj -
Build and run the application on your preferred simulator or device
TravelManager/
├── AppDelegate.swift
├── ViewController.swift
├── Assets.xcassets/
├── Info.plist
├── LaunchScreen.storyboard
├── Main.storyboard
├── Destination/
│ ├── ViewDestinationTableViewController.swift
│ ├── DestinationViewController.swift
│ ├── AddDestinationViewController.swift
│ ├── UpdateDestinationViewController.swift
│ └── DeleteDestinationViewController.swift
├── Trip/
│ ├── ViewTripTableViewController.swift
│ ├── TripViewController.swift
│ ├── AddTripViewController.swift
│ ├── UpdateTripViewController.swift
│ └── DeleteTripViewController.swift
├── Activity/
│ ├── ViewActivityTableViewController.swift
│ ├── ActivityViewController.swift
│ ├── AddActivityViewController.swift
│ ├── UpdateActivityViewController.swift
│ └── DeleteActivityViewController.swift
├── Expense/
│ ├── ViewExpenseTableViewController.swift
│ ├── ExpenseViewController.swift
│ ├── AddExpenseViewController.swift
│ ├── UpdateExpenseViewController.swift
│ └── DeleteExpenseViewController.swift
└── APIModels/
├── APIDestination.swift
└── TripAPIModel.swift
- Language: Swift 5
- iOS Target: iOS 14.0+
- UI Framework: UIKit with Storyboard
- Persistence: Core Data/SQLite
- Networking: URLSession for API requests
- Image Handling: UIImagePickerController
The application follows the Model-View-Controller (MVC) architecture:
- Models: Core Data entities for Destination, Trip, Activity, and Expense
- Views: Storyboard-based UI with custom table view cells
- Controllers: View controllers for each screen managing business logic
- API data retrieval → Data parsing → Core Data storage
- User interaction → Business logic validation → Core Data update
- Core Data queries → UI updates
The application uses a hierarchical navigation structure:
Destinations List → Trip List → Trip Details ↓ Activities & Expenses Tabs
-
Destinations Screen
- Displays all destinations with images
- Add/Edit/Delete functionality
- Search capability
-
Trips Screen
- Displays trips for selected destination
- Add/Edit/Delete functionality
- Search capability
-
Trip Details Screen
- Tabbed interface for Activities and Expenses
- Trip summary information
- Navigation to add/edit activities and expenses
-
Add/Edit Screens
- Form-based input for each entity
- Validation with error messaging
- Date pickers and appropriate keyboard types
The Core Data model maintains relationships between entities:
- A Destination has many Trips (one-to-many)
- A Trip has many Activities (one-to-many)
- A Trip has many Expenses (one-to-many)
Auto-layout constraints ensure proper display across all iPhone models:
- Stack views for flexible content arrangement
- Proportional constraints for adaptive sizing
- Scroll views to accommodate varying content sizes
- Storyboard-based UI with segues for navigation
- CRUD operations for all entities (Destination, Trip, Activity, Expense)
- Data validation and meaningful error handling
- Comprehensive search functionality
- Data persistence with Core Data/SQLite
- Dynamic data retrieval from APIs
- Image handling for destinations
- Responsive design for various iPhone models
- Appropriate keyboard types and keyboard management
- No crashes with robust error handling
- Data model designed to maintain relationships between entities
- Error handling implemented throughout the application
- API integration with proper parsing (XML or JSON)
- Core Data/SQLite used for efficient data storage
- Responsive UI with auto-layout support for various screen sizes



