V době informační exploze a dramaticky se měnících podmínek může být složité a časově náročné najít vhodného poskytovatele služeb, který vyřeší zákazníkův problém. Množství nabízených služeb je dnes mnohem větší a navíc jsou služby komplexnější. Také struktura poskytovatelů služeb se častěji mění. Tam, kde byl včera pekař, je dnes knihkupec. A v neposlední řadě je také složité získat informace o kvalitě poskytovaných služeb. Proto na internetu existují různá řešení, která zákazníkům pomáhají vybrat vhodné dodavatele.
Jedním z takových řešení může být i webová aplikace Moji lidi.
O Aplikaci
Aplikace vznikla jako reakce na mezeru ve vyhledávání informací a dodavatelů. V první fázi se inspirovala trhem s dotacemi.
Na trhu existují tisíce dotačních programů a v roce 2009 bylo prakticky nemožné získat jednoduché a srozumitelné informace o jednotlivých programech. Poskytovatelé informací poskytovali dotace ve “svém jazyce” na desítkách webových stránek. Pokud tedy žadatelé o dotaci neměli zkušeného poradce, nemohli potřebné informace najít a bohužel ani neměli kam zavolat či napsat.
Prvním projektem bylo vytvoření webových stránek dotacni.info, kde byly jednoduše prezentovány stovky dotací, aby k nim uživatelé měli přístup a byly srozumitelnější. Nápad se setkal s úspěchem a nyní každý týden přichází přes 100 dotazů od potenciálních klientů.
O několik let později se stal internet přeplněný poměrně kvalitními webovými stránkami, které poskytovaly informace o komerčně zajímavých dotacích. Když žadatel hledal potřebné informace, vyhledávače mu nabízely stránky největších firem v oblasti dotačního poradenství, případně často více stránek jedné takové firmy. Na internetu tak vznikl jakýsi oligopol předních organizací.
Jedním z problémů bylo množství nerelevantních dotazů (např. na malé projekty nebo nezajímavé projekty). S těmito klienty bylo složité efektivně pracovat.
Jako možnost řešení tohoto problému byl vymodelován systém Moji lidi, v jehož rámci se snažíme kombinovat nabídku a poptávku na základě parametrů ceny, kvality a rychlosti, nikoliv publikační a reklamní síly.
Zavedený problém je patrný i na jiných trzích. Cílem vývoje aplikace je vytvoření nové podoby celosvětově využívané otevřené aplikace kombinující vyhledávač s principy sociálních sítí (ne přátel, ale cizích lidí) včetně principů poptávkových portálů. Aby byl systém úspěšný, musí zahrnovat všechny oblasti lidské existence a obsahovat funkční vyhledávací/párovací algoritmus. Je také nutné obsáhnout buď obrovské množství registrovaných dodavatelů, nebo systém napojit na existující katalogy a vytvořené internetové zdroje. Těmito úkoly se nyní zabývá partnerské konsorcium společnosti CYRRUS ADVISORY, a.s. a Mendelovy univerzity v Brně.
Vývoj Aplikace
Frontend
Architektura a implementace
Aplikace MojiLidi byla navržena jako webová služba. Pro vývoj frontendu webových služeb je k dispozici mnoho přístupů – od úzce provázaných backendových aplikací, které generují stránky HTML na základě šablon, až po odlehčené frontendové aplikace napsané v jazyce JavaScript, které komunikují s backendem prostřednictvím dobře zdokumentovaného API. My jsme zvolili druhý přístup. Naše služba byla implementována jako takzvaná Single Page Application (SPA). Přístup SPA je v současné době preferován v mnoha projektech, protože poskytuje rychlé odezvy na akce uživatelů a odstraňuje zbytečné prodlevy při načítání stránek. Mobilní uživatelé oceňují snížení objemu přenášených dat, kterého se díky této architektuře dosáhne. Tento přístup je specifický výrazným využitím schopnosti internetového prohlížeče spouštět JavaScript, který je zodpovědný za většinu logiky aplikace, komunikaci se serverem a vykreslování uživatelského rozhraní.
Použité technologie
Výběr frontendových technologií byl proveden podle jejich vhodnosti pro danou úlohu, stavu dokumentace a osobních preferencí našeho týmu. Cílem bylo použít vhodnou sadu nástrojů, která by poskytovala stabilní prostředí a dlouhodobou podporu.
Navržené uživatelské rozhraní a funkce byly implementovány pomocí první edice frameworku Angular JS. Uživatelské rozhraní je plně responzivní a styly CSS jsou generovány pomocí preprocesoru SASS. Pro rozvržení byl použit framework Bootstrap a pro základní ikony Font Awesome. Funkčnost frontendové aplikace je zajištěna automatickými testy vytvořenými pomocí Jasmine a Protractor. Všechny úlohy související se sestavením a nasazením jsou automatizovány pomocí spouštěče úloh Gulp. Náš přístup umožňuje vygenerovat samostatnou aplikaci pro mobilní zařízení pomocí Apache Cordova se stejnou kódovou základnou jako webový frontend.
Backend
Tato část aplikace zodpovědná za komunikaci mezi databází a uživatelským rozhraním je napsána v programovacím jazyce Perl. Dodává požadovaná data podle požadavků uživatele. Backend je rozdělen na části, které se starají o autentizaci a profily uživatelů, komunikaci nebo analýzu dotazů. Backend využívá tradiční přístup ověřený v mnoha předchozích projektech, za který byli zodpovědní vývojáři. To znamená, že jsme navrhli samostatné moduly Perlu komunikující s databází pomocí společného databázového rozhraní na jedné straně a formátu JSON pro komunikaci s frontendem na straně druhé. Nebyl použit žádný specializovaný framework. Tento přístup se v prototypu této aplikace osvědčil a jeho hlavním důvodem byl rychlý vývoj aplikace v prostředí, kde žádná podobná implementace nebyla k dispozici.
Komunikační rozhraní
Vzhledem k tomu, že frontendem webové služby je samostatná aplikace v jazyce JavaScript, je pro přenos dat mezi API na straně klienta a serveru zapotřebí dobře zdokumentované API. Backend i frontend implementují rozhraní definované v dokumentaci API. Navrhli jsme jednoduché rozhraní REST API využívající metody HTTP GET, POST, PUT a DELETE, stavové kódy HTTP a sadu URI, které představují zdroje dostupné z backendu. Data jsou přenášena ve formátu JSON. Rozhraní API bylo navrženo a zdokumentováno pomocí syntaxe API blueprint, která také umožňuje vytvořit maketu backendu pro účely vývoje a testování. Ověření klienta se přenáší jako textový token s každým požadavkem pomocí vlastní hlavičky HTTP po jeho přihlášení. Místní úložiště internetového prohlížeče se používá k uchování tokenu mezi relacemi uživatele.
Ukládání dat
Data systému jsou uložena v tradičním racionálním open source databázovém systému PostgreSQL. Tento databázový systém vyhovuje všem potřebám systému. Systém využívá více než 20 databázových tabulek pro ukládání informací o uživatelích, nabídkách nebo poptávkách uživatelů včetně umístění poptávky. V tuto chvíli systém nepodporuje prostorové dotazy, nicméně v budoucím rozšíření systému plánujeme využít PostGIS, což je rozšíření prostorové databáze pro PostgreSQL. Přidává podporu pro geografické objekty, což umožňuje provádět dotazy na polohu v jazyce SQL.