DoDomuDojadę — Dokumentacja architektury i API
Witaj w dokumentacji projektu DoDomuDojadę! Ta strona stanowi punkt wyjścia do zrozumienia struktury i architektury aplikacji.
📚 Struktura Dokumentacji
- Autogenerowana dokumentacja kodu
- Architektura — opisuje architekturę aplikacji
- Display — opisuje działanie najważniejszej funkcjonalności aplikacji
- Development — opisuje założenia dalszego rozwoju projektu
Stos technologiczny
Backend
- PHP 8.5
Frontend
- Tailwind CSS
- Alpine.js
Baza danych
- Postgres
Przegląd projektu
DoDomuDojadę to aplikacja webowa pełniąca rolę wirtualnej tablicy informacyjnej. Składa się z:
- Display — publiczna strona z danymi (odjazdy, pogoda, cytat, słowo, wydarzenia). Renderowana w przeglądarce i zasilana przez API GET /display/*.
- Panel administracyjny — część chroniona (logowanie), w której zarządzasz użytkownikami, ogłoszeniami, modułami i odliczeniami.
- Warstwa CLI — komendy do zadań cyklicznych (pobieranie cytatu, słowa dnia, sprzątanie odrzuconych ogłoszeń).
Struktura katalogów
Najważniejsze elementy repozytorium:
- public/ — wejście aplikacji (index.php) i statyczne assety.
- src/ — kod aplikacji (Application/Domain/Infrastructure/Presentation).
- resources/docs/ — dokumentacja hostowana przez MkDocs.
- resources/lang/ — tłumaczenia.
- schema/ — schemat i migracje bazy danych.
- bin/app — CLI aplikacji.
Moduły i integracje
W aplikacji działają moduły: - tram — odjazdy tramwajów (ZTM/PEKA). - weather — pogoda i jakość powietrza (IMGW + Airly). - quote — cytat dnia. - word — słowo dnia. - calendar — wydarzenia z Google Calendar. - announcements — ogłoszenia. - countdown — odliczanie.
Widoczność modułów jest kontrolowana w tabeli module i sprawdzana po stronie API.
Szybki start (lokalnie)
- Zainstaluj zależności:
- Skonfiguruj środowisko:
- Uzupełnij wymagane zmienne środowiskowe (patrz sekcja niżej).
- Utwórz bazę danych i wgraj schemat z
schema/schema.sql. - Uruchom backend:
- Uruchom front:
Konfiguracja .env
Poniżej lista kluczowych zmiennych środowiskowych. Wymagane zmienne muszą być ustawione, inaczej aplikacja przerwie start.
Wymagane
LOGGING_DIRECTORY_PATH— katalog na logi (np../logs)TWIG_CACHE_PATH— katalog cache dla Twiga (np../var/cache/twig)AIRLY_API_KEY,AIRLY_ENDPOINT— dane jakości powietrzaIMGW_WEATHER_URL— endpoint IMGWDB_USERNAME,DB_PASSWORD— dane dostępu do bazyTRAM_URL— endpoint ZTM (Peka)CALENDAR_API_KEY_PATH— ścieżka do klucza Google CalendarCALENDAR_ID— ID kalendarza GoogleQUOTE_API_URL,WORD_API_URL— endpointy cytatu i słowa dnia
Najczęściej używane opcjonalne
DB_HOST,DB_PORT,DB_NAME(domyślnie hostlocalhost, port5432, bazadodomudojade)LOGGING_CHANNEL_NAME(domyślnieAPP)LOGGING_LEVEL(domyślnieINFO)TWIG_DEBUG(domyślniefalse)AIRLY_LOCATION_ID(wymagane do pobierania danych z Airly)STOP_ID— lista przystanków, np.AWF41,AWF05
Szybki start (produkcja)
- Ustaw document root na
public/(np. w Apache/Nginx). - Konfiguruj PHP-FPM.
- Upewnij się, że katalog z logami (
LOGGING_DIRECTORY_PATH) jest zapisywalny, ale nie publiczny. - Zablokuj dostęp do katalogów źródłowych oraz .env.
Stwórz .env
Ustaw LOGGING_LEVEL=info oraz odpowiednie ścieżki do logów i cache.
Ustaw cron jobs
Ustaw pobieranie dziennego słowa
Ustaw pobieranie dziennego cytatu
Ustaw usuwanie odrzucanie ogłoszeń starszych niż podana data
Rozwiązywanie problemów
Rozwiązanie większości problemów staje się oczywiste po spojrzeniu do logów. Dlatego zacznij właśnie tam.
- Błąd 500: Sprawdź logi (
LOGGING_DIRECTORY_PATH/app.log); sprawdź logi PHP-FPM. - Brak danych API: Weryfikuj klucze w .env.
- CSS się nie ładuje: Uruchom
npm run build; sprawdź, czy statyczne pliki są serwowane. - Baza się nie łączy: Upewnij się, że podałeś/aś poprawny username i hasło.
- Błąd bazy danych: Sprawdź, czy baza danych ma prawidłową strukturę i zawiera wszystkie tabele;
FAQ
- Dlaczego projekt nie używa framework-a? Głównym celem jest lekkość projektu oraz nauka PHP.
Licencja
Ten projekt jest licencjonowany na warunkach CC-BY-NC-4.0
Oznacza to, że:
- ✅ możesz używać, modyfikować i dzielić się kodem
- ✅ musisz przypisać autorstwo
- ❌ nie możesz użytkować kodu komercyjnie bez zgody
Autorzy
© SLOths4 2025
@AirScorpionK @hexer7
Masz pytania? Otwórz Issue lub skontaktuj się z nami na sloths4@spolecznaczworka.pl.