deviceframes-3

Muscle Hustle – Back To the Start

Von am 10.03.2023

Bereits seit 2 Semestern entwickle ich meine eigene Fitness-App „Muscle Hustle“ im Zuge meiner Masterklasse „Mobile“. Dieses Semester wollte ich sie so gut wie fertig stellen und die Beta-Phase erreichen. Allerdings habe ich mir dann eingebildet doch wieder zurück an den Anfang zu gehen.

Planung

Da die App schon fortgeschritten ist bezüglich ihrer Funktionsweisen, war der Plan, dass ich etwaige Bugs fixe, ein paar kleinere Funktionen noch einbaue und die App fertig mache, um die Beta-Phase rauszubringen und die App zu testen. Allerdings wurde dieser Plan im Laufe des Semesters um den Haufen geworfen. Der neue Plan war es dann die App auf einem neuen Technologie-Stack aufzusetzen. Wieso, weshalb, warum wird im Abschnitt „Technologie- Wechsel“ erläutert.

Entwicklungsphase 1.0

In der ersten Entwicklungsphase habe ich zuerst die groben Bugs, die unbedingt gefixed werden mussten, beseitigt und die App durchgehend getestet, um alle Bugs zu finden und zu fixen. Außerdem habe ich auch kleine Funktionen ergänzt, die noch gefehlt haben, wie zum Beispiel der „Plate Calculator“.

Bei dieser Funktion geht es darum, dass bei einer Übung die eine ‚Barbell‘ (Langhantel) verwendet, ausgerechnet wird, welche und wie viele Platten pro Seite verwendet werden müssen, um das gewünschte Gewicht zu erreichen. Um dies individueller zu machen, gibt es auch die Möglichkeit anzugeben, welche und wie viele Platten der User zur Verfügung hat. Zusätzlich muss/kann auch das Gewicht der ‚Barbell‘ angegeben werden, da dies auch in der Kalkulation berücksichtigt werden muss.

Ebenfalls in der ersten Entwicklungsphase habe ich die Funktionen, welche nicht für die Beta- Phase notwendig sind und auch noch nicht fertig sind, ‚ausgeblendet‘, um mich auf die wesentlichen Funktionen zu konzentrieren und nicht an den Funktionen hängen bleibe, da ich bis zum Ende des Semesters die Beta-Phase erreichen wollte.

Außerdem habe ich viel Refactoring betrieben, da teilweise viel Spagetti-Code vorhanden war oder Funktionen ausgelagert werden konnten, oder Funktionen generell entfernt werden konnten, etc.

Technologie-Wechsel

Wie bereits im Abschnitt „Planung“ erwähnt, habe ich meinen ursprünglichen Plan im Laufe des Semesters um den Haufen geworfen und die App mit einem neuen Technologie-Stack aufgesetzt. Dieser Plan ist daraus resultiert, da ich damals Ionic nur gewählt habe, weil wir es in der Masterklasse gelernt haben und ich so noch mehr dazulernen konnte. Allerdings wusste ich damals so gut wie nichts über das Framework und konnte demnach damals nicht sagen, ob die Technologie das Richtige für mich ist. Wie sich herausgestellt hat, war sie es nicht. Im Großen und Ganzen habe ich nichts gegen Ionic, aber es ist nicht das Framework, mit dem ich gerne arbeite und für meine App, welche ich auch nach dem Master weiterentwickeln will, verwenden will. Es hat lange gebraucht bis ich ein Framework gefunden habe, wo ich wirklich sagen kann, dass es Potential hat, mein ‚Go-To‘-Framework zu werden. Nun bin ich der Meinung, dass ich es gefunden habe und wollte deswegen meine App neu mit „NextJS“ aufsetzen.

Alter Technologie-Stack: NestJS, Ionic, MySQL, JWT

Neuer Technologie-Stack: NextJS, Firebase, NextAuth

Entwicklungsphase 2.0

In der zweiten Entwicklungsphase habe ich mal damit begonnen die Next-App aufzusetzen, Firebase einzurichten und in der App integrieren. Danach habe ich begonnen das Grunddesign zu implementieren und die ersten Seiten zu erstellen. Anschließend habe ich das Login und die Registrierung umgesetzt, mit Next-Auth und begonnen die ersten Funktionen einzubauen.

Da ich vor dem Technologie-Wechsel noch vor hatte zwei neue Funktionen einzubauen, habe ich, bevor ich die vorhandenen Funktionen weitereingebaut habe, begonnen diese zu entwickeln.
Zum einen war das die Mehrsprachigkeit, zumal die App ursprünglich nur Englisch war, aber ich auch Freunde habe, welche die App auch verwenden wollen und auch die Möglichkeit

haben wollen die App auf Deutsch zu verwenden. Die Logik hierbei ist, dass zuerst die Standardsprache, welche im Browser bzw. auf dem Gerät eingestellt ist, verwendet wird und wenn der User dann eingeloggt bzw. registriert ist, kann dann zwischen den Sprachen gewechselt werden.

Zum anderen wollte ich die Möglichkeit haben den Usern E-Mails zu schicken, was aber nicht nur „Marketing“-Gründe hat, sondern auch verwendet wird, um das Passwort zurückzusetzen, Bugs zu melden und generell Feedback zu geben.
Zu guter Letzt habe ich mir Zeit genommen, um den bereits vorhanden Code zu refactoren und die Struktur zu überarbeiten und anzupassen, damit ich nicht wieder das gleiche Problem habe, wie davor.

Herausforderungen

Eine Herausforderung war es die endlosen Zeilen an Code gescheit zu refactoren. Ich bin kein Fan davon zu früh den Code zu refactoren und „over engineering“ zu betreiben. Meistens schaue ich, dass die Funktion, welche ich gerade entwickle, im Großen und Ganzen funktioniert und dann Refactoring betreibe. Allerdings passiert es mir leider oft, dass ich dann zu enthusiastisch bin und gleich die nächste Funktion entwickeln will und somit dann das Refactoring immer mehr nach hinten verschoben wird.

Zusätzlich hatte ich einen innerlichen Kampf, ob ich wirklich neu beginnen soll, da ich somit wieder viele Schritte zurück gegangen bin in meinem Fortschritt. Allerdings habe ich eingesehen, dass es auf längere Sicht viel Sinn ergibt.
Zusätzlich sind auch Probleme mit Next-Auth aufgekommen, welche ich leider bis jetzt noch nicht lösen konnte. Der normale Login mit Benutzerdaten funktioniert, aber mit der Registrierung/Login über Google macht mir ein paar Probleme. Ein paar andere kleine Next- Probleme sind auch aufgetaucht, aber die konnten durch Recherche und mit bisschen Geduld behoben werden.

Meine Learnings

In diesem Semester bestehen meine Learning nicht so viel aus neuen technologischen Fähigkeiten, sondern eher aus Erkenntnissen über die Planung und das Vorausdenken bei Projekten.

Zum einen ist ein großes Learning, dass ich mit dem Refactor früher beginne, wobei ich das aber bei der zweiten Entwicklungsphase eh schon umgesetzt habe. Zusätzlich ist mir beim Neuaufsetzen aufgefallen, dass sich an der Struktur, egal ob Datenbank oder Generell, viel während dem Projekt geändert hat und somit viele Stellen angepasst werden mussten und demnach nicht die beste Lösung bzw. die beste Struktur für die App gegeben war. Aufgrund dessen ist ein weiteres Learning, dass der Anfang des Projektes wirklich wichtig ist und man sich genügend Zeit nehmen sollte das Konzept zu entwickeln und 0gut durchzudenken. Dies betrifft auch den Technologie-Stack, damit man nicht während des Projektes einen Technologie-Wechsel vornehmen muss.

So geht es weiter

Ich werde an der App weiterarbeiten, alle Funktionen einbauen und hoffentlich bis Herbst die Beta-Phase erreichen und das Live-Testing beginnen.

The comments are closed.