Aplikacja do odkrywania i oceniania miejsc, zintegrowana z Google Maps API oraz AI (Gemini). Użytkownicy mogą przeglądać miejsca, czytać opinie i zadawać pytania o nie za pomocą wbudowanego czatu AI. Projekt oparty jest na Django REST Framework oraz React.
- Przeglądanie miejsc: wyszukiwanie i wyświetlanie szczegółów miejsc z Google Maps API.
- Opinie i opisy: pobieranie recenzji i opisów redakcyjnych bezpośrednio z Google Places API.
- Czat AI (SpotAI): zadawaj pytania o dowolne miejsce — Gemini odpowiada na podstawie opinii i opisu miejsca.
- Rezerwacje: rezerwowanie miejsc bezpośrednio z aplikacji.
- Ulubione: dodawanie i usuwanie miejsc z listy ulubionych.
- Autoryzacja JWT: bezpieczny dostęp do API z tokenami JWT.
- Python 3.12 / Django 6
- Django REST Framework
- ADRF (async Django REST Framework)
- Google Maps / Places API
- Google Gemini API
- SQLite (domyślna baza danych)
- React 18+ / TypeScript
- Vite
- Playwright (testy E2E)
- Docker & Docker Compose
-
Utwórz pliki
.envna podstawie szablonów:cp backend/.env.example backend/.env cp frontend/.env.example frontend/.env
Uzupełnij klucze API w obu plikach.
-
Uruchom kontenery
docker compose up --build
-
Aplikacja dostępna pod:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:8000
- Frontend:
-
Wejdź do folderu backendu:
cd backend -
Utwórz i aktywuj środowisko wirtualne
python -m venv venv source venv/bin/activate # Linux / macOS venv\Scripts\activate # Windows
-
Zainstaluj zależności
pip install -r requirements.txt
-
Utwórz plik
.envna podstawie poniższego szablonu:GOOGLE_MAPS_API=twoj_klucz_google_maps GEMINI_API_KEY=twoj_klucz_gemini
-
Wykonaj migracje bazy danych
python manage.py migrate
-
Stwórz konto administratora
python manage.py createsuperuser
-
Uruchom serwer deweloperski
python manage.py runserver
-
Wejdź do folderu frontend:
cd frontend -
Zainstaluj zależności
npm install
-
Utwórz plik
.envi wypełnij zmienne środowiskowe. -
Uruchom aplikację
npm run dev
Aplikacja frontendowa dostępna pod adresem: http://localhost:5173
Projekt zawiera 16 testów E2E napisanych w Playwright, pokrywających kluczowe flow aplikacji:
| Plik | Testy | Co pokrywa |
|---|---|---|
tests/auth/login.spec.ts |
6 | Formularz logowania, walidacja, redirect, zapis tokenów |
tests/spotCard/spotCard.spec.ts |
5 | Wyświetlanie danych, otwieranie modali, dodawanie/usuwanie ulubionych |
tests/modals/aiModal.spec.ts |
2 | Wysyłanie wiadomości, wyświetlanie odpowiedzi AI |
tests/modals/reservationModal.spec.ts |
3 | Formularz rezerwacji, rezerwacja, anulowanie |
cd frontend
# Wszystkie testy
npx playwright test
# Konkretny plik
npx playwright test tests/spotCard/spotCard.spec.ts
# Z UI Playwright
npx playwright test --uiTesty mockują wszystkie zewnętrzne API (backend, Google Maps, Nominatim) i działają bez uruchomionego serwera backendowego.
| Plik | Testy | Co pokrywa |
|---|---|---|
spots/tests.py |
11 | Tworzenie/usuwanie spotów, rezerwacje z walidacją kategorii, email po rezerwacji, ulubione (API), mapowanie kategorii |
user/tests.py |
2 | Rejestracja użytkownika, walidacja duplikatu emaila |
cd backend
python manage.py test