Nette aplikace to mobile app

Polki
Člen | 553
+
0
-

Zdarec,
je tu někdo moudrý a znalý, kdo by věděl, jestli existuje plugin pro Nette, který by byl schopný vygenerovat z Nette mobilní aplikaci?

Tím mám na mysli view překopat do apk, kde se view bude dotazovat na server stejně jako se view dotazuje presenteru. Jen s tím rozdílem, že by se udělala druhá aplikace kde by presenter nezvracel HTML, ale jen data co potřebuje apk.

Pokud neexistuje, tak mám ambice jej vytvořit. Než ale tak bude uvítali by jste to?

kocourPB
Člen | 47
+
0
-

Ahoj,

ak som to spravne pochopil, tak chcete aby vasa appka ziskavala nejake data zo serveru a tie data vam ma servirovat Nette aplikacia?
Ak ano tak asi by som doporucil nejaky REST API plugin pre Nette, viz.: https://github.com/apitte/core alebo https://ublaboo.org/api-router/
Z Nette serverovej aplikacie budete posielat data v JSON formatu, ktore si mobilna aplikacia bude tahat nejakou cURL knihovnou.

Polki
Člen | 553
+
-1
-

Pochopil jste to správně jen navíc jde o to, že aktuálně se k aplikaci vytvořené v nette musí naprogramovat ještě mobilní aplikace, která tato data zobrazí. Přijde mi hodně zbytečné, aby se tvořila další aplikace pro mobily pouze se vzhledem, když je vlastně již vzhled nakodovany v HTML/CSS/Js.

Tedy se ptám jestli by byl zájem o plugin, který z HTML/CSS/Js je schopný vygenerovat mobilní aplikaci, popřípadě jestli již takový plugin/aplikace neexistuje.

O přenos dat mezi mobilní aplikaci a webem teď není řeč. Abych to uvedl na pravou míru. To by musel nejspíš uživatel udělat zvlášť, nebo by se do nette udělal další plugin který by podle požadavku zjistil jestli má vrátit HTML stránku nebo json pro mobilní appku.

kocourPB
Člen | 47
+
+1
-

No tak to sa bavime asi skor o tom, aby ta vasa Nette aplikacia, ktora zobrazuje stranky v HTML/CSS/JS bola spravne responzivne nakodovana (tzn. zobrazovala sa spravne v browseroch na mobilnych zariadeniach).

Ziadny plugin, ktory by vzal PHP Nette aplikaciu a skonvertoval ju do nativnej iOS alebo Android appky, pokial viem, neni a asi ani nebude.

Respektive ma napada len to, ze by ste vytvorili simple iOS/Android appku, ktora by nerobila nic ine len zobrazovala tu vasu webstranku :o) … potom mi ale trochu unika zmysel vytvarania takejto appky, ked si uzivatel rovno moze ten web otvorit v prehliadaci.

Editoval kocourPB (26. 4. 2019 14:12)

Polki
Člen | 553
+
0
-

Přesně o takové simple appce je řeč. Protože několik webu už máme za sebou a vtip je v tom, že ze zkušenosti víme, že když uživatel navštěvuje na mobilu, tak radši sáhne po aplikaci než po web stránce. A když je jednou funkčnost hotová včetně plně responzivniho designu, tak je zbytečné dělat to dvakrát ve vícero jazycích. Proto se udělá základ (v PHP/Nette) a jestli se bude zobrazovat v prohlížeči, nebo v mobilu bude jedno, jelikož nette aplikace samotná pozná, jakou response má poslat.
Taková je idea.

Pro reálná čísla, když jsme udělali jednu aplikaci, tak na web stránce bylo 30 návštěvníků.

Když jsme udělali jak píšeš simple appku, která toto zobrazuje v mobilu ale logika zůstává stejná, tak číslo vyskočilo z 30 na 130000.

A to je rozdíl, který je odpověď na to, že nevidíš smysl takové appce.

kocourPB
Člen | 47
+
0
-

Tak to su rozhodne pekne cisla z realu ;)

Dobre a co presne by ten plugin do Nette mal umet? Pises, ze by mal vracet nejaka data pro tu apk? Tak ake presne data v akej strukture?

Polki
Člen | 553
+
0
-

No to je otázka potom na domluvě komunity, jestli něco takového bude chtít.

Představ mě si to například na emailové schránce.

Bude existovat persistent ní parametr např $mobileApp. Defaultne bude jeho hodnota false a nebude se popisovat do URL, takže při požadavku na server se normálně vytáhnou data z databáze, vykreslí se do šablony a klientovi se pošle výsledná HTML stránka například se seznamem příchozích mailu.

Nyní si otevře uživatel aplikaci na mobilu vygenerováno tím pluginem a ta na pozadí provede request na ten samý presenter jako webova stránka s tím rozdílem, že mobile app automaticky doplní parametr mobileApp na true, což uživatel vlastně nevidí. Presenter si toho ale všimne a místo vykreslení dát do šablony a odeslání HTML kódu převede seznam například do JSON souboru a ten odešle jako response mobilní appce.

Ta už podle názvů v jsou si automaticky doplní data a zobrazí seznam.

To, kam která data přijdou by se při generování apk bralo z latte souborů (značky popisování PHP proměnných)

Michal Hlávka
Člen | 190
+
0
-

Tak nejak sem to prolitl, ale jestli to chapu spravne, ty chces / zamyslis, predat latte soubory mobilni aplikaci, ktera s nema bude pracovat?

Polki
Člen | 553
+
0
-

No jednoduše vyexportovat. Latte soubory do mobilní aplikace tak, že vlastně mobilka bude pracovat jako tyto latte soubory. Bude to prostě šablona v mobilu.

kocourPB
Člen | 47
+
0
-

Polki napsal(a):

… vlastně mobilka bude pracovat jako tyto latte soubory. Bude to prostě šablona v mobilu.

Asi sme naladeni na nejakej inej vlnovej dlzke ;)

Nechces teda nativnu appku iOS/Android appku, ale chces aby appka ziskavala nejake data zo serveru (kde uz vam bezi okrem ineho aj jej webova aplikacia)? To nedava imho zmysel.

Latte sablony samy o sebe len tak „pracovat“ nebudu ako si to napisal vyssie. Latte subory preklada Nette do HTML a to ti potom vykresluje prehliadac.

Nechcete ani vytvorit appku, ktora sa bude len na oko tvarit ako appka ale v podstate to bude len zobrazenie vasej webstranky, je to tak?
V tom pripade mi jedine dava zmysel do tej vasej aplikacie vytvorit samostatny API modul (napr. REST API), ktory bude na vyhradenych URL adresach (endpointoch) servirovat data. V tomto module budu API presentery, ktore tie data budu servirovat v JSONe.
Ak mate vasu Nette aplikaciu navrhnutu aspon trochu spravne a teda ze v presenteroch neni ziadna biznis logika a len sa volaju funkciu z modelu, tak by vytvorenie tychto API presenterov nemalo byt nijak casovo narocne.

PS: ak som uplne mimo a myslis nieco ine tak sa ospravedlnujem, nemyslel som to nijak ofenzivne ;)

Michal Hlávka
Člen | 190
+
+5
-

Ja jen teda jeste doplnim k me predchozi odpovedi, je ti jasne, ze nepredas vlastni filtry, formulare, … co generuje Nette? Existuje mnohem efektivnejsi a jednodussi cesta a to napsat front-end v frameworku jako je Andular, React, Vue a pouzit jejich nativni podporu. Nebo proste napsat responzivni design a otvirat v aplikaci tu stranku v webview. Ale to co ty pises, k tomu nemam bohuzel slova.

Polki
Člen | 553
+
-5
-

Uff někdy je tu pekelně těžké se vyjádřit.

@kocourPB nejde mi o to latte soubory spustit jej tak samý od sebe. Naopak plugin by měl z hotové výsledné HTML stránky vytvořit vlastně XML soubor popisující vzhled v nativní aplikaci (ano něco co se bude tvářit jako aplikace) tu si normálně uživatel nainstaluje na mobil a když ji otevře, tak se zobrazí fixne daný vzhled a doplní se jen data nactena z webu. To jak se budou data do obrazovky popisovat bude řešené podobné jako v latte

@MichalHlávka good point. Pořád jde ale o práci navíc. Nebylo by elegantnější kliknout na jedno tlačítko a celý FRONTEND by se vygeneroval sám? Pro všechny druhy platforem? Pokud jde o vlastní filtry, pokud by byla zavedena nějaká určitá pravidla v rámci pluginu jak vlastní filtry definovat, tak by určitě nebyl problém je nasadit i do oné vygenerované mobilky. Formuláře předat není problém. Z výsledného vygenerovaneho HTML se jednoduchou vycte jak má formulář vypadat i kam má odkazovat. V tom moc problém nevidím.

Celkový závěr asi takový. Idea je taková jakou se pár posledních let snaží PROSADIT .NET aneb společná logika na jednom vzdáleném serveru a Pohledy(view) prenositelne z platformy na platformu. Aneb jednou napíšeš celou aplikaci například v ASP.NET a potom pár kliky vygenerujes kromě web aplikace i mobilní aplikaci popřípadě tlustého klienta.

Ale u všech tří view(tenký klient, rlusty klient, mobile client) je veškerá logika řešena někde na vzdáleném serveru. Klienti pouze zobrazuji informaci.
Pokud ani toto nechápete, pak už nevím jak to vysvětlit a taky se tím pádem nedivím, že v Nette/PHP ještě nic takového není.
A to že nic takového Nette nemá mi přijde jako škoda.

Každopádně když jsem jediné, tak to asi nemá smysl řešit 😁 díky všem za reakce a zatím.

Ondřej Kubíček
Člen | 494
+
+2
-

No já to pochopil hned u prvního příspěvku. Neměl jsem v plánu se zapojovat do diskuze, ale přesto, to co chceš, je blbost :) to nikdy nedáš dohromady a proto taky nic takového neexituje. Řeší se to jak psali kluci výše.

Polki
Člen | 553
+
-1
-

@OndřejKubíček super díky. Tato odpověď je asi nejrelevantnejsi.

Otázkou pak vyvstává, jestli není lepší použít pro hybridní appky například zmiňovany .NET, když ten toto aspoň nějak v základu podporuje.

Ondřej Kubíček
Člen | 494
+
+1
-

můžeš postavit webovou část na angular dartu a mobilní část na flutteru, a budeš mít společný codebase :) viz ukázka aplikace inKino, která je tak postavena – https://github.com/roughike/inKino

Polki
Člen | 553
+
-1
-

Kouknu hned jak budu na PC. Jinak díky za tip. Radost komunikovat s někým kdo věci rychle chápe.

mrtnzlml
Člen | 140
+
0
-

Hi @Polki, me again… :)) Normálně bych toto vlákno ignoroval jako vždy, ale tentokrát to skvěle zapadá do naší předchozí diskuze na mailu. :wink: :wink:

Toto rozhodně není blbost, ale s Nette/PHP to bude velmi náročné. My to takto zkoušíme a funguje to skvěle: https://github.com/…om/margarita (renderuje se na mobile devices i v browseru – pokaždé trošku jinak, ale většina kódu je stejná tak jak chceš ty). Něco velmi podobného používáme i na produkci. Rozdíl je v tom, že React nám dělá abstraktní vrstvu která se může renderovat libovolně. Oproti tomu lidi většinou píšou HTML specific code v Nette šablonách což je blocker.

Další řešení je to co doporučují ostatní – mít Nette API backend a několik klient aplikací. To tak ± bude vždy, ale psát komplet nativní klienty pro každou platformu je reálně velmi velmi náročné a my se k tomu obracíme zády (stejně tak jako ty největší top tech firmy). Je to na zbláznění a mega práce udržet produkt na řetězu napříč vším.

Existují i další směry, ale ty jsou moc kontroverzní pro Nette fórum. Dej mi vědět, jestli chceš víc info o tom jak se dělá multi-platform vývoj tak, aby to nestálo úplně zaprd… :)

Polki
Člen | 553
+
-1
-

@mrtnzlml právě. 😁 Dneska už se všude točí, že než mít 5 nativně vývojářů, tak radši nájmem jednoho, který se naučí jedno a pak vyexportuje. Někdy je v takto vyexportovanych aplikacích například nižší výkon, ale zato se ušetří 4/5 veškerého času a prostředků a navíc místo 5 developer zaměstnání jednoho za 3 násobný plat a pořád na tom vydělají. Kdyby se něco takového dalo dělat i v nette myslím, že by vzrostla částka, kterou by si nette vývojáři mohli brát. Ale kdo ví.

Editoval Polki (26. 4. 2019 17:39)

mrtnzlml
Člen | 140
+
+1
-

@Polki Pořád musíš mít native guys a tak je to správně. Ale jinak je to tak jak píšeš – psát jeden produkt pro X platforem (ne jen mobile a web, ale TV, watch a další) znamená spoustu vyhozeného času a spoustu extra bugů a nekonzistencí. To je problém který teď nevíce řešíme: ostatní platformy nestíhají držet krok s tím co se děje na webu. Jednoznačně +1 pro to o co se snažíš.

kralik
Člen | 230
+
+2
-

Polki napsal(a):

Pochopil jste to správně jen navíc jde o to, že aktuálně se k aplikaci vytvořené v nette musí naprogramovat ještě mobilní aplikace, která tato data zobrazí. Přijde mi hodně zbytečné, aby se tvořila další aplikace pro mobily pouze se vzhledem, když je vlastně již vzhled nakodovany v HTML/CSS/Js.

Tedy se ptám jestli by byl zájem o plugin, který z HTML/CSS/Js je schopný vygenerovat mobilní aplikaci, popřípadě jestli již takový plugin/aplikace neexistuje.

O přenos dat mezi mobilní aplikaci a webem teď není řeč. Abych to uvedl na pravou míru. To by musel nejspíš uživatel udělat zvlášť, nebo by se do nette udělal další plugin který by podle požadavku zjistil jestli má vrátit HTML stránku nebo json pro mobilní appku.

Ahoj,
to je skvělý nápad.
Zrovna řeším případ kdy je projekt komplet hotový v Nette a jak ho teď dostat do Androidího APK.
Aplikace musí obsahovat autentizace i autorizaci.

Ideální mít Androidní aplikaci jen jako klienta

Vůbec, ale nevím jak to celé uchopit. Po jakých technologiích/komponentách sáhnout.
Našel jsem zde nějaké informace o vue.js, react,restapi, atd.
Vše je takové roztříštěné a pořádně neuchopitelné.

Proto kdyby existovala nějaká ucelená možnost, tak super.

Polki
Člen | 553
+
0
-

@kralik Super, že si myslíš, že to je skvělý nápad.

Ovšem pro mou osobní potřebu/pro 1 či 2 další lidi se to neoplatí.

Pokud by toto potřebovalo více lidí/firem, tak bych se do toho vrhl ve volném čase. Pokud by jsem si to ale dělal jen pro mou osobní potřebu, tak by to nebylo pro mě moc perspektivní.

kralik
Člen | 230
+
0
-

Polki napsal(a):

@kralik Super, že si myslíš, že to je skvělý nápad.

Ovšem pro mou osobní potřebu/pro 1 či 2 další lidi se to neoplatí.

Pokud by toto potřebovalo více lidí/firem, tak bych se do toho vrhl ve volném čase. Pokud by jsem si to ale dělal jen pro mou osobní potřebu, tak by to nebylo pro mě moc perspektivní.

Jsem přesvědčený o tom, že pokud takovéto dílo vydáš tak jej ve finále budou používat ne destíky, ale stovky lidí, bude-li tedy funkční a použitelné.

Pokud by se podařilo zařazení tohoto projektu i do componette.org tak jej budou používat určitě stovky lidí.