pascal 3e394998a3 Strona /firmy, CTA jako linki i testy Playwright routingu
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>
2026-07-24 00:37:04 +02:00
2026-07-09 00:14:45 +02:00
2026-07-23 23:15:15 +02:00
2026-07-09 00:14:45 +02:00
2026-07-09 00:14:45 +02:00
2026-07-09 00:23:33 +02:00
2026-07-09 00:14:45 +02:00
2026-07-09 00:14:45 +02:00
2026-07-09 00:14:45 +02:00

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:

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
S
Description
Portal mieszkań
Readme 12 MiB
Languages
CSS 36.2%
Java 31.1%
TypeScript 25.7%
JavaScript 6.9%