📚 My Literature Archive / Moje Archiwum Literatury
A personal literature archive for publishing and browsing poetry and prose. / Osobiste archiwum literackie do publikowania i przeglądania poezji oraz prozy.
The design follows a modern online magazine layout, with support for multiple languages and tag-based filtering. Now includes a dynamic tag cloud with frequency-based styling and a modular component structure. / Projekt inspirowany nowoczesnym układem magazynu online, z obsługą wielu języków, filtrowaniem według tagów, dynamiczną chmurą tagów i modułową strukturą komponentów.
📸 Preview / Podgląd

🔗 View Live Demo / Zobacz wersję online
🛠️ Tech Stack / Technologie
- React — component-based frontend framework / framework frontendowy oparty na komponentach
- Vite — fast build tool / szybkie narzędzie do budowania aplikacji
- Tailwind CSS — utility-first styling / narzędzie do stylizacji typu utility-first
- Firebase Firestore — cloud database / baza danych w chmurze
- Git & GitHub — version control / kontrola wersji
- Vercel — hosting and CI/CD / hosting i CI/CD
🚀 Getting Started / Jak zacząć
- Clone the repository / Sklonuj repozytorium:
git clone https://github.com/vipozdniakov/react-lit-archive.git
cd react-lit-archive
- Install dependencies / Zainstaluj zależności:
npm install
- Create a .env file and add your Firebase config / Utwórz plik .env i dodaj konfigurację Firebase:
VITE_FIREBASE_API_KEY=...
VITE_MY_GOOGLE_UID=...
VITE_FIREBASE_AUTH_DOMAIN=...
VITE_FIREBASE_PROJECT_ID=...
VITE_FIREBASE_STORAGE_BUCKET=...
VITE_FIREBASE_MESSAGING_SENDER_ID=...
VITE_FIREBASE_APP_ID=...
- Start the development server / Uruchom serwer deweloperski:
npm run dev
✨ Features / Funkcje
- Add and display literature entries (prose or poetry) / Dodawanie i wyświetlanie wpisów literackich (proza lub poezja)
- Text formatting preserved (e.g., line breaks in poetry) / Zachowanie formatowania tekstu (np. podziały wierszy)
- Full-text search across content and titles / Wyszukiwanie pełnotekstowe w treści i tytułach
- Language filter: Russian, Belarusian, Polish / Filtrowanie według języka: rosyjski, białoruski, polski
- Multi-tag filtering (strict mode: all tags must match) / Filtrowanie według wielu tagów (tryb ścisły: wszystkie tagi muszą pasować)
- Tag-based filtering with frequency-based tag cloud / Filtrowanie według tagów z dynamiczną chmurą opartą na częstotliwości
- Minimalist magazine-style layout / Minimalistyczny układ w stylu magazynu
- Modular component architecture for easier scaling / Modułowa architektura komponentów ułatwiająca rozwój projektu
- 📈 Visitor statistics with Google Analytics 4 integration / 📈 Statystyki odwiedzin dzięki integracji z Google Analytics 4
- Scroll-to-top button integrated into post layout / Przycisk powrotu na górę zintegrowany z układem postów
- Language label badges displayed next to post titles / Etykiety językowe wyświetlane obok tytułów postów
🔒 Security Practices / Praktyki bezpieczeństwa
This project follows modern security best practices: / Projekt stosuje nowoczesne praktyki bezpieczeństwa:
- Sensitive data like API keys is managed via environment variables (.env). / Wrażliwe dane, takie jak klucze API, są zarządzane za pomocą zmiennych środowiskowych (.env).
- API keys are domain-restricted and only allowed minimal necessary access. / Klucze API są ograniczone do wybranych domen i mają minimalnie wymagane uprawnienia.
- Repository history has been fully cleaned of sensitive information. / Historia repozytorium została w pełni oczyszczona z poufnych informacji.
✅ The project is safe for public deployment and complies with open-source security standards. / Projekt jest bezpieczny do publicznego wdrożenia i zgodny ze standardami bezpieczeństwa open source.
🧩 Project Structure / Struktura projektu
src/
├── components/
│ ├── Header.jsx
│ ├── Footer.jsx
│ ├── TagFilter.jsx
│ ├── TagDisplay.jsx
│ ├── ToastNotifications.jsx
│ ├── LanguageFilter.jsx
│ └── ...
├── hooks/
│ └── usePosts.js
├── utils/
│ ├── filterPosts.js
│ └── getAllTags.js
└── App.jsx
📄 Changelog / Dziennik zmian
See CHANGELOG.md for release notes. / Zobacz CHANGELOG.md, aby przeczytać notatki o wersjach.
🧠 Author / Autor
Vitali Pazdniakou
"Silence is a word, too." /
„Cisza to też słowo.”