Jak jsme postavili automatický, moderní a soběstačný portál pro nette addony.
Nutno předem říci, že původní portál nebyl vůbec špatný. Problém bych hledal spíše v lenosti autorů doplňků a rozšíření, udržovat jejich readme aktuální.
Componette jsem začal stavět 2.10.2015. Ani ne za 4 měsíce od prvního commitu, mimo jiné díky hackatonu s @chemix a @matej21, jsme pro vás připravili novou verzi.
Portál plně soběstačný, kdokoli může přidat rozšíření a prakticky
se o něj už nemusí starat. Autoři se pak můžou věnovat tomu, co je nejvíc
baví - programování
.
Pojďme si ukázat nějaké přednosti.
Stránky beží na VPS, kterou okupuje Docker. Celou konfigurace bylo možné nalézt i na Githubu.
Základní rozdělení je do 4 kontejnerů.
DATA
DB
Nginx
PHP7
jednoduchým SSMTP pro odesílání emailů.
Nastavování emailu, resp. mail serveru, považuji za jedno z nejvíce otravných a kompikovaných věcí u správy serveru. Využívám tedy k tomu SSMTP (jednoduchý smtp server) a zdarma službu Mailgun, kde máme 10 000 emailů každý měsic. Na nějaké informace o běhu, a sem tam nějaká laděnka, to určitě stačí.
Používáte nějaké alternativy nebo lepší řešení? Nechte mi dole komentář.
Tím, že je projekt open source, dáváme šanci komukoli nahlédnou do kódu aplikace. Nese to s sebou výhody i nevýhody.
Nevýhody
Výhody
Jelikož se na webu nevyskytuje přihlašování ani administrace, myslím si, že to dost útoků eliminuje.
Zapojení Nette komunity je na samostatný článek, ale těch už nejspíš bylo dost. Já budu rád, když se budou tvořit addony a sem tam nás někdo na gitteru, twitteru, githubu a fóru zkritizuje, jak to děláme blbě a jak je to naprd ošklivý. Ale i z toho mám radost, i to je přece jenom zapojení komunity. Heh.
To je jedna z věcí co na starém portále určitě chybělo. Vyhledávání u nás není
žádná věda. Nevyužíváme ElasticSearch, ani nic podobného, prostý LIKE %%
nám
bohatě stačí.
Vyhledává se ve jménu autora, názvu addonu a popisku na Githubu (ano, proto je důležité ho vyplňovat).
Můžete se sami podívat na Githubu.
Detail addonu je kombinace readme (hlavní panel) a informací a odkazů (pravý sidebar).
V sidebaru se nachází odkazy na Github, na přehled doplňků podle autora, základní statistiky stažení, počet hvězdiček apod.
Pokud se jedná o composer balíček, jsou tam zobrazeny i závislosti.
O generování obsahu se stará cron, který se pouští 1x denně. Stáhne si originální readme, pokud existuje, udělá nějakou chytristiku s odkazy a dalším.
Při vykreslování dojde k překladu markdown -> parsedown -> HTML. A výsledech se uloží do cache.
Pro mnohé by se mohly stát lákadlem jednoduché statistiky o stahování addonu přes composer. Hezké grafy se tvoří pomocí knihovny CanvasJS.
Stejné grafy tvoří i Packagist, odkud se data berou.
Na obrázku je vidět Kdyby\Doctrine ke dni 16.01.2016.
Stejný graf v originále: https://packagist.org/packages/kdyby/doctrine/stats.
Vypsat všechny addony naráz se může líbít tomu, kdo nerad vyhledává a dáva raději přednost procházení.
I taková stránka existuje.
Řazení
Pro globální přehled o počtu doplňků a další možné statistiky slouží tato stránka.
Nejdůležitější vlastnost nového portálu je bezvýhrady cron. Díky tomu je portá plně soběstačný. Když vytvoříte novou verzi knihovny a změníte si pracně readme na Githubu, componette vám samo readme aktualizuje i u vašeho addonu. To vše díky automatickému zpracování přes cron.
Na componette se nevyužívá Symfony\Console
. Možná pro někoho nepředstavitelné,
ale i bez symfony\console
existuje život v CLI. Né, že bych ji neměl rád, ale
vystačím si aktuálně bez ní.
Struktura tasků je následující.
Výsledek daily cronu může vypadat třeba takto.
Doufám, že jste si udělali alespoň malý obrázek o tom, co componette je a co stojí v pozadí.
Budu rád za jakýkoli feedback, klidně i ten pozitivní. :-)
Pokud máte nějaké nápady a nechcete nutně programovat, zkuste založit issue na Githubu a třeba se to ujme.