Spis treści

REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024×768

Zadania do samodzielnego wykonania

Zadania od prostych do zaawansowanych.

ZADANIA PROSTE

Zadanie 1.1: Aplikacja do zarządzania notatkami (proste)

Opis: Utwórz prostą aplikację Spring Boot do zarządzania notatkami. Notatka zawiera tytuł, treść i datę utworzenia.

Wymagania: - Utwórz model Note z polami: id, title (tytuł), content (treść), createdDate (data) - Utwórz repozytorium w pamięci (HashMap) - REST API:

- Zwracaj odpowiednie kody HTTP (200, 201, 404, 204)

Wskazówki: - Użyj java.time.LocalDateTime do przechowywania daty - Notatka powinna być tworzona z bieżącą datą - Testuj API przy użyciu Postman lub curl

Przykład żądania POST:

POST /api/notes
Content-Type: application/json
 
{
  "title": "Moja pierwsza notatka",
  "content": "To jest zawartość notatki"
}

Zadanie 1.2: Kalkulator REST API

Opis: Utwórz REST API do wykonywania operacji matematycznych (dodawanie, odejmowanie, mnożenie, dzielenie).

Wymagania: - Endpoints:

- Obsługuj błędy (np. dzielenie przez zero) - Zwracaj wynik jako JSON: {„result”: 8, „operation”: „add”}

Wskazówki: - Użyj @RequestParam do pobierania parametrów - Sprawdzaj dzielenie przez zero i zwracaj błąd 400 - Utwórz serwis CalculatorService do obliczeń

Zadanie 1.3: API do konwersji jednostek

Opis: Utwórz API do konwersji jednostek (temperatury, długości, masy).

Wymagania: - Konwersje temperatury:

- Konwersje długości:

- Konwersje masy:

Wskazówki: - Zwracaj wynik z dokładnością do 2 miejsc po przecinku - Obsługuj błędne jednostki - Utwórz model ConversionResult z polami: value, unit, originalValue, originalUnit

Zadanie 1.4: Generator kodów promocyjnych

Opis: Utwórz API generujące losowe kody promocyjne.

Wymagania: - GET /api/promo/generate - generuje losowy kod (np. PROMO2024ABC) - GET /api/promo/list - lista wszystkich wygenerowanych kodów - POST /api/promo/validate - weryfikuje kod (sprawdza czy istnieje) - Kody powinny być przechowywane w aplikacji

Wskazówki: - Użyj UUID lub Random do generowania kodów - Przechowuj kody w Set<String> - Timestamp powienien być zapisywany z każdym kodem

ZADANIA ŚREDNIE

Zadanie 2.1: Aplikacja do zarządzania zadaniami (TODO)

Opis: Utwórz aplikację do zarządzania listą zadań (TODO). Każde zadanie ma tytuł, opis, status (nowe, w toku, ukończone) i termin.

Wymagania: - Model Task z polami: id, title, description, status, dueDate, createdDate - REST API:

- Zwracaj zadania posortowane po dacie terminu - Sprawdzaj termin - niech API zwraca info o zaległych zadaniach

Wskazówki: - Użyj enum TaskStatus dla statusów - Sortuj przy użyciu Comparator lub Stream API - Zwracaj informacje o liczbie zadań w każdym statusie

Przykład odpowiedzi:

{
  "tasks": [...],
  "summary": {
    "total": 10,
    "pending": 3,
    "inProgress": 2,
    "completed": 5
  }
}

Zadanie 2.2: Blog REST API z tagami

Opis: Utwórz API bloga z artykułami, tagami i autorami. Artykuł może mieć wiele tagów, autora i komentarze.

Wymagania: - Modele: Article, Tag, Author, Comment - REST API:

- Filtrowanie po autorze: GET /api/articles/author/{authorId} - Paginacja: GET /api/articles?page=0&size=10

Wskazówki: - Użyj relacji many-to-many dla artykułów i tagów - Przechowuj artyduły w bazie (H2 lub MySQL) - Spring Data JPA obsługuje custom queries

Zadanie 2.3: API do raportowania błędów

Opis: Utwórz system do raportowania i śledzenia błędów w aplikacji.

Wymagania: - Model BugReport z polami: id, title, description, severity (LOW, MEDIUM, HIGH, CRITICAL), status (NEW, IN_PROGRESS, RESOLVED), reporter, assignee, createdDate - REST API:

- Dashboard: GET /api/bugs/dashboard - statystyka błędów - Zwracaj błędy posortowane po ważności i dacie

Wskazówki: - Użyj enum BugSeverity i BugStatus - Implementuj obsługę błędów dla niepoprawnych wartości - Zwracaj statystykę w formacie JSON

Zadanie 2.4: API do rezerwacji hotelu

Opis: Utwórz API do zarządzania rezerwacjami pokojów w hotelu.

Wymagania: - Modele: Room, Reservation, Guest - Pokój ma: id, number, type (single, double, suite), price, capacity - Rezerwacja ma: id, room, guest, checkInDate, checkOutDate, status, totalPrice - REST API:

- Sprawdzaj konflikty rezerwacji - Obliczaj cenę na podstawie liczby nocy

Wskazówki: - Przechowuj rezerwacje w bazie - Obsługuj walidację dat - Sprawdzaj dostępność pokojów przed rezerwacją

ZADANIA ZAAWANSOWANE

Zadanie 3.1: System zarządzania sklepem internetowym

Opis: Utwórz pełny system e-commerce z produktami, koszykiem, zamówieniami i fakturami.

Wymagania: - Modele: Product, Category, Cart, Order, OrderItem, Invoice, Customer - REST API:

- Automatyczne generowanie numerów zamówień i faktur - Obliczanie podatku VAT i sumy całkowitej - Śledzenie statusu zamówienia (pending, paid, shipped, delivered)

Wymagania techniczne: - Transakcje (baza danych) - Walidacja danych - Obsługa błędów - Paginacja i filtrowanie - Autentykacja użytkownika

Wskazówki: - Użyj Spring Data JPA z relacjami one-to-many i many-to-many - Implementuj logikę obliczania ceny koszyka - Obsługuj różne metody płatności - Zwracaj dane w formacie JSON

Zadanie 3.2: Platforma do dzielenia się opiniami i ocenami

Opis: Utwórz platformę podobną do Google Reviews, gdzie użytkownicy mogą dodawać opinie i oceny dla restauracji, sklepów, itp.

Wymagania: - Modele: Business, Review, User, Rating - REST API:

- Autentykacja i autoryzacja (użytkownik, moderator, admin) - Automatyczne obliczanie średniej oceny - Moderacja opinii (czy zawiera nieodpowiednie treści)

Wymagania techniczne: - Spring Security z rolami - Transakcje bazodanowe - Walidacja opinii - Paginacja - Obsługa obrazów (URL do zdjęć)

Wskazówki: - Implementuj votingowe na opinie (przydatne/nieprzydatne) - Sortuj opinie po użyteczności - Obsługuj oznaczanie spamu i nieodpowiednich opinii

Zadanie 3.3: System zarządzania projektami (Project Management)

Opis: Utwórz system zarządzania projektami z zespołami, zadaniami, zasobami i raportowaniem czasu pracy.

Wymagania: - Modele: Project, Team, User, Task, TimeEntry, Resource - REST API:

- Śledzenie postępu projektu - Zarządzanie zasobami i budżetem - Raportowanie czasu pracy (timesheets) - Komunikacja w zespole (komentarze do zadań)

Wymagania techniczne: - Wielopoziomowe uprawnienia użytkowników - Walidacja dat i okresów - Obsługa załączników - Powiadomienia użytkowników - Eksport raportów (PDF, CSV)

Wskazówki: - Implementuj role: manager, developer, viewer - Użyj @Transactional dla operacji wymagających więcej niż jednego zapisu - Obsługuj konflikty przypisań i czasów - Zwracaj statystyki postępu

Zadanie 3.4: API inteligentnego systemu rekomendacji filmów

Opis: Utwórz API do rekomendacji filmów na podstawie historii przeglądania, ocen i preferencji użytkownika.

Wymagania: - Modele: Movie, Genre, User, Rating, WatchHistory, Recommendation - REST API:

- Algorytm rekomendacji bazujący na:

- Sortowanie i filtrowanie

Wymagania techniczne: - Baza danych z relacjami many-to-many - Caching dla populacyjnych filmów - Algorytm uczenia maszynowego (prosta implementacja) - Paginacja - Spring Security dla danych użytkownika

Wskazówki: - Przechowuj oceny i historię w bazie - Obliczaj średnią ocenę filmu - Implementuj proste algorytmy: średnia oceny w gatunku, liczba wspólnych ocen - Zwracaj pewność rekomendacji

Zadanie 3.5: API dla systemu edukacyjnego (LMS)

Opis: Utwórz pełny Learning Management System z kursami, lekcjami, quizami i ocenianiem.

Wymagania: - Modele: Course, Lesson, Quiz, Question, User, Enrollment, QuizAttempt, Grade - REST API:

- Autorskie pytania wielokrotnego wyboru, otwarty tekst, prawda/fałsz - Automatyczne ocenianie quizów - Tracking postępu uczestnika - Certyfikaty po ukończeniu kursu

Wymagania techniczne: - Wielopoziomowe role (student, instructor, admin) - Obsługa załączników (materiały, slajdy, wideo) - Obliczanie średnich i procentów ukończenia - Logowanie aktywności użytkownika - Powiadomienia o nowych materiałach

Wskazówki: - Implementuj walidację dla pytań i odpowiedzi - Obsługuj terminy oddania zadań - Zwracaj szczegółowy raport postępu - Możliwość pobrania certyfikatu w PDF

Podsumowanie

Zadania obejmują:

Każde zadanie można rozszerzyć o dodatkowe funkcjonalności.