docs: translate README.md to English

This commit is contained in:
Radosław Gierwiało
2025-11-13 21:53:53 +01:00
parent 21ba899f98
commit 8c637469fd

246
README.md
View File

@@ -1,60 +1,60 @@
# spotlight.cam 🎥
Aplikacja webowa (PWA) dla społeczności tanecznej umożliwiająca matchmaking, czatowanie i wymianę nagrań wideo bezpośrednio przez WebRTC (peer-to-peer).
Web application (PWA) for the dance community enabling matchmaking, chat, and video file exchange directly via WebRTC (peer-to-peer).
## 🚀 Funkcjonalności
## 🚀 Features
### ✅ Zaimplementowane
### ✅ Implemented
**Autoryzacja & Bezpieczeństwo:**
-**JWT Authentication** - prawdziwa autoryzacja z bcrypt password hashing
-**Email Verification** - weryfikacja email przez AWS SES (link + PIN code)
-**Password Reset** - pełny workflow resetowania hasła
-**WSDC Integration** - auto-fill danych z worldsdc.com podczas rejestracji
-**Event Slugs** - unikalne alfanumeryczne identyfikatory zapobiegające ID enumeration attacks
**Authentication & Security:**
-**JWT Authentication** - real authentication with bcrypt password hashing
-**Email Verification** - email verification via AWS SES (link + PIN code)
-**Password Reset** - complete password reset workflow
-**WSDC Integration** - auto-fill data from worldsdc.com during registration
-**Event Slugs** - unique alphanumeric identifiers preventing ID enumeration attacks
**Profile użytkowników:**
-**User Profiles** - edycja profilu (imię, nazwisko, WSDC ID)
**User Profiles:**
-**User Profiles** - profile editing (first name, last name, WSDC ID)
-**Social Media Links** - YouTube, Instagram, Facebook, TikTok
-**Location** - kraj (dropdown z 195 krajami) i miasto
-**Public Profiles** - widoczne dla innych zalogowanych pod /{username}
-**Profile Statistics** - liczba matchów, średnia ocena, liczba recenzji
-**Location** - country (dropdown with 195 countries) and city
-**Public Profiles** - visible to other logged-in users at /{username}
-**Profile Statistics** - number of matches, average rating, number of reviews
**Eventy & Chat:**
-**Event List** - przeglądanie eventów tanecznych z worldsdc.com
-**Event Participation Tracking** - automatyczne zapisywanie dołączonych eventów
-**Real-time Event Chat** - Socket.IO chat dla uczestników eventu
-**Active Users Sidebar** - lista użytkowników online w evencie
-**Message History** - persistencja wiadomości w bazie danych
-**Infinite Scroll** - ładowanie starszych wiadomości
**Events & Chat:**
-**Event List** - browse dance events from worldsdc.com
-**Event Participation Tracking** - automatic saving of joined events
-**Real-time Event Chat** - Socket.IO chat for event participants
-**Active Users Sidebar** - list of online users in the event
-**Message History** - message persistence in database
-**Infinite Scroll** - loading older messages
**Matchmaking & Private Chat:**
-**Matchmaking** - łączenie się w pary bezpośrednio z czatu eventowego
-**Private 1:1 Chat** - prywatny czat dla sparowanych użytkowników z Socket.IO
-**Matchmaking** - pairing directly from event chat
-**Private 1:1 Chat** - private chat for matched users with Socket.IO
**Backend & Infrastructure:**
-**PostgreSQL Database** - 7 tabel z relacjami (Prisma ORM)
-**RESTful API** - Express.js backend z walidacją
-**WebSocket** - Socket.IO dla real-time communication
-**Docker Compose** - pełna orkiestracja (nginx, frontend, backend, PostgreSQL)
-**PostgreSQL Database** - 7 tables with relations (Prisma ORM)
-**RESTful API** - Express.js backend with validation
-**WebSocket** - Socket.IO for real-time communication
-**Docker Compose** - full orchestration (nginx, frontend, backend, PostgreSQL)
-**Test Coverage** - 81%+ coverage (Jest + Supertest)
### 🔜 W trakcie implementacji
### 🔜 In Progress
-**Matches API** - create/accept match requests
-**Ratings API** - ocenianie partnera po współpracy (1-5 gwiazdek)
-**Ratings API** - rate partner after collaboration (1-5 stars)
-**WebRTC Signaling** - SDP/ICE exchange via Socket.IO
-**WebRTC P2P Transfer** - prawdziwy transfer plików przez RTCDataChannel
-**WebRTC P2P Transfer** - real file transfer via RTCDataChannel
## 🛠️ Stack Technologiczny
## 🛠️ Tech Stack
### Frontend
- **React 18** - framework UI
- **Vite** - build tool i dev server
- **Tailwind CSS v3.4.0** - stylowanie
- **React 18** - UI framework
- **Vite** - build tool and dev server
- **Tailwind CSS v3.4.0** - styling
- **React Router** - routing
- **Lucide React** - ikony
- **Context API** - zarządzanie stanem (auth)
- **Lucide React** - icons
- **Context API** - state management (auth)
- **Socket.IO Client** - real-time WebSocket communication
### Backend
@@ -73,7 +73,7 @@ Aplikacja webowa (PWA) dla społeczności tanecznej umożliwiająca matchmaking,
- **Nginx** - reverse proxy & static file serving
- **Alpine Linux** - lightweight container base images
## 📁 Struktura projektu
## 📁 Project Structure
```
spotlightcam/
@@ -135,31 +135,31 @@ spotlightcam/
└── RESOURCES.md # Learning resources
```
## 🚀 Uruchomienie projektu
## 🚀 Getting Started
### Wymagania
- Docker i Docker Compose
- (Opcjonalnie) Node.js 20+ dla developmentu bez Dockera
### Requirements
- Docker and Docker Compose
- (Optional) Node.js 20+ for development without Docker
### Development Mode
1. Sklonuj repozytorium:
1. Clone the repository:
```bash
git clone <repo-url>
cd spotlightcam
```
2. Skopiuj przykładowy plik .env:
2. Copy example .env file:
```bash
cp backend/.env.example backend/.env
```
3. Uruchom Docker Compose z profilem dev:
3. Start Docker Compose with dev profile:
```bash
docker compose --profile dev up
```
4. Otwórz przeglądarkę:
4. Open browser:
```
http://localhost:8080
```
@@ -170,7 +170,7 @@ http://localhost:8080
docker compose --profile prod up -d
```
### Dostęp do usług
### Service Access
**Development:**
- Frontend: http://localhost:8080
@@ -184,7 +184,7 @@ docker compose --profile prod up -d
- HTTPS: https://localhost (port 443, requires SSL certificates)
- PostgreSQL: internal only (not exposed)
### Zatrzymanie
### Stopping Services
```bash
# Development
@@ -194,7 +194,7 @@ docker compose --profile dev down
docker compose --profile prod down
```
### Rebuild po zmianach
### Rebuild After Changes
```bash
docker compose --profile dev down
@@ -203,9 +203,9 @@ docker compose --profile dev up --build
## 🗄️ Database Schema
7 tables z relacjami (Prisma ORM):
7 tables with relations (Prisma ORM):
1. **users** - użytkownicy
1. **users** - users
- Base: id, username, email, password_hash, avatar, created_at, updated_at
- WSDC: first_name, last_name, wsdc_id
- Email: email_verified, verification_token, verification_code, verification_token_expiry
@@ -213,111 +213,111 @@ docker compose --profile dev up --build
- Social: youtube_url, instagram_url, facebook_url, tiktok_url
- Location: country, city
2. **events** - eventy taneczne
2. **events** - dance events
- id, slug (unique), name, location, start_date, end_date, description, worldsdc_id, participants_count
3. **event_participants** - uczestnicy eventów (many-to-many)
3. **event_participants** - event participants (many-to-many)
- id, user_id, event_id, joined_at
4. **chat_rooms** - pokoje czatu
4. **chat_rooms** - chat rooms
- id, event_id, type (event/private), created_at
5. **messages** - wiadomości
5. **messages** - messages
- id, room_id, user_id, content, type (text/link/video), created_at
6. **matches** - pary użytkowników
6. **matches** - user pairs
- id, user1_id, user2_id, event_id, room_id, status (pending/accepted/completed), created_at
7. **ratings** - oceny
7. **ratings** - ratings
- id, match_id, rater_id, rated_id, score (1-5), comment, would_collaborate_again, created_at
### Migracje
### Migrations
```bash
# Rozwój (w kontenerze backend)
# Development (inside backend container)
docker compose exec backend npx prisma migrate dev
# Produkcja
# Production
docker compose exec backend-prod npx prisma migrate deploy
# Generowanie Prisma Client
# Generate Prisma Client
docker compose exec backend npx prisma generate
```
### Seed data
### Seed Data
```bash
docker compose exec backend npx prisma db seed
```
Dodaje:
- 3 eventy (Warsaw, Barcelona, Herräng)
- 2 użytkowników (john_doe, jane_smith)
Adds:
- 3 events (Warsaw, Barcelona, Herräng)
- 2 users (john_doe, jane_smith)
- Event chat rooms
## 🧪 Testowanie aplikacji
## 🧪 Testing the Application
### Flow testowy:
### Test Flow:
1. **Rejestracja z WSDC** (http://localhost:8080/register)
- Opcjonalnie: podaj WSDC ID (np. 12345) dla auto-fill danych
- Wypełnij formularz rejestracji
- Otrzymasz email weryfikacyjny (sprawdź AWS SES sandbox)
1. **Registration with WSDC** (http://localhost:8080/register)
- Optional: provide WSDC ID (e.g., 12345) for auto-fill
- Complete registration form
- You'll receive verification email (check AWS SES sandbox)
2. **Weryfikacja Email** (http://localhost:8080/verify-email)
- Kliknij link z emaila LUB wpisz 6-cyfrowy kod PIN
- Email zostanie zweryfikowany
2. **Email Verification** (http://localhost:8080/verify-email)
- Click link from email OR enter 6-digit PIN code
- Email will be verified
3. **Logowanie** (http://localhost:8080/login)
3. **Login** (http://localhost:8080/login)
- Email: john@example.com
- Password: password123
4. **Edycja profilu** (http://localhost:8080/profile)
- Uzupełnij social media links (Instagram, YouTube, etc.)
- Wybierz kraj z listy 195 krajów
- Podaj miasto
- Edytuj WSDC ID, imię, nazwisko
4. **Profile Editing** (http://localhost:8080/profile)
- Add social media links (Instagram, YouTube, etc.)
- Select country from list of 195 countries
- Enter city
- Edit WSDC ID, first name, last name
5. **Wybór eventu** (http://localhost:8080/events)
- Zobacz listę eventów (dołączone wyświetlają się na górze)
- Wybierz event (np. "Warsaw Dance Festival 2025")
- Kliknij "Join chat" lub "Open chat" (jeśli już dołączyłeś)
5. **Event Selection** (http://localhost:8080/events)
- View event list (joined events appear at top)
- Select event (e.g., "Warsaw Dance Festival 2025")
- Click "Join chat" or "Open chat" (if already joined)
6. **Czat eventowy**
- Real-time chat z Socket.IO
- Po prawej stronie lista aktywnych użytkowników online
- Kliknij ikonę "+" przy użytkowniku aby się z nim połączyć
- Zostaniesz przekierowany do prywatnego czatu 1:1
6. **Event Chat**
- Real-time chat with Socket.IO
- Active users list on the right side
- Click "+" icon next to user to connect
- You'll be redirected to private 1:1 chat
7. **Czat 1:1 - WebRTC (mockup)** 🔥
- Zobacz profil partnera na górze (kliknij username aby zobaczyć public profile)
- Status WebRTC połączenia (disconnected/connecting/connected)
- **Wysyłanie filmu przez WebRTC (mockup):**
- Kliknij "Wyślij film (WebRTC)"
- Wybierz plik wideo z dysku
- Zobacz symulację transferu P2P
- **Fallback - wysyłanie linku:**
- Kliknij "Link"
- Wklej URL do filmu (Google Drive, Dropbox, etc.)
7. **1:1 Chat - WebRTC (mockup)** 🔥
- See partner's profile at top (click username to view public profile)
- WebRTC connection status (disconnected/connecting/connected)
- **Sending video via WebRTC (mockup):**
- Click "Send video (WebRTC)"
- Select video file from disk
- See P2P transfer simulation
- **Fallback - link sharing:**
- Click "Link"
- Paste video URL (Google Drive, Dropbox, etc.)
8. **Ocena partnera** (coming soon - Matches & Ratings API)
- Kliknij "Zakończ i oceń"
- Wybierz ocenę (1-5 gwiazdek)
- Dodaj komentarz
- Zaznacz czy chcesz współpracować ponownie
8. **Rate Partner** (coming soon - Matches & Ratings API)
- Click "Finish and rate"
- Select rating (1-5 stars)
- Add comment
- Mark if you want to collaborate again
9. **Historia współprac** (http://localhost:8080/history)
- Zobacz listę matchów
- Zobacz otrzymane oceny
- Zobacz statystyki
9. **Collaboration History** (http://localhost:8080/history)
- See list of matches
- See received ratings
- See statistics
10. **Public Profiles**
- Kliknij na username innego użytkownika
- Zobacz profil: avatar, lokalizacja, social media, statystyki
- Click on another user's username
- View profile: avatar, location, social media, statistics
## 🔐 Bezpieczeństwo
## 🔐 Security
### Zaimplementowane zabezpieczenia:
### Implemented Security Features:
**Authentication:**
- bcrypt password hashing (10 salt rounds)
@@ -351,7 +351,7 @@ Dodaje:
- Room-based access control
- User verification before joining rooms
### Planowane zabezpieczenia (Phase 3):
### Planned Security Features (Phase 3):
⏳ CORS configuration
⏳ CSRF protection (cookies)
@@ -416,26 +416,26 @@ docker compose exec backend npm run test:coverage
- Video compression
- Multi-file transfer
## 📖 Dokumentacja
## 📖 Documentation
**Quick Start:**
- `docs/SESSION_CONTEXT.md` - Szybki kontekst dla wznowienia sesji (minimal tokens)
- `docs/SESSION_CONTEXT.md` - Quick context for resuming sessions (minimal tokens)
**Main Documentation:**
- `docs/CONTEXT.md` - Główny opis projektu i założeń
- `docs/TODO.md` - Aktywne zadania i roadmap
- `docs/CONTEXT.md` - Main project description and assumptions
- `docs/TODO.md` - Active tasks and roadmap
**Detailed Documentation:**
- `docs/ARCHITECTURE.md` - Szczegóły techniczne i implementacyjne
- `docs/PHASE_1.5.md` - Dokumentacja Phase 1.5 (Email & WSDC)
- `docs/ARCHITECTURE.md` - Technical details and implementation
- `docs/PHASE_1.5.md` - Phase 1.5 documentation (Email & WSDC)
- `docs/SECURITY_AUDIT.md` - Security audit & fixes
- `docs/DEPLOYMENT.md` - Deployment guide
- `docs/COMPLETED.md` - Archiwum ukończonych zadań
- `docs/RESOURCES.md` - Linki do dokumentacji i zasobów edukacyjnych
- `docs/COMPLETED.md` - Completed tasks archive
- `docs/RESOURCES.md` - Links to documentation and learning resources
## 🤝 Contributing
Projekt jest w fazie rozwoju. Aktualnie implementujemy Phase 2 (Matches & Ratings API, WebRTC P2P transfer).
Project is in development phase. Currently implementing Phase 2 (Matches & Ratings API, WebRTC P2P transfer).
### Git workflow:
```bash
@@ -444,7 +444,7 @@ git add .
git commit -m "feat: description"
```
**Uwaga:** Commit messages bez wzmianek o AI/automatycznym generowaniu.
**Note:** Commit messages without mentions of AI/automatic generation.
## 📄 License
@@ -452,6 +452,6 @@ TBD
---
**Current Status:** Phase 1.5 ✅ Completed | Phase 2 ⏳ In Progress (60% overall)
**Current Status:** Phase 1.5 ✅ Completed | Phase 2 ⏳ In Progress (65% overall)
**Last Updated:** 2025-11-13