# 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:

```bash
cp .env.example .env
docker compose up --build
```

W PowerShell mozesz uzyc:

```powershell
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:

```powershell
ipconfig
```

Znajdz aktywna karte sieciowa i pole `IPv4 Address`, na przyklad `192.168.1.25`.

### Docker Compose

Uruchom caly stack:

```powershell
docker compose up --build
```

Na drugim urzadzeniu w tej samej sieci wejdz w przegladarce na:

```text
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:

```powershell
cd backend
mvn spring-boot:run
```

Uruchom frontend lokalnie:

```powershell
cd frontend
npm run dev
```

Na drugim urzadzeniu wejdz na:

```text
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:

```bash
cd backend
mvn spring-boot:run
```

Frontend:

```bash
cd frontend
npm install
npm run dev
```

Vite przekierowuje zapytania `/api` do backendu na `http://localhost:8080`.

## Struktura projektu

```text
backend/      Spring Boot API
frontend/     React + Vite
nginx/        konfiguracja Nginx i obraz web
docker-compose.yml
```
