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.
Die Daten werden in Supabase gespeichert. Zur Weiterentwicklung und Test der Webanwendung sollte diese mit einer lokalen Supabase-Instanz auf dem eigenen Rechner verknüpft werden. Die Einrichtung einer lokalen Supabase-Instanz wird in der Supabase-Dokumentation beschrieben.
Hier werden die für dieses Projekt benötigten Schritte aufgelistet:
- Supabase CLI installieren, siehe Supabase-Dokumentation
- Docker installieren (Docker Desktop)
- Verzeichnis für die lokale Supabase-Instanz erstellen, z.B.
projects/rallye-db
- Im Terminal in das eben erstellte Verzeichnis wechseln (
cd rallye-db
) - Dort diesen Befehl ausführen:
supabase init
- Supabase starten mit
supabase start
(Docker-Images werden heruntergeladen) - Aktuelles Datenbankschema und Datenbankinhalt vom Projektverantwortlichen anfragen
- Das Datenbankschema als SQL-Datei speichern unter
rallye-db/supabase/migrations/
- Den Datenbankinhalt als Datei
seed.sql
speichern unterrallye-db/supabase/
- Datenbank aus der Schema-SQL-Datei erstellen mit
supabase db reset
Wenn alles geklappt hat, dann kann die lokale Supabase-Instanz mit dem Webinterface im Browser verwaltet werden: http://127.0.0.1:54323
Die Supabase-Instanz kann folgendermaßen heruntergefahren werden: supabase stop
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 (mit
git clone [email protected]:DHBWLoerrach/CampusRallyeApp.git
oder einem Git-Client). -
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
.env
im Projektverzeichnis zu erstellen. In.env
müssen zwei Einträge vorgenommen werden:
EXPO_PUBLIC_SUPABASE_URL=http://SERVER:54321
EXPO_PUBLIC_SUPABASE_ANON_KEY=SUPABASE_ANON_KEY
Der Eintrag für EXPO_PUBLIC_SUPABASE_URL
muss die IP-Adresse
des Servers enthalten. Wird die App auf einem iPhone-Simulator oder
Android-Emulator auf dem Rechner ausgeführt, der die Supabase-Instanz
bereitstellt, dann kann für SERVER
die IP-Adresse von „localhost“
eingesetzt werden:
EXPO_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
Wird die App auf einem Smartphone ausgeführt, dann ist für
SERVER
die IP-Adresse des Rechners einzutragen, auf dem
die Supabase-Instanz läuft.
Für EXPO_PUBLIC_SUPABASE_ANON_KEY
muss der Anon Key der
Supbase-Instanz eingefügt werden. Dieser kann im Terminal
abgefragt werden (dazu ins Verzeichnis der lokalen
Supabase-Instanz wechseln):
supabase status
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.
Dies setzt die Installation und Konfiguration des Android-SDKs 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“)