Eketour

Web applikáció túrák szervezéséhez

és Androidos pontbíró alkalmazás

Mentorok

  • Kintzel Levente
  • Makkai Attila
  • Vaszi Attila

Diákok

  • Benedec Botond
  • Godra Ádám

A csapat

Tartalom

  • A projekt áttekintése
  • Előzmények
  • Feladatok
  • Megvalósítások
  • Nehézségek/Problémák
  • Amit tanultunk
  • Továbbfejlesztési lehetőségek

EKE

  • EKE - Erdélyi Kárpát-Egyesület
  • Több mint 100 éve
  • Gyalog- és biciklitúrákat szerveznek
  • Természetjárás, ökoturizmus, környezettudatosság

EKETours

  • Az EKE-Tours célja:

    • egységes regisztrációs felület, profilok karbantartása, nyilvántartás, rendszerezés, kimutatás

    • digitális ellenőrzőpontok

    • mobilalkalmazás

Motiváció

  • Túra regisztrációs folyamat egyszerűsítése (egy felhasználó regisztrálhat több profilt)
  • Ellenörzőpontokon áthaladó résztvevőket egyszerűbben naplózni a rendszerben (QR kód)
  • Ellenörzőpontokon áthaladó résztvevők listázása weboldalon (szervezők számára)
  • Egyéb kimutatások, pl. résztvevők póló méretei, étkezési preferenciái stb.

EKETour

Előzmények

A projekt 2017-ben indult, dolgoztak már rajta diákok a mentorprogram keretén belül

  • Működő szerver és frontend
    • Teljes REST API az azonosított endpointokra
    • Login rendszer
    • Felhasználó profilok 
    • Túrákra való regisztrálás
    • Admin oldalon túrák hozzáadása, szerkesztése, különböző kimutatások
  • CI/CD szempontjából hiányos
    • Csak lint és tesztelés fázisok, kitelepítés nem volt
  • Android alkalmazás
    • NFC olvasás és írás
    • Hiányzó funkcionalitások
    • A UI továbbfejlesztést igényelt

Célkitűzéseink

Mitől lehet más az EKETours2?

  • Frissíteni a projektet
  • CI/CD modernizálása (automatikus lint, teszt, build, deploy)
  • Pontbíró alkalmazás izolálása
  • Hiányos funkciók implementálása
  • QR kód használatának implementálása
  • Android UI újratervezés
  • Pontbíró szerver használata a weboldalon
  • Pontbíró szerver használata az Android applikációban
  • Agile/Scrum
  • 4 sprint (3x 2 hét, 1x 1hét)
  • Napi meetingek
  • Sprint planning
  • Demo és retrospective

Fejlesztési folyamat

Eszközök és technológiák

  • Verzió követés: Git + Gitlab
  • Programozási nyelvek:
    • Java (55%)
    • TypeScript(28%)
  • Keretrendszerek:
    • Spring
    • Angular
    • ExpressJS
  • Build és függőségkezelés:
    • Gradle
    • npm
  • CI/CD
    • Gitlab CI
    • Docker
  • Adatbázis: MySQL, SQLite

Eszközök és technológiák

  • Lintelés:
    • Checkstyle
    • SpotBugs
    • SonarLint
    • ES-lint
  • Unit tesztek:
    • Junit
    • Karma
  • Coverage tesztek:
    • JaCoCo
    • Istanbul coverage reporter
  • Egyéb: Husky

Megvalósítások

  • Frissített függőségek
  • Fejlettebb CI/CD
  • QR kód olvasás funkció
  • Android alkalmazás új design
  • Android alkalmazás külön backend
  • Szétválasztott és "független" alkalmazások
  • Újdonságok az admin felületen
  • QR kód generálás a web oldalon
  • Bugfixek

CI/CD

Teendők:

  • Modulok dockerizációja és összehangolása
  • Gitlab-CI bekonfigurálása

 

Végeredmény:

  • Automatikus lintelés
  • Automatikus tesztelés
  • Automatikus buildelés
  • Automatikus kitelepítés szerverre (csak master és develop ágak esetén)

Teendők:

  • Angular keretrendszer frissítése
  • Függőségek frissítése
  • Dockerizált környezet
  • Gitlab-CI bekonfigurálása
  • QR code generálás
  • Pontbíró naplózásának vizuális megjelenítése

 

Végeredmény:

  • Frissített kódbázis 
  • Automatizált integrálás, Dockerizált image fileok
  • Új funkciók 

Backend

Teendők:

  • Függőségek és Gradle frissítése
  • Frissítés utáni elavult kód javítása
  • A FindBugs plugin helyettesítése ugyanis már nem volt támogatott
  • Docker kép létrehozása mind a szervernek mind az adatbázisnak
  • CI/CD konfigurálása
  • Bugfixek

Végeredmény:

  • Naprakész technologiák
  • Automatizált lint, teszt, build és kitelepítés

Backend

Backend

Androidos alkalmazás

Androidos alkalmazás

  • UI újratervezés
    • Upgrade androidx könyvtárra (újabb Android verziók által támogatott, Material Design-t használ)
    • 11 Activity helyett 2: a főképernyő (QR szkennelés/NFC olvasás) és a beállítások menü
  • Új feature: QR szkennelés, az ellenőrzőpontoknál levő szervezők egyszerűen beszkennelik a résztvevők QR kódjait, ami tartalmaz egy egyedi azonosítót, így eltárolható a rendszerben (először a telefon memóriában, internet elérés esetében az új pontbíró backenden)
    • használt könyvtár: com.google.zxing ("zebra crossing")

Nehézségek/Problémák

  • Technológiák elsajátítása: 2-3 nap kutatás, fejlesztés előtt
  • Az 'örökölt' kód újragondolása (ahol szükséges volt)
  • CORS (Cross Origin Resource Sharing) probléma
  • Lassú internet kapcsolat :)

További fejlesztési lehetőségek

  • Android app:
    • design-beli ráncfelvarrás, kódbázis letisztítása
    • push értesítések küldése, automatikus szinkronizáció
    • kimutatások (pl. hány regisztrált túrázó maradt még)
  • Deployment: a Pontbíró backend alkalmazás kitelepítése mint serverless AWS Lambda
  • Backend: Online fizetés
  • Frontend: UI javítása, admin felület kibővítése, több szerkesztési lehetőség biztosítása

Amit tanultunk a nyáron

  • Docker technológia
  • Spring keretrendszer
  • Android SDK
  • Git flow
  • Scrum metodológia
  • Angular keretrendszer
  • Gitlab CI/CD

Kérdések?

Made with Slides.com