Appka Jíme Brno z pohledu vývojáře
Jíme Brno
Con Gusto
2022
Skupina Con Gusto vlastnící několik brněnských restaurací se rozhodla spustit vlastní rozvážkovou službu Jíme Brno. A kompletní realizaci webové aplikace pro svůj exkluzivní rozvoz svěřila právě Cognitu, a to od návrhu implementace až po uvedení služby na trh. Společně s vývojem rozvozového systému jsme dostali za úkol vytvořit také informační systém pro management zadavatele napojený na nejrozšířenější pokladní restaurační systém Septim.
Technická analýza
a návrh architektury
Na základě uživatelského zadání a technické analýzy jsme navrhli architekturu systému složenou z několika samostatných aplikací:
- E-shopové rozhraní pro zákazníky (www.jimebrno.cz), kde mohou zákazníci objednávat jídlo z restaurací sítě Con Gusto. Řešení zahrnuje i administraci obsahu a jídelníčku restaurací.
- Dashboard optimalizovaný pro tablety v jednotlivých restauracích pro správu příchozích objednávek.
- Dashboard pro operátora rozvozu – přehled nad objednávkami a polohou kurýrů v reálném čase.
- Mobilní aplikace pro kurýry.
- Manažerský informační systém.
Technologický
stack
V Cognitu se specializujeme na vývoj webových aplikací v PHP a Symfony Framework. Máme na této platformě nasazeny velké e-shopy i SaaS aplikace, takže volba technologie byla no-brainer. Pracovali jsme v malém týmu a z důvodu rychlosti vývoje jsme zvolili cestu monolitu s logicky odděleným kódem pro jednotlivé aplikace.
Jako datové úložiště jsme využili PostgreSQL s přístupem přes Doctrine ORM a DBAL, pro cache pak Redis.
Frontend
a mobilní aplikace
Pro uživatele generujeme na serveru šablony v jazyce Twig a pro dynamiku v prohlížeči pak Vanilla JavaScript s pomocí knihovny Stimulus.
Mobilní aplikace pro kurýry je potom postavená na multiplatformní React Native komunikující se serverem pomocí REST s využitím ApiPlatform.
Tohle všechno doplňuje pro správu obsahu ještě náš interní CMS Winston a e-commerce platforma Marco.
Iterativní
postup vývoje
Standardní postup naší práce zahrnuje sběr požadavků account managerem a UX designérem, tvorbu interaktivního prototypu, UI design po schválení prototypu a předání frontend vývojáři.
Mezitím backend tým připravuje datovou architekturu. Vývoj probíhá ve 14denních sprintech s testovacími cykly. Po každém sprintu následuje schválení nebo úprava pro další iteraci.
Ladění výkonu pokračovalo ještě týden po spuštění aplikace, protože testovat reálný provoz s pohybujícími se kurýry a nepřetržitými objednávkami je v simulovaném prostředí prakticky nemožné.
Zajímavost
na závěr
Co zprvu vypadá jako pár řádků kódu, ale nakonec zabere dny práce celého týmu:
Zvukové notifikace v tabletech restaurací platforma iOS zvukové projevy na iPadu plně ignorovala. Řešením byly push notifikace přes externí službu.
Adresy pro doručení, každá restaurace má vlastní rozvozové zóny ovlivňující cenu dopravy i minimální objednávku. Google Maps autocomplete se v ČR ukázalo nepoužitelné kvůli neaktuálním adresám, proto jsme integrovali Smartform.cz s relevantní databází adres a výpočet vzdálenosti řešíme přes Google Distance Matrix API.
Jak jsme
postupovali
Od zadání přes návrh architektury až po spuštění rozvážkové služby. Kompletní vývoj 5 propojených aplikací v jednom monolitu.
Analýza a návrh architektury
Na základě uživatelského zadání a technické analýzy jsme navrhli architekturu systému složenou z 5 samostatných aplikací s napojením na pokladní systém Septim.
UX prototyp a UI design
Account manager a UX designér sbírali požadavky, vytvořili interaktivní prototyp. Po schválení prototypu vznikl finální UI design předaný frontend vývojáři.
Vývoj ve 14denních sprintech
Backend připravil datovou architekturu, vývoj probíhal iterativně ve 14denních sprintech s testovacími cykly a průběžným schvalováním.
Integrace a řešení problémů
Řešili jsme zvukové notifikace na iPadech (push notifikace přes externí službu) i nepřesné adresy (integrace SmartForm místo Google Maps autocomplete).
Spuštění a ladění výkonu
Po uvedení na trh pokračovalo ladění výkonu ještě týden, protože reálný provoz s pohybujícími se kurýry nelze plně simulovat.
Služby a produkty,
které jsme dodali
Zakázkový vývoj
Kompletní vývoj webové aplikace na míru, od e-shopového rozhraní přes tabletové dashboardy po mobilní aplikaci pro kurýry.
Digitalizace a integrace
Napojení na pokladní systém Septim, integrace SmartForm pro adresy a Google Distance Matrix API pro výpočet rozvozových zon.
PHP a Symfony
Monolit s logicky odděleným kódem pro 5 aplikací na enterprise-grade frameworku Symfony.