Ten projekt jest obecnie rozwijany w celu pogłębienia moich umiejętności w zakresie Spring Boot, Hibernate, projektowania REST API oraz wstrzykiwania zależności.
Idea:
Mój pierwszy poważniejszy projekt Client-Server Application stworzyłem bez użycia żadnych frameworków. Czysta Java, model client-server oraz sockety. Po prostu kod, który działał i pozwolił mi zrozumieć komunikacje.
Znam już logikę działania tej aplikacji, więc teraz "przenoszę" ją do frameworka, dzięki czemu mogę się skoncentrować na nauce Spring Boota i Hibernate'a, a nie na wymyślaniu funkcjonalności.
🎯 Aktualne funkcjonalności (stale robudowywane)
- Zarządzanie użytkownikami: tworzenie użytkowników i przypisywanie ról (ADMIN, USER)
- Uwierzytelnianie JWT: logowanie użytkowników i generowanie tokenów JWT
- REST API: udostępnione endpointy dla kluczowych funkcjonalności aplikacji
- Integracja z bazą danych: PostgreSQL w produkcji, H2 w testach
- Automatyczne migracje bazy danych: zarządzanie zmianami schematu bazy za pomocą Flyway
- Konfiguracja środowiskowa: użycie pliku
.env
🚀 Technologie i biblioteki
- Java 21
- Spring Boot 3.4.4
- Spring MVC (Web)
- Spring Security
- Spring Data JPA
- Hibernate / JPA
- Bazy danych PostgreSQL i H2
- JWT
- Flyway
- Spring Dotenv
- Lombok
- BCrypt (szyfrowanie haseł)
- Docker & Docker Compose
- Maven
🧪 Stack testowy
- Spring Boot Test
- MockMvc
- JUnit 5
- Mockito
📂 Struktura projektu
. ├── src │ ├── main │ │ ├── java/com/jakubbone │ │ │ ├── config # Konfiguracja zabezpieczeń i Flyway │ │ │ ├── controller # Endpointy REST API │ │ │ ├── dto # Obiekty transferu danych │ │ │ ├── model # Modele encji JPA │ │ │ ├── repository # Repozytoria JPA │ │ │ └── utils # Narzędzia (JWT) │ │ └── resources │ │ ├── db/migration # Skrypty migracyjne Flyway (PostgreSQL i H2) │ │ ├── application.properties │ │ └── application-test.properties │ └── test # Testy jednostkowe i integracyjne ├── Dockerfile # Budowanie obrazu Dockera ├── docker-compose.yml # Orkiestracja kontenerów ├── pom.xml # Zarządzanie zależnościami Maven └── .env # Zmienne konfiguracyjne
🌐 API
Metoda | Endpoint | Opis |
POST | /api/login | Logowanie, uwierzytelnianie i generowanie tokenu JWT |
GET | /api/uptime | Zwraca aktualną wersję aplikacji |
GET | /api/info | Zwraca czas działania aplikacji w sekundach |
🔗 Repozytorium
SpringBoot-Mailing-System
jakubBone • Updated Jun 4, 2025