Volume is one of the latest applications by Cornell AppDev, an engineering project team at Cornell University focused on mobile app development. Volume aims to amplify the voice of student publications, helping them reach a broader audience. Download the current release on the App Store!
You must have at least Xcode 14.0, iOS 15.0, and Swift 5.5 to run this app.
This app uses Swift Package Manager for dependencies.
- Clone the repository.
- Create a
VolumeSecrets
folder in the root directory and drag the following four files into FINDER (NOT Xcode). You must create this folder through Finder. For AppDev members, you can find these pinned in the#volume-ios
Slack channel.GoogleService-Info.plist
Secrets.plist
apollo-codegen-config-dev.json
apollo-codegen-config-prod.json
- Install Swiftlint with
brew install swiftlint
. As of SP24, there is a bug with SPM involving incompatible OS versions with package dependencies. Because the codebase uses SPM, we don't want to introduce CocoaPods, so Swiftlint will be installed via Homebrew. - Open the Project, select Volume under Targets, then choose the Build Phases tab.
- There should be a run script labeled SwiftLint. If not, create a New Run Script Phase with the following script:
if [[ "$(uname -m)" == arm64 ]]; then
export PATH="/opt/homebrew/bin:$PATH"
fi
if which swiftlint >/dev/null; then
swiftlint --fix && swiftlint
else
echo "ERROR: SwiftLint not installed"
exit 1
fi
- The order in which the scripts are being ran matter! Make sure that the Crashlytics script is at the very bottom.
- Select the
Volume
schema to use our development server andVolume-Prod
to use our production server. - Generate the Apollo API:
- Dev:
./apollo-ios-cli generate -p "VolumeSecrets/apollo-codegen-config-dev.json" -f
- Prod:
./apollo-ios-cli generate -p "VolumeSecrets/apollo-codegen-config-prod.json" -f
- Build the project and you should be good to go.
-
If the API is not working properly, try manually generating the API with the CLI.
-
If VolumeAPI is not detected or if your new written queries/mutations are not generated by Apollo, make sure that the generated VolumeAPI folder is linked to both the main Volume and VolumeWidget targets. You can do this by simply deleting the VolumeAPI group via the project navigator on Xcode and dragging the generated VolumeAPI folder from Finder to Xcode.
- Configs: the app environment settings, like production, staging, and development configurations.
- Core: the app’s entry point and LaunchScreen.
- Models: model objects used by the API and throughout the app.
- Resources: the project assets, such as fonts.
- Services: service helpers such as a Networking API service, CoreData, SwiftData, UserDefaults, etc.
- Utils: other helper files such as constants, extensions, custom errors, etc.
- ViewModels: our app’s view models which implement properties and commands to which the view can data bind to and notify the view of any state changes.
- Views: the appearance and UI of the app.