Wpis z mikrobloga

TLDR: napisałem swój silnik blogowania (static site generator) w mniej niż 100 linii kodu

Ostatnio znudził mi się mój szablon na blogu a sam silnik, którego używałem, wydawał się dla mnie za duży. Potrzebowałem czegoś o wiele prostszego. Prostego szablonu, prostego silnika do renderowania. Niestety teraz mamy taką modę, że z małego landinga page developerzy potrafią zrobić 30 mb SPA, bo przecież wszędzie musi być react, trzysta bibliotek js i milion zdjęć. O ile react/vue/gatsby itd jest świetnym narzędziem i ma swoje zastosowania, to nie wszędzie powinno się go wciskać.

Cóż, zatem siadłem jednego wieczoru i parę godzin później powstał braindead - mój własny braindead simple static site generator. Początkowa działająca wersja, mająca wszystkie potrzebne mi featury, zmieściła mi się w 100 linijkach kodu. Teraz troszkę dobudowałem i dodałem nieco komentarzy więc jest ich około 150, ale wciąż uważam to za niezły wynik jak na silnik dla mojego bloga, który wspiera markdown, kolorowanie składni, htmla, tabelki w markdownie i kilka innych rzeczy.
Magia się tam nie dzieje żadna - Jinja, Markdown, Toml, Pygments i #python
Dependency management oczywiście poetry zamiast rakowe pipenva. Do tego type hinting, black, isort, bandit.

Szablon, którego używam waży jakieś 10KB, strona ładuje się jak pierun normalnie. Nie ma JSa. I to mi się podoba. W każdym razie - kod jest na repo, jakby się ktoś chciał pobawić, to zapraszam. Paczkę można ściągnąć z pypi pip install braindead. Jak używać jest w pliku readme na repo. Demo na blogu https://grski.pl/

Jak komuś mój szablon nie pasuje, to można swój własny napisać :D
Domyślny wygląda tak:
Default template of braindead
Ładowanie bez cache:
requests made if loading this template

W sumie chyba będę to trochę rozwijał po godzinach bo mam kilka pomysłów co tam jeszcze dobudować (todo.txt na repo)
Za niedługo pewnie skrobnę wpis o procesie tworzenia.
inb4 ktoś powie: kod słaby, gdzie są klasy, co to za same funkcje, płaska struktura? tak tak, nie lubie obiektówki.
#programowanie

Technologia użyta:

toml,
markdown
jinja2
pygments.

formatowanie:
black
isort.
flake8
autoflake
bandit

wersjonowanie:
bumpversion.

deps management & publishing: poetry
  • 18
@9harkonnen6: sprawdziłem jeszcze dodatkowo - to raczej an pewno kwestia base_url w settingsach. Lokalnie ci pewnie nie zadziała o ile nie odpalasz z serwera http.
Wypuściłem wersje 0.2.6 - tam dodałem ostrzeżenie o takim zachowaniu + do backloga wpisałem live server automatyczny.