Your Companion for Study and Campus Life at LMU Munich.
Developed by students for students, the LMU Students app provides a platform for the LMU community to easily access information about their study as well as LMU services, making university life more convenient and enjoyable.
Supported Platforms: Android, iOS
The app is developed and managed by LMU Developers, an official student organization at Ludwig Maximilian University of Munich. If you have any inquiries, visit our website or contact us via email.
- Mensa: Set favourite canteens, find current dishes, and filter for food preferences
- Roomfinder: Locate buildings and rooms effortlessly
- University Cinema: Browse upcoming movies and add them to your watchlist
- University Sport: Explore available courses
- Timeline: Stay up to date on events and deadlines
- Quicklinks: Pin your most-used university services for instant access
- Student Benefits: Find discounts and offers
- Wishlist: Vote on upcoming features, suggest ideas, and become a part of the development
- Feedback: Give in-app feedback that gets directly to the developers
Before you can start with Flutter, ensure you have the following installed:
- Flutter SDK 3.32.0: Download and install Flutter from the official Flutter website. Download MacOS ARM, Download Windows x64
- Dart SDK: This comes bundled with the Flutter SDK.
- Android Studio or Visual Studio Code: These are the recommended IDEs for Flutter development.
- Android SDK: Necessary for building and running Android apps.
- Xcode: Required for building and running iOS apps (macOS only).
Check if required tools are installed:
flutter doctor
Check running emulators, connected devices, and web browsers for development and testing:
flutter devices
Follow these steps to set up your development environment:
-
Set Up Your Editor:
- Visual Studio Code: Install the Flutter and Dart plugins from the extensions marketplace.
- Android Studio: Install the Flutter and Dart plugins from the plugins section.
-
Clone the Repository:
git clone https://github.com/lmu-devs/lmu_app_client.git cd lmu_app_client
-
Install Dependencies: Run the following command to fetch the dependencies listed in your
pubspec.yaml
file.flutter pub get
-
Generate Localizations: To generate German and English translations from the
l10n
folder, run the following command.make localizations
-
Setup .env File: Create a
.env
file with the following command and get the Api-Keys from our Notion Space.cp .env-example .env
-
Setup Firebase Configurations: The app uses Firebase for features like Analytics and Notifications. Therefore you require some config files from our Notion Space.
Required Files:
firebase.json
firebase_options.dart
google-services.json
(for Android)GoogleService-Info.plist
(for iOS)
Setup Steps:
- Place the files in their respective directories:
firebase.json
->/
firebase_options.dart
->lib/
google-services.json
->android/app/
GoogleService-Info.plist
->ios/Runner/
- Run
flutter pub get
to fetch all dependencies.
You should now be able to run the app with
flutter run
. Your local configuration files are already listed in.gitignore
and will not be committed. -
Using Flutter Version Management - FVM (Optional): This project uses FVM (Flutter Version Management) to ensure a consistent Flutter SDK version across all team members and environments. FVM allows us to configure and isolate the Flutter SDK version per project, which is especially useful when working on multiple projects (on your computer) that may require different Flutter or Dart versions. If you do not have multible Flutter projects on your Computer or all are using the same Flutter SDk Version all the time you might not need FVM.
Why use FVM?
- Guarantees everyone uses the same SDK version defined in .fvmrc.
- Avoids conflicts switching between projects with different Flutter versions.
- Keeps your global system clean — no need to constantly upgrade/downgrade your system-wide Flutter installation.
Do I need it?
- No, but we strongly recommend using it, to reduce problems with package compatibility and other bugs.
To get started: For different IDEs and Systems if you have a problem look here: (Official Medium Blog article)[https://medium.com/@ahmedawwan/flutter-version-management-a-guide-to-using-fvm-dbe1d269f565]
# Install FVM (if not yet installed) dart pub global activate fvm # Install the Flutter version defined in this project fvm install # Use the Flutter SDK for this project fvm flutter pub get # EXAMPLE: So everytime you want to execute anything regarding Flutter/Dart add fvm in fron of the command like this fvm flutter run fvm dart pub get
To make it default, you can alias
fvm flutter
asflutter
in your shell (globaly), so you don’t have to typefvm
every time. Another option - recommended only for unix based systems - would be direnv.
To run the app on an emulator or physical device:
-
Start an Emulator (if you don't have a physical device connected):
- Android: Start the Android emulator from Android Studio or use a command line tool.
- iOS: Start the iOS simulator from Xcode (macOS only).
-
Check Build Flavors (we use separate environments for development and production):
- Visual Studio Code: Build Flavors are already set in
.vsocde/launch.json
. - Android Studio: Add two new configurations with
--flavor dev -t lib/main.dart
and--flavor prod -t lib/main.dart
as additional run arguments.
- Visual Studio Code: Build Flavors are already set in
-
Run the App:
flutter run
Here's a brief overview of the main directories in the project, using the Mensa module as an example. We develop the app using multiple independent modules to ensure better scalability, separation of concerns, and easier maintainability as the project grows.
.
├── android/ # Configurations for the Android platform
├── core/ # App-wide assets like colors, fonts, and shared components
│
├── lib/
│ ├── assets/ # Pictures and files accessible in components
│ └── src/
│ ├── api/ # Basic API operations with the backend
│ ├── components/ # Common reusable widgets
│ ├── constants/ # Sizing constants and dev strings
│ ├── core_services/ # Permission handling and core platform services
│ ├── extensions/ # Extensions for common high-level widgets
│ ├── localizations/ # Generated translations
│ ├── logs/ # In-app message logging
│ ├── pages/ # High-level pages like app update screens
│ ├── themes/ # Color themes and design tokens
│ └── utils/ # Utility methods and helper classes
│
├── feature_modules/ # Folder of modules (e.g., mensa, cinema, sport, ...)
│ └── mensa/
│ └── src/
│ ├── bloc/ # State management (e.g., BLoC/Cubit)
│ ├── extensions/ # Feature-specific extensions
│ ├── pages/ # Pages visible to the user
│ ├── repository/ # API operations and model classes
│ ├── routes/ # Routing definitions for this module
│ ├── services/ # User interactions, search, and shared files
│ └── widgets/ # UI components for this module
│
├── ios/ # Configurations for the iOS platform
├── l10n/ # Localizations for supported languages
├── shared-api/ # Shared files, widgets, and logic across modules
├── Makefile # Pre-built shell commands for automation
├── pubspec.yaml # Project dependencies and package config
└── test/ # Test files
This project is licensed under the GPLv3 License. See the LICENSE file for more information.