diff --git a/README.md b/README.md index a513432..91909d4 100644 --- a/README.md +++ b/README.md @@ -1,123 +1,34 @@ # Discord Clone -* `uv` jako główne narzędzie do zarządzania pakietami i wirtualnymi środowiskami -* workdir przygotowany przy użyciu `uv init .` i `uv venv` +> ⚠️ **UWAGA BEZPIECZEŃSTWO**: Repozytorium zawiera hardcodowane klucze w `docker-compose.yml` (`SECRET_KEY`, hasło bazy danych). Są one celowo uproszczone na potrzeby lokalnego środowiska laboratoryjnego – **nie używaj tych wartości w produkcji ani środowiskach publicznych.** ---- +## Uruchomienie -### Cel zadania - -Stworzenie webowej aplikacji komunikacyjnej inspirowanej platformą Discord. Aplikacja umożliwia komunikację w czasie rzeczywistym, zarządzanie rolami i uprawnieniami oraz udostępnia interfejs responsywny. - -### Wymagania funkcjonalne - -1. **System użytkowników** - * Rejestracja (login, email, hasło) - * Logowanie i wylogowanie - * Walidacja (unikalny login i email, siła hasła) - * Edycja profilu (awatar, opis) - -2. **Role i uprawnienia** (minimum 3 role) - * *Administrator* – pełny dostęp, zarządzanie użytkownikami i kanałami - * *Moderator* – zarządzanie wiadomościami, blokowanie użytkowników - * *Użytkownik* – wysyłanie wiadomości, korzystanie z kanałów - * Dynamiczne przypisywanie ról, egzekwowanie uprawnień w backendzie - -3. **Komunikacja** - * Kanały publiczne/grupowe: tworzenie, dołączanie, historia wiadomości - * Wiadomości prywatne (DM) między dwoma użytkownikami - * Obsługa czasu rzeczywistego (WebSocket, np. Django Channels + PostgreSQL) - -4. **Multimedia** - * Wiadomości tekstowe, obrazy, nagrania audio (pliki dźwiękowe) - -5. **Moderacja** - * Blokowanie użytkowników, usuwanie wiadomości - * (Opcjonalnie) zgłaszanie wiadomości/użytkowników - -6. **Funkcje dodatkowe (mile widziane)** - * Status online/offline, powiadomienia o nowych wiadomościach - * Wyszukiwanie użytkowników/kanałów, emoji/reakcje - -### Frontend - -- Interfejs inspirowany Discordem (responsywny) -* Wykorzystanie frameworka Bootstrap -* Estetyczne formularze logowania i rejestracji (gotowe szablony CSS) -* Obsługa WebSocket po stronie klienta (np. JavaScript) - -### Backend - -- Framework: **Django** (zalecane rozszerzenia: Django REST Framework, Django Channels) -* WebSocket do komunikacji w czasie rzeczywistym (z użyciem PostgreSQL jako warstwy kanałów – `channels_postgres`) -* Obsługa przesyłania plików (obrazy, audio) -* Własna strona błędu 404 i 500 - -### Środowisko uruchomieniowe – **kontenery Docker** - -Aplikacja nie wymaga hostowania na zewnętrznych platformach. Całość musi być gotowa do uruchomienia w kontenerach za pomocą **Docker** i **Docker Compose**. - -Pliki wymagane w repozytorium: -* `Dockerfile` – budujący obraz aplikacji Django (wraz z zależnościami, np. z pliku `requirements.txt`) -* `docker-compose.yml` – definiujący wszystkie usługi niezbędne do działania systemu, co najmniej: - * `web` – serwer Django (z obsługą ASGI np. Daphne/Uvicorn dla WebSocket) - * `db` – baza danych PostgreSQL - * `db` – baza danych PostgreSQL (używana również jako warstwa kanałów dla Django Channels via `channels_postgres`) -* Plik `.env` lub komentarze w `docker-compose.yml` wskazujące, jak skonfigurować zmienne środowiskowe (np. `SECRET_KEY`, dane dostępowe do bazy) - -Uruchomienie aplikacji sprowadza się do: +**Wymagania:** Docker i Docker Compose. ```bash docker-compose up --build ``` -Po starcie wszystkie migracje powinny zostać wykonane automatycznie, a aplikacja dostępna pod `http://localhost:8000`. +Po starcie: -### Sposób oddania pracy +- migracje bazy danych zostaną wykonane automatycznie, +- domyślne konto administratora zostanie utworzone, +- aplikacja dostępna pod [http://localhost:8000](http://localhost:8000). -- Repozytorium kodu (np. GitHub, GitLab) zawierające cały projekt, w tym `Dockerfile`, `docker-compose.yml` oraz instrukcję uruchomienia (`README.md` z komendą `docker-compose up`). -* Link do repozytorium umieszczony w pliku `.txt` na platformie Moodle. -* Nie jest wymagane żadne publiczne wdrożenie – oceniana będzie poprawność działania lokalnego po wykonaniu `docker-compose up`. +## Konto administratora ---- +| Pole | Wartość | +|-------|---------| +| Login | `admin` | +| Hasło | `admin` | -## 🚀 Jak uruchomić projekt +## Role i uprawnienia -1. **Wymagania**: Upewnij się, że masz zainstalowane **Docker** oraz **Docker Compose**. -2. **Uruchomienie aplikacji**: - Otwórz terminal w głównym katalogu projektu i uruchom: +| Rola | Uprawnienia | +| ---- | ----------- | +| **Administrator** | Pełny dostęp: zarządzanie użytkownikami, rolami, kanałami i wiadomościami | +| **Moderator** | Usuwanie wiadomości, blokowanie użytkowników | +| **Użytkownik** | Tworzenie kanałów, wysyłanie wiadomości, DM, usuwanie własnych wiadomości | - ```bash - docker-compose up --build - ``` - -3. **Automatyczna inicjalizacja**: - * Uruchomi się baza danych PostgreSQL oraz serwer webowy Daphne. - * Migracje bazy danych zostaną wygenerowane i zaaplikowane automatycznie. - * Domyślne konto **Administratora** zostanie stworzone. -4. **Dostęp do aplikacji**: - Otwórz przeglądarkę i wejdź na: [http://localhost:8000](http://localhost:8000) - -## 👑 Przewodnik dla Administratora - -**Domyślne dane logowania (Administrator):** -* **Login**: `admin` -* **Hasło**: `admin` - -**Funkcje i uprawnienia:** -* **Panel Administracyjny**: Dostępny z paska nawigacji po zalogowaniu. Pozwala na przegląd użytkowników, zmianę ról (Administrator, Moderator, Użytkownik) oraz globalne blokowanie/odblokowywanie. -* **Hierarchia ról**: - * **Administrator** ma pełny dostęp do wszystkich kanałów, może usuwać dowolne wiadomości i kanały, a także zarządzać rolami. - * **Moderator** może usuwać nieodpowiednie wiadomości i blokować użytkowników, ale nie może zmieniać ról. - * **Użytkownik** może tworzyć kanały, pisać w nich, wysyłać wiadomości prywatne i usuwać własne wiadomości. - -## ✅ Zgodność z wymaganiami - -Projekt w pełni realizuje założenia: - -1. **System użytkowników**: Wbudowana rejestracja, logowanie, walidacja unikalności oraz panel edycji profilu (awatar, opis). -2. **Role i uprawnienia**: Działają 3 wymagane role (Admin, Moderator, Użytkownik). Backend skutecznie weryfikuje uprawnienia. -3. **Komunikacja w czasie rzeczywistym**: Wiadomości w kanałach publicznych oraz DM opierają się na technologii WebSockets (Django Channels + `channels_postgres`). -4. **Multimedia**: Dodano obsługę przesyłania plików, które od razu po przesłaniu wyświetlają się innym użytkownikom jako obrazy lub odtwarzacze audio. -5. **Moderacja**: Administrator/Moderator może usuwać niepożądane wiadomości oraz całkowicie blokować dostęp wybranym użytkownikom. -6. **Środowisko Docker**: Całość działa w odseparowanych kontenerach (web, db) uruchamianych jednym poleceniem, z automatycznymi migracjami i początkowym seedowaniem bazy. +Panel administracyjny dostępny z paska nawigacji po zalogowaniu jako administrator.