Mirage is an iOS application that enables users to create and collect geolocated AR Miras. It integrates ARKit, Mapbox, and Apollo GraphQL to provide an interactive and social experience for users to share digital content in augmented reality.
- AR Content Creation: Users can create AR content using images and videos.
- Location-based Interaction: Users can collect Miras placed in the real world.
- Social Integration: Friends can connect and view shared AR content.
- User Profiles: Users can customize their profiles and manage friend connections.
- GraphQL Backend: Utilizes Apollo GraphQL for data fetching and mutations.
- Xcode 14+
- Swift 5+
- CocoaPods or Swift Package Manager (SPM)
- An iOS device with ARKit support (iPhone 8+ recommended)
- Clone the repository:
git clone https://github.com/mirage-ar/mirage.git cd mirage - Install dependencies:
or if using Swift Package Manager:
pod install
open Mirage.xcodeproj
- Open
Mirage.xcworkspacein Xcode. - Build and run the project on a physical device (ARKit does not work on the simulator).
Mirage
├── Source
│ ├── Application
│ ├── Common (Constants, Extensions, Managers, Models, UserDefaults)
│ ├── Modules (ARModule, Friendship, Home, MapModule, OnBoarding, UserProfile)
│ ├── Networking (Apollo GraphQL, API Interceptors, Download Manager)
│ ├── Resources (Assets, Fonts, Localizations)
├── MirageApp.swift
├── apollo-codegen-config.json
├── swiftgen.yml
- SwiftUI & UIKit: Provides UI for the application.
- ARKit & RealityKit: Enables augmented reality features.
- Apollo GraphQL: Handles networking and API interactions.
- Mapbox: Provides mapping and geolocation services.
- Combine: Manages asynchronous events.
- Reachability: Detects network availability.
- KeychainSwift: Secure storage for user authentication.
- Users sign up with their phone number and receive a verification code.
- Authentication is managed via Apollo GraphQL.
- Users can place AR content at specific GPS locations.
- They can view, modify, and interact with placed content.
- Displays collected Miras on a Mapbox-powered map.
- Users can navigate and explore their surroundings for AR content.
- Users can send and receive friend requests.
- Profiles include collected Miras and friends list.
- Use SwiftLint for enforcing Swift coding standards.
- Follow MVVM pattern for structuring UI and business logic.
- Keep network calls within Apollo repositories.
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit changes:
git commit -m "Add new feature" - Push to the branch:
git push origin feature-name
- Open a Pull Request.
For support or contributions, contact support@mirage.ar or open an issue on GitHub.