iOS App for Linking Slope Files for Mountain-UI
This project is the source code for the companion app for Mountain UI. You can download this app in the Apple App Store to quickly upload your skiing/snowboarding data and have your stats displayed on your Mountain-UI display. Add friends and be able to compete on leader boards and see who is on top all at a glance at your iPhone or your Mountain-UI display.
This repository contains two main components:
Native iOS application built with SwiftUI that provides:
- OAuth authentication (Apple, Google, Facebook)
- Slopes file upload and processing
- Real-time leaderboards and statistics
- Party/group management
- User profile management
Key Directories:
Views/- SwiftUI view components organized by feature (Login, Account, Logbook, Leaderboard, Party)ViewModels/- Business logic and state managementModels/- Data models and entitiesApollo/- GraphQL client configuration and network layerApolloGeneratedGraphQL/- Auto-generated GraphQL types and operationsUtils/- Helper functions, extensions, and shared utilities
Serverless AWS infrastructure built with CDK and TypeScript that provides:
- GraphQL API for all client operations
- S3-based file processing pipeline
- Real-time leaderboard calculation
- User and party management
- OAuth integration
For detailed API documentation, see lynx-api/README.md.
- Xcode 15.0 or later
- iOS 17.0 SDK or later
- CocoaPods or Swift Package Manager
cd Lynx-SwiftUI
xcodebuild -project Lynx-SwiftUI.xcodeproj -scheme Lynx-SwiftUI -sdk iphonesimulator buildThis project uses swift-format for consistent code style. To format all Swift files:
# Format all Swift files in the project
find Lynx-SwiftUI -name "*.swift" -exec xcrun swift-format -i {} \;Note: swift-format is included with Xcode and can be accessed via xcrun swift-format.
See lynx-api/README.md for detailed setup and deployment instructions.
The app uses a GraphQL API for all backend communication. The schema includes:
- User authentication and profile management
- Slopes file upload and processing
- Leaderboard queries and statistics
- Party management and invites
The schema can be found at Lynx-SwiftUI/Apollo/schema.graphql and operations are defined in Lynx-SwiftUI/GraphQLOperations/.
If you would like to contribute to this app, open up an issue and I will get back to you as soon as I can.
- Fork the repository
- Create a feature branch
- Make your changes
- Format your code (see Code Formatting section above)
- Build and test locally
- Submit a pull request
See LICENSE file for details.