Studium przypadku
Reveal Decks
Lokalny workspace w TypeScript do tworzenia, porządkowania i prowadzenia niezależnych prezentacji reveal.js z jednej przeszukiwalnej biblioteki.
Wewnątrz projektu
Kontekst
Repozytoria prezentacji łatwo zamieniają się w zbiór niepowiązanych plików HTML z powieloną konfiguracją i bez użytecznego przeglądu. Zbudowałem Reveal Decks jako jeden lokalny workspace pod kontrolą wersji, w którym każda prezentacja ma własne slajdy, motyw i zasoby, ale pozostaje łatwa do odnalezienia i uruchomienia ze wspólnej biblioteki.
Rola
Zaprojektowałem i zbudowałem produkt od początku do końca: konwencję tworzenia prezentacji, typowany kontrakt, wykrywanie przez Vite, przeszukiwalną bibliotekę, generator, walidację, dokumentację, testy i proces wydania.
Ograniczenia
Aplikacja miała pozostać statyczna i lokalna, bez bazy danych oraz backendu. Style prezentacji musiały być odizolowane, lokalne zasoby odporne na fingerprinting produkcyjnego buildu, a routing zgodny z podścieżką repozytorium w GitHub Pages. Autorzy mieli też zachować bezpośredni dostęp do HTML reveal.js zamiast uczyć się własnego formatu slajdów.
Podejście
Vite wykrywa definicje prezentacji przez `import.meta.glob`, a typowany kontrakt i walidacja w czasie działania zamieniają je w spójny katalog. Każda prezentacja znajduje się we własnym folderze, a zabezpieczona komenda `pnpm create:deck` generuje metadane, slajdy, motyw i okładkę na podstawie sluga w formacie kebab-case. Biblioteka oferuje wyszukiwanie i filtrowanie po tagach, a sterowanie prezentacją obsługuje klawiaturę, dotyk, pełny ekran i preferencję ograniczenia animacji. Cięższe moduły reveal.js, notatek i podświetlania składni są ładowane dopiero po otwarciu prezentacji.
Rezultat
Powstała dopracowana biblioteka z dwiema przykładowymi prezentacjami, generowaniem nowej prezentacji jedną komendą, walidacją metadanych i 12 testami automatycznymi, uzupełnionymi o lint, kontrolę typów i build produkcyjny. Leniwe ładowanie środowiska prezentacji zmniejszyło początkowy bundle biblioteki z około 1,14 MB do 29 KB. Repozytorium jest publiczne na licencji MIT i zawiera dokumentację ułatwiającą samodzielne użycie.
Wnioski
Niewielka konwencja staje się trwała, gdy wspierają ją generator i walidacja, a nie tylko dokumentacja. Projekt potwierdził też wartość odkładania wyspecjalizowanych zależności do momentu, gdy są potrzebne, oraz testowania ścieżek hostingu statycznego jako pełnoprawnej części produkcji.
