Smartphone App für die Campus Rallye im ersten Semester an der DHBW Lörrach.
Basierend auf den Ergebnissen von Studienarbeiten an der DHBW Lörrach durchgeführt am Studienzentrum IT-Management & Informatik.
Mehrere Schritte zu beachten:
Die Daten werden in Supabase gespeichert. Zur Weiterentwicklung und Test der Webanwendung muss eine eigene Supabase-Instanz in der Cloud erstellt werden.
Supabase-Owner können einen SQL-Dump des Schemas (Tabellen, Funktionen, usw.) ohne Daten wie folgt mit dem Supabase-CLI erstellen:
supabase db dump --db-url "postgresql://postgres:<password>@<serverurl>/postgres" -f schema.sql --schema public
- Bei https://supabase.com kostenlos anmelden
- In Supabase ein neues Projekt erstellen (z.B.
CampusRallye) - Im Supabase-Projekt zum SQL Editor wechseln (via linker Seitenleiste)
- Das SQL-Schema aus dem zugehörigen Backend-Projekt kopieren (siehe Datei
supabase/schema.sqlin https://github.com/DHBWLoerrach/campus-rallye-admin) - Das eben kopierte SQL-Schema im SQL-Editor einfügen und ausführen (grüner
Run-Button). - Daten erstellen (siehe unten)
Rallyes und Fragen können direkt im Table Editor des Supabase-Projekts erstellt werden.
In der Tabelle rallye zwei neue Rallyes bzw. zwei neue Zeilen eintragen (Insert row):
- Name: Rallye, Studiengang: Informatik, Status
runningundend_timein der Zukunft,tour_mode=FALSE - Name: Erkundung, Studiengang: Allgemein, Status
runningundend_timein der Zukunft,tour_mode=TRUE
In der Tabelle questions ein paar Fragen mit Punkten erstellen (z.B. Typ knowledge), dazu passende Antwort(en) in
der Tabelle answers mit question_id der Frage eintragen und zusätzlich in der Tabelle join_rallye_questions den Rallyes zuordnen.
Möglich ist auch die lokale Einrichtung und Verwendung der Webandwendung zur Verwaltung von Campus Rallyes. Im GitHub-Projekt (https://github.com/DHBWLoerrach/campus-rallye-admin) ist eine Anleitung zur Einrichtung beschrieben.
Voraussetzungen für die Weiterentwicklung dieses Projekts sind folgende:
- Node.js ist auf dem Entwicklungsgerät installiert.
- Die lokale Supabase-Instanz wurde eingerichtet (siehe oben)
-
Dieses Github-Repository clonen
-
In einem Terminal ins Verzeichnis des geclonten Repositories wechseln.
-
Anschließend müssen mit npm die Abhängigkeiten bzw. npm-Pakete in NodeJS installiert werden:
npm install -
Zum Schluss muss noch die Konfiguration zu Supabase angepasst werden. Dazu ist zunächst die Datei
.envim Projektverzeichnis zu erstellen. In.envmüssen zwei Einträge vorgenommen werden:
EXPO_PUBLIC_SUPABASE_URL=http://SERVER:54321
EXPO_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_ANON_KEY
Im Webinterface von Supabase oben auf Connect klicken und die Daten im Reiter Mobile Frameworks verwenden.
Der benötigte API-Key ist unter Project Settings (Zahnrad in der linken Seitenleiste) und dort unter API Keys zu finden.
Achtung: In .env muss der API-Key wie folgt eingetragen werden:
EXPO_PUBLIC_SUPABASE_ANON_KEY=API_KEY_HERE
Nun kann die App getestet und weiterentwickelt werden. Für das aktive Testen muss nun mit npx expo -g der Server gestartet werden. Die App kann in Expo Go App getestet werden (Scan des QR-Codes). Informationen hierzu werden direkt auf der Konsole angezeigt.
Die Anmeldedaten für die Teilnahme an einer Rallye in der App können aus den entsprechenden Tabellen in der Supabase-Instanz in Erfahrung gebracht werden.
npx expo start -g started den Metro-Bundler, um die App auf einem Smartphone oder Emulator/Simulator in der Expo Go App zu testen.
Dazu muss die App Expo Go (https://expo.dev/go) auf dem Handy installiert sein und der QR-Code gescannt werden (Android: in Expo Go, iOS: via Kamera-App).
Hinweis: Im DHBW-Wlan muss der Metro-Bundler mit „Tunnel“-Option gestartet werden: npx expo start -g --tunnel
Unit- und Component-Tests laufen mit Jest:
npm test
Für Linting:
npm run lint
Dies setzt die Installation und Konfiguration des Android-SDKs (macOS/Windows/Linux) und XCode (nur auf macOS) voraus.
npx expo prebuild erstellt einen Prebuild, wodurch im Projekt die Dateiordner der nativen Apps erstellt werden (android und ios). Der Zusatz --clean entfernt die beiden Dateiordner android und ios und erstellt sie neu (daher sind diese nicht im git-Repository).
npx expo run:ios --device und npx expo run:android --device erstellt lokale Dev-Builds der nativen App und fragt nach dem gewünschten Smartphone/Simulator/Emulator für die Installation der App.
npx expo start -d startet den Metro-Bundler für einen Dev-Build.
Wenn ein Android-Testgerät über USB-Kabel verbunden wird, dann kann der Metro-Bundler mit --localhost gestartet werden, um die Verbindung zur App „kabelgebunden“ herzustellen: npx expo start -d --localhost
eas build erstellt die nativen Apps in der Cloud mit Expo EAS.
eas submit liefert die nativen Apps zunächst als Betaversion in den App/Play Store aus. Die Android-Version wird automatisch als Beta (offener Test) veröffentlicht. Für das iPhone muss der neue erstellte Build der App im App Store für die Beta Tester in Testflight zur Veröffentlichung beantragt werden.
Nach erfolgter Veröffentlichung einer neuen Produktionsversion sollte der Eintrag für version in app.json erhöht werden (als eigener Commit „Bump version to x.y.z“)