Wróć do projektów
WebDostępny kod

Studium przypadku

Reveal Decks

Lokalny workspace w TypeScript do tworzenia, porządkowania i prowadzenia niezależnych prezentacji reveal.js z jednej przeszukiwalnej biblioteki.

Biblioteka Reveal Decks z kartami prezentacji, wyszukiwarką, filtrami tagów i komendą tworzenia nowej prezentacji

Przegląd projektu

Kategoria
Web

Technologie

  • TypeScript
  • Vite
  • reveal.js
  • Vitest
  • GitHub

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.

Lokalny workspace w TypeScript do tworzenia, porządkowania i prowadzenia niezależnych prezentacji reveal.js z jednej przeszukiwalnej biblioteki.

Zobacz wszystkie projekty