Skip to content

kiliankoe/MensaDresden

Repository files navigation

Mensa Dresden

Looking to see what's for lunch today?

app store

If you're interested in how this app communicates with the Studentenwerk Dresden server to fetch meal information, your recent Emeal transactions or how it reads your Emeal balance via NFC, check out EmealKit.

Menu Emeal Meal Canteens

Development setup (Tuist)

This repository uses Tuist manifests (Project.swift) instead of manually editing the Xcode project file.

Generate the project

tuist generate

This opens MensaDresden.xcworkspace in Xcode.

Fixture mode (stable local data)

The app supports a fixture data mode with static canteens, opening hours and meals.

  • In debug builds, enable it in Settings > Developer > Use fixture data.
  • For automated runs, force it via environment:
MENSA_DATA_MODE=fixtures

This is what the screenshot UI tests use, so screenshots are independent of live API timing (weekends, holidays, current serving windows).

Typical workflow

  1. Make project changes in Project.swift (targets, dependencies, settings, schemes).
  2. Regenerate with tuist generate.
  3. Build/test in Xcode or with xcodebuild.

Useful commands

tuist version
tuist dump
tuist generate --no-open

Building & releasing

Builds and releases run locally via fastlane (this project no longer uses Xcode Cloud). Authentication uses an App Store Connect API key — set these (e.g. in a gitignored .envrc.local):

export ASC_KEY_ID="..."
export ASC_ISSUER_ID="..."
export ASC_KEY_FILEPATH="/absolute/path/to/AuthKey_XXXXXXXX.p8"

Build and upload a TestFlight build:

fastlane ios beta

Build and upload to App Store Connect (without submitting for review):

fastlane ios release

Both lanes run tuist generate first, derive the next build number from the latest TestFlight build, and produce a signed App Store .ipa. Signing uses the project's automatic signing, so the distribution certificate/profile must be available in the local keychain.

App Store screenshots

Fastlane is configured for automated localized screenshots using the Screenshots UI test target.

fastlane ios screenshots

This generates fresh screenshots in appstore_screenshots. The devices and languages (and other snapshot options) are configured in fastlane/Snapfile.

To upload screenshots to App Store Connect (without uploading a build or metadata):

fastlane ios upload_screenshots

Or generate and upload in one go:

fastlane ios screenshots_and_upload

App Store metadata

Fastlane is also configured for localized App Store metadata (name, subtitle, description, keywords, release notes, URLs, review info).

Pull the current metadata from App Store Connect into fastlane/metadata:

fastlane ios download_metadata

Upload metadata only (without build and without screenshots):

fastlane ios upload_metadata

Upload metadata and already-generated screenshots together:

fastlane ios upload_metadata_and_screenshots

Or generate fresh screenshots first, then upload both metadata and screenshots:

fastlane ios screenshots_and_upload_all_assets

Releases

Sponsor this project

Used by

Contributors

Languages