Nowa trasa:
- /firmy - lista firm i uslug na istniejacych komponentach (.directory-card)
i stylistyce sekcji uslug; filtr kategorii w query stringu (/firmy?kategoria=remonty)
- serviceCategories dostaly slug, nowa baza companyDirectory pokrywa wszystkie
8 kategorii, wiec filtrowanie dziala na realnych danych
- "Zobacz firmy" prowadzi do listy z wybrana kategoria, "Zobacz wszystkie"
do pelnej listy - ostatnie dwie atrapy href="#" usuniete
CTA zamienione na <Link> (wylacznie czysta nawigacja, bez akcji):
- 35 przyciskow onClick={() => navigate(x)} zamienionych automatycznie
- 5 skrotow panelu admina (setTab) -> Link do /admin/*
- karty narzedzi konta i kafelek poradnika: zamiast role="button" prawdziwy link
- pozycje menu konta i popovera powiadomien -> Link + zamkniecie popovera
- karty ofert: link rozciagniety na cala karte (.card-stretched-link) zamiast
role="button", bez zagniezdzania przyciskow w <a>
- bez zmian zostaly przyciski wykonujace akcje: publikacja, zapis draftu,
wyszukiwanie, oznaczanie powiadomien, bramki logowania
Wyglad 1:1 - rozszerzone selektory kontenerow o warianty <a>, reset :where(a)
o zerowej specyficznosci oraz odtworzenie centrowania tam, gdzie <button>
robil to domyslnie. Zweryfikowane zrzutami ekranu i pomiarem geometrii.
Naprawa: kazdy blad /auth/me (takze chwilowy timeout albo 5xx) kasowal token
i wylogowywal uzytkownika. Teraz sesje konczy tylko odrzucenie tokenu (401/403),
pozostale bledy sa ponawiane raz.
Testy: frontend/tests/routing.spec.ts (41 testow) + playwright.config.ts,
skrypt npm run test:e2e. E2E_BASE_URL pozwala uruchomic je na buildzie
produkcyjnym za nginx.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Polska Lokalnie
Aplikacja do ogloszen sprzedazy i wynajmu mieszkan, domow oraz apartamentow.
Stack technologiczny
- Backend: Java 21, Spring Boot, Spring Web, Spring Data JPA, Bean Validation
- Frontend: React, TypeScript, Vite
- Baza danych: PostgreSQL
- Reverse proxy i statyczny frontend: Nginx
- Uruchamianie: Docker Compose
Uruchomienie w Dockerze
Skopiuj konfiguracje srodowiskowa i uruchom caly stack:
cp .env.example .env
docker compose up --build
W PowerShell mozesz uzyc:
Copy-Item .env.example .env
docker compose up --build
Aplikacja bedzie dostepna pod adresem:
- Frontend: http://localhost
- API: http://localhost/api/listings
- PostgreSQL: localhost:5432
Dostep w sieci lokalnej
Aplikacja jest przygotowana do pracy z innych urzadzen w tej samej sieci Wi-Fi/LAN.
Najpierw sprawdz adres IP komputera, na ktorym uruchamiasz projekt:
ipconfig
Znajdz aktywna karte sieciowa i pole IPv4 Address, na przyklad 192.168.1.25.
Docker Compose
Uruchom caly stack:
docker compose up --build
Na drugim urzadzeniu w tej samej sieci wejdz w przegladarce na:
http://192.168.1.25
Port 80 jest wystawiany na siec lokalna przez Nginx. Backend i baza danych domyslnie sa dostepne tylko lokalnie na komputerze hosta, a API jest osiagalne przez Nginx pod /api.
Tryb developerski
Uruchom backend lokalnie:
cd backend
mvn spring-boot:run
Uruchom frontend lokalnie:
cd frontend
npm run dev
Na drugim urzadzeniu wejdz na:
http://192.168.1.25:5173
Vite nasluchuje na 0.0.0.0, a zapytania /api sa proxy do backendu na 127.0.0.1:8080.
Uruchomienie lokalne bez Dockera
Backend:
cd backend
mvn spring-boot:run
Frontend:
cd frontend
npm install
npm run dev
Vite przekierowuje zapytania /api do backendu na http://localhost:8080.
Struktura projektu
backend/ Spring Boot API
frontend/ React + Vite
nginx/ konfiguracja Nginx i obraz web
docker-compose.yml