Repository files navigation # GoThere iOS
iOS version of the GoThere relocation planning app, converted from the Android (Kotlin/Jetpack Compose) version.
## Features
- **Multi-Country Support**: Spain, Portugal, Mexico with country-specific visa tracks
- **Decision Tree**: Personalized city recommendations based on preferences
- **Task Management**: Phase-based relocation checklists with Firestore sync
- **Calendar**: Event management with local notifications
- **Documents**: Upload/download documents via Firebase Storage
- **Resources**: Official links and downloadable guides per country
- **Cost Calculator**: Compare living costs across 16 cities
- **Visa Packs**: Document checklists for each country's visa types
- **In-App Purchases**: StoreKit 2 for country pack unlocking
- **Authentication**: Firebase Auth (email/password)
- **Dark/Light Theme**: User preference with persistence
## Requirements
- Xcode 15+
- iOS 16.0+
- Swift 5.9+
- Firebase project (GoogleService-Info.plist required)
## Setup
### 1. Generate Xcode Project
Install XcodeGen and run:
```bash
brew install xcodegen
cd GoThere-iOS
xcodegen generate
```
This reads `project.yml` to create `GoThere.xcodeproj`.
### 2. Firebase Configuration
1. Create a Firebase project at https://console.firebase.google.com
2. Add an iOS app with bundle ID `com.gothere.app`
3. Download `GoogleService-Info.plist`
4. Place it in the `GoThere/` directory
5. Enable Authentication (Email/Password)
6. Enable Firestore Database
7. Enable Firebase Storage
### 3. Build & Run
```bash
open GoThere.xcodeproj
```
Select a simulator or device and press Run.
## Architecture
- **MVVM** with ObservableObject ViewModels
- **SwiftUI** declarative UI framework
- **Firebase** for Auth, Firestore, Storage
- **StoreKit 2** for in-app purchases
- **UserNotifications** for calendar reminders
- **Combine** for reactive data flow
## Project Structure
```
GoThere/
�%%% App/ # App entry point, Info.plist, entitlements
�%%% Models/ # Data models (TaskItem, EventItem, etc.)
�%%% Data/ # Static data (destinations, phases, costs)
�%%% ViewModels/ # MVVM ViewModels
�%%% Services/ # Repositories, auth, purchases, notifications
�%%% Views/
�% �%%% Auth/ # Login/SignUp
�% �%%% Home/ # Main tab view, home dashboard
�% �%%% Tasks/ # Task management
�% �%%% Calendar/ # Calendar events
�% �%%% Documents/ # Document upload/storage
�% �%%% Resources/ # Web resources & downloads
�% �%%% DecisionTree/ # City recommendation quiz
�% �%%% CostCalculator/ # Living cost comparison
�% �%%% Destinations/ # Country/visa track selection
�% �%%% VisaPack/ # Visa document checklists
�% �%%% Paywall/ # In-app purchase UI
�% �%%% Components/ # Reusable UI components
�%%% Theme/ # Colors, styles
�%%% Assets.xcassets/ # App icon, colors
```
## Android Parity
This iOS app mirrors the Android version's feature set:
| Feature | Android | iOS |
|---------|---------|-----|
| Authentication | Firebase Auth | Firebase Auth |
| Task Management | Firestore | Firestore |
| Calendar | Firestore + AlarmManager | Firestore + UserNotifications |
| Documents | Firebase Storage | Firebase Storage |
| Resources | Firebase Storage | Firebase Storage |
| Decision Tree | Custom engine | Custom engine |
| Cost Calculator | Static data | Static data |
| Visa Packs | Static data | Static data |
| In-App Purchases | Google Play Billing | StoreKit 2 |
| Notifications | AlarmManager | UserNotifications |
| Theme | DataStore | AppStorage |
About
ReloApp
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.