TripUp iOS App
TripUp is an open source, photo storage and sharing app made for privacy conscious users.
Screenshots
Features
- Auto backs up all your photos to the cloud
- Background uploads
- Photos, data and metadata are all end-to-end encrypted with PGP
- Supports user registration with a phone number, e-mail address or Sign in with Apple
- Shared albums with fine-grained privacy controls for individual photos
- Supports iOS Dark Mode
- Native Swift app
- Open source client + server
Questions and Support
Please use the following channels for any questions or support:
Build Instructions
Dependencies
- Firebase, for authentication and dynamic links.
- AWS, for data storage.
- OneSignal, for notifications.
- RevenueCat, for managing in-app purchases.
- TripUp server, for hosting and co-ordinating user state.
Note: where possible, analytics are disabled for the above services.
Steps
- Replace the
GoogleService-Info.plist
file with the one provided to you by Firebase. - Update the
awsconfiguration.json
file with your AWS Cognito PoolID and Region, as per your AWS setup. - Project build settings ->
User-Defined
heading:- change
API_BASE_URL
to the URL of the TripUp server instance that you wish to use. - change
AWS_ASSETS_BUCKET
to the name of the bucket that you wish to use on AWS.
- change
- Modify
Info.plist
accordingly, specifically the following values:- Under URL types -> URL Schemes:
com.googleusercontent.apps...
should be set to theREVERSED_CLIENT_ID
value found in yourGoogleService-Info.plist
file.- The
firdynamiclinks
URL Scheme should be set your bundle identifier.
- Under
AppConfig
:AWS_ASSETS_BUCKET_REGION
, which should be the same value as the one set inawsconfiguration.json
.DOMAIN
, should be a fully qualified hostname.FEDERATION_PROVIDER
, should be the URL of your federation provider, which in this case issecuretoken.google.com/YOUR_FIREBASE_PROJECT_ID
.FIREBASE_DYNAMICLINKS_DOMAIN
, should be set to your Firebase Dynamic Links Domain.ONESIGNAL_APP_ID
, should be set to your OneSignal App ID.REVENUECAT_APIKEY
, should be set to your RevenueCat API key.
- Under URL types -> URL Schemes:
- Adjust the
Associated Domains
under the TripUp Target, Signing & Capabilities tab to the following values:applinks:YOUR_FIREBASE_PROJECT_ID.firebaseapp.com
applinks:YOUR_FIREBASE_DYNAMIC_LINKS_DOMAIN
- Build to whichever target you want and Sign with your Apple Developer account.
Contributing
There are many ways to contribute to TripUp!
Bug reports
We use the GitHub issue tracker for bug reports. Please search existing issues and create a new one if your bug report has not been raised, providing as much detail as possible.
Code
Swift developers wanted! We prefer native development whenever possible and welcome developers (new and experienced) to contribute. We use GitHub projects for coordinating our work. If you require help with a code change, feel free to open a pull request.
For this repository, we require contributors to sign a copyright license agreement (CLA). The signing process will be presented when you submit a pull request. A CLA is required because the Apple App Store Terms of Service (ToS) are incompatible with the license of this project, the AGPLv3. To include your contributions in our App Store release, we require an exclusive copyright license to any contributions you make, which grants us the ability to dual license the code; under the AGPLv3 (this repository) and under a license that complies with the App Store ToS. Please note that we use a CLA written and approved by the Free Software Foundation which ensures that we always release your contributions under the AGPLv3 and can never exclusively re-license your contributions under a proprietary license. Refer to our CLA for the full license agreement (also visible when submitting a pull request).
Feature suggestions
Please use GitHub Discussions to suggest new features.
Translations
We welcome translations for as many languages as possible! Contact us if you'd like to help but are unsure on how to use Xcode or GitHub pull requests.
License
This project is licensed under the AGPLv3. Please see the LICENSE file for the full license terms.
Please note that whilst the code is licensed under the AGPLv3, all assets, logos and branding, including the name, are subject to relevant trademark laws and explicit permission is required before using these for any commercial purposes.