EmDash CMS nie jest kolejnym CMS-em napisanym «na szybko». Jego architektura jest przemyślana od podstaw, by wykorzystać najlepsze narzędzia nowoczesnego web developmentu. Zaglądamy pod maskę i wyjaśniamy, dlaczego wybrane zostały właśnie te technologie.
TypeScript — bezpieczeństwo typów od A do Z
Cały EmDash jest napisany w TypeScript — od rdzenia CMS, przez wtyczki, po motywy. To oznacza, że błędy typów są wykrywane na etapie kompilacji, a nie w produkcji. Komenda npx emdash types generuje typy TypeScript na podstawie schematu bazy danych, więc IDE podpowiada ci dokładne pola i typy danych twoich kolekcji. Jeśli twój seed definiuje pole «title» typu string — TypeScript wie o tym i nie pozwoli ci traktować go jako number.
Astro 6.0 — framework zoptymalizowany pod treść
EmDash jest zbudowany na frameworku Astro — specjalnie zaprojektowanym do budowy stron opartych na treści. Astro domyślnie generuje czysty HTML bez JavaScriptu — interaktywne komponenty (np. React) są ładowane tylko tam, gdzie są potrzebne (architektura «islands»). To przekłada się na minimalny rozmiar stron i doskonałą wydajność. W EmDash motywy to po prostu projekty Astro — z routami, layoutami, komponentami i stylami. Jeśli znasz Astro, znasz już większość EmDash.
Portable Text — treść jako strukturalne dane
Zamiast HTML-a (jak WordPress) EmDash przechowuje treść w formacie Portable Text — strukturalnym JSON-ie, gdzie każdy akapit, nagłówek, blok kodu czy cytat jest osobnym obiektem z typem i metadanymi. To daje ogromną elastyczność: ta sama treść może być renderowana jako HTML na stronie, markdown w RSS, czy czysty tekst w powiadomieniu email. Edytor w admin panelu pracuje natywnie w Portable Text, więc twórcy treści nigdy nie widzą surowego JSON-a — mają wygodny edytor WYSIWYG.
Baza danych i storage
Na Cloudflare EmDash używa D1 (SQLite na edge) jako bazy danych i R2 (object storage kompatybilny z S3) do przechowywania mediów. Lokalnie można używać zwykłej bazy SQLite. Schema jest przechowywana w bazie danych (nie w kodzie) — co oznacza, że możesz zmieniać strukturę kolekcji z poziomu admin panelu bez modyfikowania kodu. Plik seed.json definiuje początkową strukturę i zawartość, ale potem schema żyje w bazie i może ewoluować niezależnie.
Brak komentarzy