Thierry Seiler Simon Herensperger
https://app-thierry-und-simon.vercel.app/
Rendering Stratefien
Im Vergleich zur Präsentation wurde eine grössere Änderung vorgenommen. Die Single Mumbles werden nicht mehr statisch generiert sondern auch serverseitig gerendert. Dies weil das fetschen der Likes und Userdaten auf dem Client nicht sinnvoll war und insbesondere die Likes aufgrund der fehlenden Userangaben nicht korrekt ausgegeben werden konnten.
Ansonsten sind die Renderingstrategien gleich geblieben:
- Index: SSR
- Index für "Nicht-User" ohne Login: SSG
- Single Mumble: SSR
- Profil: SSR
- Login, Register: CSR
Service
Bei den Services gibt es ein File fetch.ts
. Dieses File wird aktuell nicht verwendet. Die Services sollten in einem nächsten Schritt jedoch generischer implementiert werden. Damit das noch gemacht werden kann, ist das File noch immer Teil des Projektes.
Stack
Neben Next.js, Tailwind und TypeScript wurde SWR, Next Auth, next-pwa und nprogress eingesetzt. Ebenfalls ist die Component Libraray aus Block 1 Bestandteil des Projektes.
Die App ist als PWA verfügbar und kann entsprechen installiert werden.
Die App basiert auf Next.js und ist mit create-next-app
umgesetzt.
Um das Projekt lokal zu installieren geht man wie folgt vor:
npm install
npm run dev
Öffne http://localhost:3000 mit einem Browser um die App zu sehen.
Die Dokumentation der Qwaker-REST Api ist hier zu finden.
Um eine Instanz der App lokal mittels Docker zu erstellen, sind folgende Schritte nötig:
- Docker Image erstellen
docker build . --build-arg NPM_TOKEN=[TOKEN] -t mumble-image
- Docker Image starten
docker run -p 3000:3000 --env-file .env mumble-image
Um das Docker Image mittels Google CLoud Run zu deployen muss das Image erstellt und in die Artifact Registry gepushed werden:
- Docker Image erstellen
docker build -t europe-west6-docker.pkg.dev/casfee-adv-mumble/mumble-thierry-simon/mumble-image . --build-arg NPM_TOKEN={NPM_TOKEN}
- Docker Image pushen
docker push [build name]
Es gibt zwei Arten von Tests: E2E Tests mit Playwright und Unit Tests mit Jest und React Testing Library. Um die Test auszuführen sind folgende Befehle nötig:
- E2E:
npm run test:e2e
- Unit:
npm run test
Es gibt verschiedene GitHub Actions, welche beim Push in den Master Branch ausgeöst werden:
- Quality: Check Linting und PRetier
- E2E Tests und Unit.Test
- Docker Image erstellen und mittels Terraform auf Google Cloud Run deployen
Die App ist unter folgenden beiden URLs verfügbar:
Vercel: app-thierry-und-simon.vercel.app GCR: https://mumble-image-mu6q4anwpa-oa.a.run.app
Terraform Deploy hat ein Cloud Run Permission Issue und kann daher nicht direkt deployen => daher zwei Deploy-Pipelines erstellt, eine mit Terraform, welche nicht Teil des Main-Workflows ist und eine ohne. terraform apply
ausserhalb der GitHub Action geht.
Ich vermute, dass die Berechtigungen des cloud-runner
Users manuell geändert wurden und nun nicht mehr mit den übrigen Berechtigungen zusammenpassen. Eine Lösung wäre ev, ein neues Projekt aufzusetzen und neue User und Berechtiungen zu vergeben.