MAUverce is a student mobile application for Murmansk Arctic University. The repository contains a .NET MAUI Android client, a native SwiftUI iPhone client, and a FastAPI gateway.
mauverse_mobile- .NET MAUI application for Android.MauverseIOS- native SwiftUI application for iPhone.mauverse-api- FastAPI gateway for EIOS, schedules, news, debts, contacts, and student forms..github/workflows/ci.yml- backend, container, Android, and native iPhone verification.docs- production audit, release process, and release records.
Python 3.11 is the supported runtime.
cd mauverse-api
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --requirement requirements-dev.txt
Copy-Item .env.example .env
python main.py server main --reloadPopulate every required database value in .env; never commit that file.
Run the same checks used by CI:
python -m pip check
python -m unittest discover -s tests -v
ruff check .
python -m compileall -q apps tests main.pyThe image is pinned to a multi-architecture Python base digest, runs as UID/GID
10001, and exposes a liveness healthcheck at /health.
docker build --pull --tag mauverce-api:local mauverse-api
docker run --rm --env-file mauverse-api/.env -p 8000:8000 mauverce-api:local/health confirms that the process can serve HTTP. /ready checks both database
connections and returns 503 when either is unavailable. Moodle and mail remain
runtime dependencies and require separate monitoring and incident policy.
Install .NET SDK 9.0.313, JDK 17, Android SDK, and the MAUI Android workload.
cd mauverse_mobile
dotnet workload install maui-android --skip-manifest-update
dotnet restore mau.csproj
dotnet build mau.csproj --configuration Release --framework net9.0-android --no-restoreThe API endpoint can be overridden without changing source:
dotnet build mau.csproj --configuration Release --framework net9.0-android `
-p:MauverseApiBaseUrl=https://example.edu/campus-api/The Android toolchain may generate a *-Signed.apk using the Android Debug
certificate when no production keystore is configured. That file is an
engineering build and must not be distributed as a production release.
The shipping iPhone app is native SwiftUI in MauverseIOS. It uses system
Liquid Glass on iOS 26 and native materials on iOS 18–25. Generate the Xcode
project with XcodeGen, then build or archive in Xcode 26.5+. See
native iPhone app.
brew install xcodegen
cd MauverseIOS
xcodegen generate --spec project.yml
open MAUverse.xcodeprojGitHub Actions uses minimal contents: read permission, immutable action SHAs,
pip and NuGet caches, bounded job timeouts, and concurrency cancellation. It
runs backend tests, Ruff, compileall, a non-root container health smoke test,
the Android MAUI Release build, and the native SwiftUI iPhone Release build. CI
uploads unsigned Android packages and an unsigned native iPhone IPA container;
it never imports signing certificates or provisioning profiles.
Production signing, device smoke testing, deployment, and rollback are explicit promotion gates. See CI and release engineering, the production audit, and the release checklist. Naming, comments, and review rules are defined in code style.