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:
292
docs/TODO.md
292
docs/TODO.md
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user