docs: simplify readme and add security warning

Streamline project documentation by removing lengthy specification
and replacing with concise quick-start guide. Add explicit security
warning about hardcoded credentials in docker-compose.yml for lab
environment.
This commit is contained in:
2026-04-28 21:02:49 +02:00
parent 9c402dc05e
commit 7f0f292b47
+19 -108
View File
@@ -1,123 +1,34 @@
# Discord Clone # Discord Clone
* `uv` jako główne narzędzie do zarządzania pakietami i wirtualnymi środowiskami > ⚠️ **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.**
* workdir przygotowany przy użyciu `uv init .` i `uv venv`
--- ## Uruchomienie
### Cel zadania **Wymagania:** Docker i Docker Compose.
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:
```bash ```bash
docker-compose up --build 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`). ## Konto administratora
* 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`.
--- | Pole | Wartość |
|-------|---------|
| Login | `admin` |
| Hasło | `admin` |
## 🚀 Jak uruchomić projekt ## Role i uprawnienia
1. **Wymagania**: Upewnij się, że masz zainstalowane **Docker** oraz **Docker Compose**. | Rola | Uprawnienia |
2. **Uruchomienie aplikacji**: | ---- | ----------- |
Otwórz terminal w głównym katalogu projektu i uruchom: | **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 Panel administracyjny dostępny z paska nawigacji po zalogowaniu jako administrator.
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.