Goal of this project is to create a mobile application that informs interested students about fuks e.V.
Features:
- Display upcoming events
- Display projects
- Show Karlsruher Transfer magazines
- Grant fuks e.V. members access to the office
Download the app on Google Play or App Store.
.
├── CHANGELOG.md # Changelog of the project
├── android # Android specific files
├── assets # Static assets like images, fonts, etc.
├── ios # iOS specific files
├── lib # All dart source code
│ ├── generated # Code that was generated and shouldn't be touched!
│ ├── services # Services providers, like the doorman-service, for UI components
│ ├── ui # All User Interface components and Widgets
│ │ ├── pages # All pages in the App
│ │ ├── theme # Theme data like fonts, colors, shapes, etc.
│ │ └── widgets # Widgets and dialogs that are shared across pages
│ └── utils # Helper functions that are used across components
├── macos # MacOS specific files
├── terms_and_conditions # Terms and conditions of the app
├── pubspec.yaml # Project configuration
This app uses various services to provide data to the UI components. The services are located in
the lib/services
folder. The services using gRPC to communicate with the
backend. The gRPC services are generated automatically and can be found in the lib/generated
.
When the backend proto definitions changes, the gRPC services must be regenerated. To regenerate
the gRPC services, please take a look at the specific repository of the backend service.
The backend implementation of these services can be found here:
- App Services: The app services fetch data from Google Workspace and provide it to the app.
- Doorman: The doorman service connects the door system in the fuks office to open the door.
To deploy a new release you need access to App Store Connect and Google Play Console. Patrick Zierahn ([email protected]) can grant you access to both.
Prepare a new release by following these steps:
- Update flutter version to the newest version:
flutter upgrade
- Update the changelog in
CHANGELOG.md
- Update the version and build number in
pubspec.yaml
- Update version in
lib/ui/pages/settings/settings_page.dart
- Update dependencies:
- Update flutter dependencies:
flutter pub upgrade
- Update iOS dependencies:
cd ios && pod update && cd ..
- (Optional) Update Android dependencies:
cd android && ./gradlew app:dependencies && cd ..
- (Optional) Update MacOS dependencies:
cd macos && pod update && cd ..
- Commit and push all changes:
git commit -am "Update dependencies"; git push
- Update flutter dependencies:
- Push all changes to
main
branch withgit push
- Create a new git tag (replace X.X.X with new version number):
git tag vX.X.X
git push origin vX.X.X
- Merge
main
branch intorelease
branch on GitHub:- Go to https://github.com/fuks-kit/fuks_app/tree/release
- Click on
This branch is ..., X commits behind main
- Click on
Create pull request
- Click on
Merge pull request
- Prepare android signing
- Download the
keystore.jks
andkey.properties
files from the fuks Google Drive - Copy the files to the
android
folder
- Download the
- Make sure you are on the release branch:
git checkout release
- Pull the latest changes:
git pull
- Reset the branch to the latest commit:
git reset --hard
- Clean up the build files:
flutter clean
- Build the app bundle:
flutter build appbundle
- Upload the generated app bundle to the Play Console
- Go to https://play.google.com/console/
- Select fuks app
- Go to Release > App bundle explorer
- Click on "Upload new version"
- Select the generated app bundle
- Clean up the build files:
flutter clean
- Go back to main branch after the release is done:
git checkout main
All Android releases are managed through the Google Play Console. To create a new test and production release, follow these steps:
Release to Beta Testers:
- Go to Release > Testing > Internal testing
- Click on "Edit release"
- Click on "Add from library"
- Select the newest version
- Update the release notes
- Click on "Next" and "Save and Publish"
Release to Production:
- Go to Release > Production
- Click on "Create new release"
- Click on "Add from Library"
- Select the newest version
- Update the release notes
- Click on "Next", "Save" and "Go to Overview"
- Click on "Send 1 change for review"
A new release is automatically created when the main
and release
branches are merged. XCode
Cloud will automatically create a new release and upload the app to the App Store. Beta testers will
receive an email with a link to the new version. The new version will be available in the App Store
within a few hours.
All iOS releases are managed through App Store Connect. To create a new test and production release, follow these steps:
- Check if the latest version build was successfully
- Go to Apps > fuks > Xcode Cloud
- Check if latest build was successful
- The build workflow is configured to automatically release a new build to Beta Testers
- To release the newest version to the public:
- Go to App Store > iOS Version
- Update version name
- (Optional) Update text and screenshots
- Scroll to Build section and replace old version with new version
- Save and submit for review
After theses steps are completed, the new version will be available in the App Store within a few hours.
The app's terms and conditions are located in the terms_and_conditions
folder. These terms and
conditions must be acknowledged and accepted by users prior to using the app. Similarly, users are
also required to accept the app's privacy policy. Additionally, both the terms and conditions and
the privacy policy are readily available through direct links in the App Store and Play Store.
The terms_and_conditions
folder contains a firebase web app that can publish the terms and privacy
policy to the web. Updates the can be published by running firebase deploy
in
the terms_and_conditions
folder.