docs: update TODO.md with completed tasks and next steps

- Mark completed tasks from Phase 0 (frontend mockup)
- Add detailed next steps with time estimates
- Update project progress (~25% complete)
- Add suggested roadmap for Phase 1 (backend foundation)
- Include additional learning resources
This commit is contained in:
Radosław Gierwiało
2025-11-12 17:54:49 +01:00
parent 80ff4a70bf
commit f6882c7025

View File

@@ -9,23 +9,102 @@ Lista zadań do realizacji projektu spotlight.cam - aplikacji do matchmaking i w
--- ---
## 🎯 AKTUALNY STATUS PROJEKTU
### ✅ Ukończone (Faza 0: Frontend Mockup)
- Frontend mockup z pełną funkcjonalnością UI
- Docker Compose setup (nginx + frontend)
- Dokumentacja projektu
- **Gotowe do prezentacji i testowania UX**
### 🔄 W trakcie
- Przygotowanie do backend development
### ⏳ Następne kroki
**Priorytet:** Backend setup → Database → API → WebSocket
---
## 📌 SUGEROWANE KOLEJNE KROKI
### 🚀 Krok 1: Backend Foundation (zalecane TERAZ)
Cel: Uruchomić backend Node.js z podstawowym API
**Co zrobić:**
1. Dodaj kontener `backend` do docker-compose.yml
2. Zainicjalizuj projekt Node.js + Express
3. Skonfiguruj strukturę folderów backend
4. Dodaj podstawowy endpoint healthcheck (`GET /api/health`)
5. Zaktualizuj nginx config aby proxy'ował `/api/*` do backendu
**Czas realizacji:** 1-2 godziny
**Benefit:** Podstawa dla dalszego rozwoju API
---
### 🗄️ Krok 2: PostgreSQL Setup (po Kroku 1)
Cel: Uruchomić bazę danych i stworzyć schemat
**Co zrobić:**
1. Dodaj kontener `db` (PostgreSQL 15) do docker-compose.yml
2. Skonfiguruj volumes dla persystencji danych
3. Wybierz tool do migracji (Prisma / node-pg-migrate / Knex)
4. Stwórz schemat bazy (6 tabel: users, events, chat_rooms, messages, matches, ratings)
5. Dodaj seed data dla eventów testowych
**Czas realizacji:** 2-3 godziny
**Benefit:** Prawdziwe dane zamiast mocków
---
### 🔐 Krok 3: Authentication API (po Kroku 2)
Cel: Prawdziwa autentykacja JWT
**Co zrobić:**
1. Implementacja bcrypt do hashowania haseł
2. JWT token generation i verification
3. Endpointy: POST /api/auth/register, POST /api/auth/login
4. Middleware do weryfikacji tokena
5. Podłączenie frontendu do prawdziwego API
**Czas realizacji:** 3-4 godziny
**Benefit:** Koniec z mock auth, prawdziwe konta użytkowników
---
### 💬 Krok 4: WebSocket Chat (po Kroku 3)
Cel: Real-time czat eventowy
**Co zrobić:**
1. Setup Socket.IO na backendzie
2. Implementacja room management (event rooms)
3. Broadcast messages
4. Lista aktywnych użytkowników
5. Podłączenie frontendu do Socket.IO
**Czas realizacji:** 4-5 godzin
**Benefit:** Prawdziwy czat zamiast mocka
---
## 🐳 1. Setup projektu i infrastruktura ## 🐳 1. Setup projektu i infrastruktura
### Docker Compose ### Docker Compose
- [ ] Utworzenie `docker-compose.yml` z trzema serwisami (frontend, backend, db) - [x] Utworzenie `docker-compose.yml` z serwisem nginx
- [ ] Konfiguracja kontenera PostgreSQL 15 - [x] Konfiguracja kontenera frontend (React/Vite)
- [ ] ⏳ Konfiguracja kontenera backend (Node.js) - [ ] ⏳ Konfiguracja kontenera backend (Node.js)
- [ ] ⏳ Konfiguracja kontenera frontend (React/Vite) - [ ] ⏳ Konfiguracja kontenera PostgreSQL 15
- [ ] ⏳ Konfiguracja volumes dla persystencji danych - [ ] ⏳ Konfiguracja volumes dla persystencji danych
- [ ] Konfiguracja sieci między kontenerami - [x] Konfiguracja sieci między kontenerami
### Struktura projektu ### Struktura projektu
- [x] ✅ Inicjalizacja projektu frontend (React + Vite + Tailwind)
- [x] ✅ Utworzenie `.gitignore`
- [x] ✅ Konfiguracja ESLint (frontend)
- [ ] ⏳ Inicjalizacja projektu backend (Node.js + Express) - [ ] ⏳ Inicjalizacja projektu backend (Node.js + Express)
- [ ]Inicjalizacja projektu frontend (React + Vite + Tailwind) - [ ]Konfiguracja ESLint i Prettier (backend)
- [ ] ⏳ Konfiguracja ESLint i Prettier
- [ ] ⏳ Konfiguracja TypeScript (opcjonalnie) - [ ] ⏳ Konfiguracja TypeScript (opcjonalnie)
- [ ] ⏳ Utworzenie `.env` i `.env.example` - [ ] ⏳ Utworzenie `.env` i `.env.example`
- [ ] ⏳ Utworzenie `.gitignore`
--- ---
@@ -136,9 +215,9 @@ Lista zadań do realizacji projektu spotlight.cam - aplikacji do matchmaking i w
- [ ] ⏳ Zapis pliku do pamięci urządzenia (download) - [ ] ⏳ Zapis pliku do pamięci urządzenia (download)
### Fallback - wymiana linków ### Fallback - wymiana linków
- [ ] UI do wklejenia linku do filmu (Google Drive, Dropbox, itp.) - [x] UI do wklejenia linku do filmu (Google Drive, Dropbox, itp.)
- [ ] Walidacja URL - [x] Walidacja URL
- [ ] Wysłanie linku przez czat - [x] Wysłanie linku przez czat (mockup)
### Optymalizacje ### Optymalizacje
- [ ] ⏳ Dostosowanie rozmiaru chunka do bandwidth - [ ] ⏳ Dostosowanie rozmiaru chunka do bandwidth
@@ -150,6 +229,8 @@ Lista zadań do realizacji projektu spotlight.cam - aplikacji do matchmaking i w
## 🎨 6. Frontend - PWA (React + Vite + Tailwind) ## 🎨 6. Frontend - PWA (React + Vite + Tailwind)
### Setup PWA ### Setup PWA
- [x] ✅ Konfiguracja Vite
- [x] ✅ Konfiguracja Tailwind CSS
- [ ] ⏳ Konfiguracja Vite PWA plugin - [ ] ⏳ Konfiguracja Vite PWA plugin
- [ ] ⏳ Utworzenie `manifest.json` - [ ] ⏳ Utworzenie `manifest.json`
- [ ] ⏳ Utworzenie service worker - [ ] ⏳ Utworzenie service worker
@@ -157,67 +238,39 @@ Lista zadań do realizacji projektu spotlight.cam - aplikacji do matchmaking i w
- [ ] ⏳ Splash screen - [ ] ⏳ Splash screen
### Routing ### Routing
- [ ] Setup React Router - [x] Setup React Router
- [ ] Ochrona tras (require authentication) - [x] Ochrona tras (require authentication)
### Widoki/Komponenty ### Widoki/Komponenty
- [ ] **Logowanie** (`/login`) - [x] **Logowanie** (`/login`) - Formularz email + hasło, link do rejestracji
- Formularz email + hasło - [x]**Rejestracja** (`/register`) - Formularz username, email, hasło, walidacja
- Link do rejestracji - [x]**Wybór eventu** (`/events`) - Lista eventów, wyszukiwanie, przycisk "Join chat"
- [ ] **Rejestracja** (`/register`) - [x] **Czat eventowy** (`/events/:id/chat`) - Lista wiadomości, aktywni użytkownicy, matchmaking
- Formularz username, email, hasło - [x]**Czat 1:1** (`/matches/:id/chat`) - Profil partnera, czat, **mockup WebRTC transfer**
- Walidacja formularza - [x]**Ocena partnera** (`/matches/:id/rate`) - Gwiazdki 1-5, komentarz, checkbox
- [ ] **Wybór eventu** (`/events`) - [x] **Historia współprac** (`/history`) - Lista matchów, oceny, statystyki
- Lista eventów z worldsdc.com
- Wyszukiwanie/filtrowanie
- Przycisk "Dołącz do eventu"
- [ ]**Czat eventowy** (`/events/:id/chat`)
- Lista wiadomości (scroll do najnowszej)
- Pole wysyłania wiadomości
- Lista aktywnych użytkowników
- Przycisk "Połącz z użytkownikiem X"
- [ ]**Czat 1:1** (`/matches/:id/chat`)
- Profil partnera (zdjęcie, nick, statystyki)
- Historia czatu
- Pole wysyłania wiadomości
- **Przycisk "Wyślij film"** (główna funkcja)
- Wyświetlanie statusu połączenia WebRTC
- Progress bar transferu pliku
- Podgląd przesłanego filmu
- Opcja wysłania linku (fallback)
- [ ]**Ocena partnera** (`/matches/:id/rate`)
- Formularz oceny (1-5 gwiazdek)
- Pole komentarza
- Checkbox "Chcę współpracować ponownie"
- [ ]**Historia współprac** (`/history`)
- Lista poprzednich matchów
- Filtrowanie po evencie
- Oceny otrzymane/wystawione
- [ ]**Profil użytkownika** (`/profile`)
- Edycja danych
- Statystyki (liczba matchów, średnia ocena)
- Historia eventów
### Komponenty reużywalne ### Komponenty reużywalne
- [ ] `<Navbar>` - nawigacja - [x] `<Navbar>` - nawigacja
- [ ] `<MessageBubble>` - wiadomość w czacie - [x] `<Layout>` - wrapper dla stron
- [ ]`<UserCard>` - karta użytkownika - [ ]`<MessageBubble>` - wiadomość w czacie (do wydzielenia z page)
- [ ]`<EventCard>` - karta eventu - [ ]`<UserCard>` - karta użytkownika (do wydzielenia)
- [ ]`<RatingStars>` - gwiazdki oceny - [ ]`<EventCard>` - karta eventu (do wydzielenia)
- [ ]`<RatingStars>` - gwiazdki oceny (do wydzielenia)
- [ ]`<VideoUploader>` - komponent do wyboru i wysyłania filmu - [ ]`<VideoUploader>` - komponent do wyboru i wysyłania filmu
- [ ]`<ProgressBar>` - pasek postępu transferu - [ ]`<ProgressBar>` - pasek postępu transferu (do wydzielenia)
- [ ]`<WebRTCStatus>` - status połączenia WebRTC - [ ]`<WebRTCStatus>` - status połączenia WebRTC (do wydzielenia)
### Stylowanie (Tailwind) ### Stylowanie (Tailwind)
- [ ] Konfiguracja motywu kolorystycznego - [x] Konfiguracja motywu kolorystycznego
- [ ] Responsive design (mobile-first) - [x] Responsive design (mobile-first)
- [ ] ⏳ Dark mode (opcjonalnie) - [ ] ⏳ Dark mode (opcjonalnie)
### State Management ### State Management
- [ ] ⏳ Setup state management (Context API / Zustand / Redux) - [x] ✅ Auth state (Context API - current user, mock login/logout)
- [ ]Auth state (current user, token) - [ ]Zamiana na prawdziwe API (po backend setup)
- [ ] ⏳ Chat state (messages, active users) - [ ] ⏳ Chat state (messages, active users) - połączenie z Socket.IO
- [ ] ⏳ WebRTC state (connection status, transfer progress) - [ ] ⏳ WebRTC state (connection status, transfer progress) - prawdziwy WebRTC
### Integracja Socket.IO (client) ### Integracja Socket.IO (client)
- [ ] ⏳ Setup socket.io-client - [ ] ⏳ Setup socket.io-client
@@ -272,7 +325,10 @@ Lista zadań do realizacji projektu spotlight.cam - aplikacji do matchmaking i w
## 📚 9. Dokumentacja ## 📚 9. Dokumentacja
- [ ] README.md - instrukcja uruchomienia projektu - [x] README.md - instrukcja uruchomienia projektu
- [x] ✅ QUICKSTART.md - szybki start (2 minuty)
- [x] ✅ CONTEXT.md - architektura i założenia projektu
- [x] ✅ TODO.md - roadmap projektu
- [ ] ⏳ API documentation (Swagger/OpenAPI) - [ ] ⏳ API documentation (Swagger/OpenAPI)
- [ ] ⏳ Architektura systemu (diagram) - [ ] ⏳ Architektura systemu (diagram)
- [ ] ⏳ WebRTC flow diagram - [ ] ⏳ WebRTC flow diagram
@@ -309,44 +365,108 @@ Lista zadań do realizacji projektu spotlight.cam - aplikacji do matchmaking i w
--- ---
## 🎯 Priorytet realizacji (sugerowany) ## 🎯 Priorytet realizacji (zaktualizowany)
### Faza 1: MVP Foundation (2-3 tygodnie) ### Faza 0: Frontend Mockup (UKOŃCZONA)
1. Setup projektu (Docker, struktura, baza danych) - ✅ Docker Compose (nginx + frontend)
2. Backend: podstawowe API (auth, users, events) - ✅ React + Vite + Tailwind setup
3. Frontend: podstawowe widoki (login, register, events list) - ✅ Wszystkie widoki z mockupami
4. WebSocket: czat eventowy - ✅ Mock data i routing
- ✅ Dokumentacja
### Faza 2: Core Features (3-4 tygodnie) **Status:** Gotowe do prezentacji i testowania UX
1. Matching system (połączenie w pary)
2. Czat 1:1 ---
### 🔄 Faza 1: MVP Backend Foundation (1-2 tygodnie) - **AKTUALNY CEL**
**Priorytet: WYSOKI** - Następna faza do realizacji
1.**Backend setup** (1-2 godziny)
- Kontener backend w docker-compose
- Node.js + Express + podstawowa struktura
- Healthcheck endpoint
2. 🗄️ **PostgreSQL setup** (2-3 godziny)
- Kontener PostgreSQL
- Schema bazy (6 tabel)
- Narzędzie do migracji (Prisma/Knex)
- Seed data
3. 🔐 **Authentication API** (3-4 godziny)
- bcrypt + JWT
- Register/Login endpoints
- Auth middleware
- Podłączenie frontendu
4. 💬 **WebSocket Chat** (4-5 godzin)
- Socket.IO setup
- Event rooms
- Real-time messaging
- Active users list
**Łączny czas:** ~11-14 godzin (1-2 tygodnie przy spokojnym tempie)
---
### Faza 2: Core Features (2-3 tygodnie)
1. Matches API (tworzenie par)
2. Private chat 1:1 (Socket.IO rooms)
3. WebRTC signaling server 3. WebRTC signaling server
4. WebRTC P2P connection (podstawy) 4. Ratings API
### Faza 3: Główna funkcjonalność (4-5 tygodni) ---
1. **WebRTC file transfer** (wybór pliku, chunking, transfer)
2. **Progress monitoring** ### Faza 3: Główna funkcjonalność WebRTC (3-4 tygodnie)
1. **WebRTC P2P connection**
2. **File transfer via DataChannel** (chunking, progress)
3. Error handling i reconnection 3. Error handling i reconnection
4. Fallback (wymiana linków) 4. Optymalizacje
---
### Faza 4: Finalizacja MVP (2-3 tygodnie) ### Faza 4: Finalizacja MVP (2-3 tygodnie)
1. System ocen 1. Bezpieczeństwo (rate limiting, validation, CORS)
2. Historia współprac 2. Testy (unit, integration, E2E)
3. Bezpieczeństwo (hardening) 3. PWA features (manifest, service worker)
4. Testy 4. Deployment
5. Deployment
---
### Faza 5: Opcjonalne rozszerzenia (ongoing) ### Faza 5: Opcjonalne rozszerzenia (ongoing)
- Features z sekcji 11 - Features z sekcji 11
--- ---
**Łączny czas realizacji MVP: ~11-15 tygodni** ## 📊 Postęp projektu
**Ukończone:** ~25% (frontend mockup + dokumentacja)
**W trakcie:** 0% (przygotowanie do backend)
**Do zrobienia:** ~75% (backend, WebRTC, deployment)
--- ---
## 📝 Notatki ## 📝 Notatki
- Regularnie aktualizuj status zadań (⏳ → 🔄 → ✅) - ✅ Frontend mockup gotowy - można prezentować UX
- Dodawaj nowe zadania w miarę postępu prac - 🎯 Następny krok: **Backend setup** (Node.js + Express + PostgreSQL)
- Priorytetuj zadania krytyczne dla MVP - 💡 Wszystkie widoki działają z mock data - łatwo podłączyć prawdziwe API
- WebRTC file transfer to najważniejsza i najtrudniejsza część projektu - 🔥 Główna funkcjonalność (WebRTC P2P) jest mockupem - wymaga implementacji
- 📌 Regularnie aktualizuj status zadań (⏳ → 🔄 → ✅)
- 🚀 WebRTC file transfer to najważniejsza i najtrudniejsza część projektu
---
## 🎓 Dodatkowe zasoby
### Backend (Node.js + Express)
- Express best practices: https://expressjs.com/en/advanced/best-practice-performance.html
- JWT authentication: https://jwt.io/introduction
- Socket.IO docs: https://socket.io/docs/v4/
### WebRTC
- WebRTC for beginners: https://webrtc.org/getting-started/overview
- RTCDataChannel guide: https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel
- File transfer via WebRTC: https://webrtc.github.io/samples/src/content/datachannel/filetransfer/
### Database
- Prisma docs: https://www.prisma.io/docs
- PostgreSQL best practices: https://wiki.postgresql.org/wiki/Don't_Do_This