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?
Codespring - Eketour
By Godra Adam
Codespring - Eketour
Projekt bemutató - Codespring mentorprogram 2020 : Eketour
- 32