AdventureTube is an iOS application designed to help users explore and create YouTube-based adventure stories. The app integrates with Google APIs to enable YouTube authentication, Google Places, and Google Maps services, providing a seamless experience for location-based storytelling. Most importantly, it communicates with AdventureTube Microservice, the backbone service that powers the entire AdventureTube application. This backend is built using Spring Microservices with Spring Cloud, ensuring scalability and reliability.
Features
- JWT Authentication System: Secure authentication using Google OAuth
- YouTube API Integration: Fetch and manage YouTube content for storytelling
- Google Maps & Places API: Search, retrieve, and display location-based content interactively
- Core Data Architecture: Efficient local data storage and synchronization with reactive UI updates
- Combine Reactive Programming: Handles asynchronous operations efficiently
- Custom Tab Bar & Navigation: Advanced SwiftUI patterns for seamless UX
- MVVM Architecture Pattern: Clean separation of concerns with testable components
Technical Documentation
Explore detailed technical documentation for each component:
Authentication & Security
- Security architecture
- Token management
- OAuth 2.0 flow
- Best practices
API Integration
- YouTube Data API v3
- Video fetching and pagination
- Channel information
- Quota management
- Maps SDK integration
- Place search and details
- Custom markers
- Location services
Architecture & Patterns
- Model-View-ViewModel pattern
- Property wrappers
- Data flow
- Best practices
- Publishers and subscribers
- Custom publishers
- Common patterns
- Memory management
Data & Storage
- Entity relationships
- Reactive data persistence
- Custom Combine publishers
- Performance optimization
User Interface
- PreferenceKey pattern
- MatchedGeometryEffect animations
- ViewModifiers
- Dynamic visibility
Setup and Installation
Prerequisites
Ensure you have the following installed:
- Xcode (latest version recommended)
- CocoaPods
- A Google Cloud account with enabled APIs (Google Sign-In, Places API, YouTube Data API)
Clone the Repository
git clone https://github.com/your-repository/adventuretube-ios
Install Dependencies
pod install
Open AdventureTube.xcworkspace in Xcode to proceed.
Google API Setup
- Google Sign-In 7.0 – Enable OAuth 2.0 authentication
- Google Places API – Enable Places API and obtain an API key
- YouTube Data API – Enable YouTube API for content retrieval
Architecture Overview
- MVVM Pattern: Ensures a clean separation of concerns
- Combine Framework: Handles data streams efficiently
- CoreData: Stores user-related adventure data locally
- GoogleMapView with CoreData: Provides a unique method for managing UI updates
- AdventureTubeAPI Service: Acts as a bridge between frontend and backend services
Usage
- Sign in with your Google account
- Search locations using the Places API
- Fetch YouTube videos and associate them with locations
- View content on an interactive map
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss the changes.
License
AdventureTube is licensed under the MIT License.


