Kompleksowa platforma blogowa zbudowana przy użyciu Spring Boot, Hibernate i MySQL. System umożliwia tworzenie, edytowanie i publikowanie postów blogowych, zarządzanie komentarzami, tagowanie treści oraz śledzenie statystyk odwiedzin.
- Rejestracja i logowanie użytkowników
- Zarządzanie profilem użytkownika
- Różne poziomy dostępu (administrator, autor, czytelnik)
- Tworzenie, edytowanie i usuwanie postów
- Publikowanie i wycofywanie publikacji
- Wersjonowanie treści
- Wsparcie dla formatowania tekstu i multimediów
- Dodawanie komentarzy do postów
- Moderacja komentarzy
- Hierarchiczna struktura komentarzy (odpowiedzi)
- Dodawanie tagów do postów
- Filtrowanie postów według tagów
- Chmura tagów i sugestie powiązanych treści
- Śledzenie odsłon postów
- Liczenie unikalnych odwiedzających
- Raporty aktywności według dat
- Analiza popularności treści
- Backend: Spring Boot 3.1, Spring Security, Spring Data JPA
- Baza danych: MySQL 8.0
- Uwierzytelnianie: JWT (JSON Web Token)
- Dokumentacja API: Swagger/OpenAPI 3.0
- Testy: JUnit 5, Mockito
- Konteneryzacja: Docker, Docker Compose
- Java 17+
- Maven 3.8+
- MySQL 8.0+
- Docker (opcjonalnie)
- Utwórz bazę danych MySQL:
CREATE DATABASE blog_platform;
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON blog_platform.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;
- Skonfiguruj połączenie z bazą danych w
application.properties
:
spring.datasource.url=jdbc:mysql://localhost:3306/blog_platform
spring.datasource.username=blog_user
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
mvn clean install
mvn spring-boot:run
docker-compose up -d
Aplikacja będzie dostępna pod adresem: http://localhost:8080
Po uruchomieniu aplikacji dokumentacja API Swagger będzie dostępna pod adresem: http://localhost:8080/swagger-ui.html
POST /api/auth/register
- Rejestracja nowego użytkownikaPOST /api/auth/login
- Logowanie użytkownika i generowanie tokenu JWT
GET /api/users
- Pobierz wszystkich użytkownikówGET /api/users/{id}
- Pobierz użytkownika według IDGET /api/users/username/{username}
- Pobierz użytkownika według nazwyPUT /api/users/{id}
- Aktualizuj użytkownikaDELETE /api/users/{id}
- Usuń użytkownika
GET /api/posts
- Pobierz wszystkie postyGET /api/posts/published
- Pobierz wszystkie opublikowane postyGET /api/posts/{id}
- Pobierz post według IDGET /api/posts/author/{userId}
- Pobierz posty według autoraGET /api/posts/tag/{tagId}
- Pobierz posty według taguPOST /api/posts
- Utwórz nowy postPUT /api/posts/{id}
- Aktualizuj postDELETE /api/posts/{id}
- Usuń postPUT /api/posts/{id}/publish
- Opublikuj postPUT /api/posts/{id}/unpublish
- Wycofaj publikację postaPUT /api/posts/{postId}/tags/{tagId}
- Dodaj tag do postaDELETE /api/posts/{postId}/tags/{tagId}
- Usuń tag z posta
GET /api/comments/post/{postId}
- Pobierz komentarze do postaGET /api/comments/user/{userId}
- Pobierz komentarze użytkownikaGET /api/comments/{id}
- Pobierz komentarz według IDPOST /api/comments
- Dodaj nowy komentarzPUT /api/comments/{id}
- Aktualizuj komentarzDELETE /api/comments/{id}
- Usuń komentarz
GET /api/tags
- Pobierz wszystkie tagiGET /api/tags/{id}
- Pobierz tag według IDGET /api/tags/name/{name}
- Pobierz tag według nazwyPOST /api/tags
- Utwórz nowy tagPUT /api/tags/{id}
- Aktualizuj tagDELETE /api/tags/{id}
- Usuń tag
GET /api/statistics/post/{postId}
- Pobierz statystyki dla postaGET /api/statistics/{id}
- Pobierz statystyki według IDGET /api/statistics/post/{postId}/views
- Pobierz całkowitą liczbę wyświetleń postaGET /api/statistics/post/{postId}/unique-visitors
- Pobierz całkowitą liczbę unikalnych odwiedzającychPOST /api/statistics/post/{postId}/view
- Zarejestruj wyświetlenie posta
System używa JWT (JSON Web Token) do autentykacji. Po zalogowaniu, token JWT powinien być dołączany do każdego żądania w nagłówku Authorization
:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
mvn test
mvn verify
Aplikacja obsługuje różne środowiska konfiguracyjne:
application-dev.properties
- Konfiguracja dla środowiska deweloperskiegoapplication-prod.properties
- Konfiguracja dla środowiska produkcyjnego
Aby uruchomić aplikację w konkretnym środowisku:
mvn spring-boot:run -Dspring-boot.run.profiles=dev
lub
java -jar blog-platform.jar --spring.profiles.active=prod
Projekt jest zorganizowany zgodnie z najlepszymi praktykami Spring Boot:
config/
- Klasy konfiguracyjnecontroller/
- Kontrolery REST APIdto/
- Obiekty transferu danychentity/
- Encje bazodanoweexception/
- Obsługa wyjątkówrepository/
- Repozytoria danychsecurity/
- Komponenty bezpieczeństwaservice/
- Warstwa usług
- Utwórz nową gałąź z
main
- Zaimplementuj funkcję
- Napisz testy
- Wyślij pull request
- Używaj standardowego formatowania kodu Java
- Dokumentuj metody publiczne za pomocą JavaDoc
- Stosuj zasady SOLID
- Testuj wszystkie nowe funkcje
- Upewnij się, że serwer MySQL jest uruchomiony
- Sprawdź poprawność danych logowania w
application.properties
- Sprawdź uprawnienia użytkownika bazy danych
- Sprawdź logi aplikacji
- Sprawdź, czy port 8080 nie jest zajęty przez inną aplikację
- Sprawdź kompatybilność wersji Java
Ten projekt jest dostępny na licencji MIT. Szczegóły można znaleźć w pliku LICENSE.
W przypadku pytań lub sugestii, prosimy o kontakt z zespołem deweloperskim.