Skip to content
This repository has been archived by the owner on Jul 8, 2024. It is now read-only.
/ CodeMelodies Public archive

The repository contains a project implemented as part of the subject Advanced Technologies for Web Application Design

Notifications You must be signed in to change notification settings

WiolaWysopal/CodeMelodies

Repository files navigation

CodeMelodies

CodeMelodies to elegancka i intuicyjna platforma, stworzona z myślą o rozpowszechnianiu treści związanych z muzyką poważną z okresu baroku i klasycyzmu. Aplikacja ma na celu propagowanie treści przeznaczonych dla pewnej grupy odbiorców. Projekt kładzie nacisk na intuicyjność oraz zwięzłość treści.

logomin

Funkcje

Aplikacja CodeMelodies oferuje następujące funkcje:

  • 🎵 Galeria Nagrań:

Eksploruj bogatą kolekcję nagrań, prezentującą wyjątkowe interpretacje utworów.

  • 📘 Publikacje:

Zapoznaj się z artykułami dotyczącymi różnych aspektów muzyki poważnej, technik gry na flecie i wiele więcej.

  • 👥 Profil Artysty:

Poznaj artystkę bliżej, zapoznając się z jej biografią, osiągnięciami i dokumentacją artystyczną w postaci nagrań i zdjęć.

  • 📅 Kalendarz Wydarzeń

Bądź na bieżąco z nadchodzącymi koncertami, wydarzeniami i premierami nagrań.

  • 💌 Kontakt:

Skontaktuj się bezpośrednio z artystką, zadając pytania lub wyrażając swoje uwagi.

App Sample Screens

Struktura projektu

Wybrane frameworki:

Frontend: Angular:

bash ng new CodeMelodies --routing --skip-git --skip-tests --style css

  • ng new CodeMelodies - tworzy nowy projekt z zadanymi parametrami:

  • --routing - dodaje moduł routingu do nowoutworzonego projektu

  • --skip git - pomija inicjalizację repozytorium Git dla nowego projektu

  • --skip-tests - pomija generowanie plików specyfikacji testów dla nowego projektu

  • --style css - definiuje technologię stylowania, która ma być używana w projekcie

Wykorzystano też bibliotekę arkusza styli CSS - Bootstrap.

Backend: Spring Framework. Aplikację Springową utworzono przy pomocy Spring Initializr.

Uzasadnienie doboru architektury:

Decyzja o wyborze Angulara, Bootstrapa i Springa jako podstawowych technologii dla projektu została podjęta z kilku kluczowych powodów. Przede wszystkim, każdy z tych frameworków posiada silną i stabilną pozycję na rynku, co jest kluczowe dla zapewnienia długoterminowego wsparcia i aktualizacji. Angular jest szczególnie ceniony wśród deweloperów za jego modularność, efektywność i integrację z TypeScript. Z kolei Bootstrap, jako biblioteka CSS, jest powszechnie uznawany za standard w projektowaniu responsywnych i estetycznie atrakcyjnych interfejsów użytkownika. Dzięki gotowym komponentom, Bootstrap pozwala na szybkie tworzenie spójnych i funkcjonalnych interfejsów.

Spring Framework jest jednym z najbardziej kompleksowych rozwiązań dla aplikacji back-endowych w Javie. Oferuje on szerokie możliwości w zakresie tworzenia bezpiecznych, wydajnych i skalowalnych aplikacji serwerowych. Jego adaptacyjność i wsparcie dla różnorodnych architektur sprawiają, że jest on idealnym wyborem dla nowoczesnych aplikacji.

Kluczową jednak rolę w doborze architektury stanowią osobiste zainteresowania autorki projektu.

Endpointy API

Użycie API przez aplikację kliencką

login-controller

  • POST
    • /api/logout
  • GET
    • /api/login

you-tube-controller

  • GET
    • /api/youtube

kontakt-controller

  • GET
    • /api/socialmedia
  • GET
    • /api/events

publikacje-controller

  • GET
    • /api/publications
  • GET
    • /api/publication/{uuid}

obrazy-controller

  • GET
    • /api/photosids
  • GET
    • /api/photo/{uuid}
  • GET
    • /api/icon/{uuid}

o-mnie-controller

  • GET
    • /api/about

Dokumentacja SWAGGER:

Zależność springdoc-openapi-starter-webmvc-ui jest elementem integracji dokumentacji API z aplikacjami Spring Boot. Ta zależność, będąca częścią biblioteki SpringDoc, automatycznie generuje dokumentację API zgodną ze specyfikacją OpenAPI 3 na podstawie kodu źródłowego aplikacji. W szczególności analizuje kontrolery Springa, ich metody, parametry i modele danych, tworząc z nich dokładny opis API. Dodatkowo dostarcza interfejs użytkownika Swagger UI, który umożliwia testowanie dokumentacji API bezpośrednio z przeglądarki. Swagger Dependency in pom.xml Test enpointów możliwy jest pod adresem: http://localhost:8080/swagger-ui/index.html#/: Endpoints on Swagger

Rest API/GRAPH QL

W przypadku tego projektu do komunikacji warstwy Frontendu z Backendem wykorzystano Rest API. Do testowania Rest API wykorzystano Swagger UI.

Baza danych

ERD:

ER Diagram

Złożoność bazy danych:

Baza danych zawiera wszystkie typy relacji:

  • jeden-do-jednego:
    • jednej ikonie przynależy jedno social media
  • jeden-do-wielu
    • jeden plik może zawierać wiele publikacji
  • wiele-do-wielu
    • wiele wydarzeń może mieć wiele tagów

ORM/JPA/ODM

Jako narzędzie ORM (Object-Relational Mapping), wykorzystano Hibernate. W połączeniu z bazą danych PostgreSQL, stanowi on solidne i wydajne rozwiązanie dla zarządzania warstwą danych. Hibernate ułatwia mapowanie obiektów Java na tabele w bazie danych PostgreSQL, co pozwala na intuicyjne i obiektowe zarządzanie danymi. Dzięki Hibernate, złożoność operacji na bazie danych jest ukryta za prostszym interfejsem, co przekłada się na większą czytelność i łatwość utrzymania kodu.

Dependency odpowiedzialne za dodanie Hibernate'a:

Hibernate Dependency in pom.xml

Kopia bazy danych:

Kopię bazy danych stanowią pliki .sql dostępne w folderze DB. Plik db-init.sql tworzy bazę danych, natomiast plik insert-dummies.sql wypełnia bazę odpowiednimi danymi.

GIT

Projekt wykorzystuje system kontroli wersji GIT hostowany przez platformę GitHub: https://github.com/WiolaWysopal/CodeMelodies.git

Autoryzacja użytkownika

W projekcie wykorzystano mechanizm Basic Autentication, który realizuje poniższa dependencja:

Authentication Dependency in pom.xml

Zależność spring-boot-starter-security jest zależnością Spring Boot, która umożliwia łatwą integrację i konfigurację Spring Security w aplikacji. Spring Security zapewnia bezpieczeństwo aplikacji poprzez uwierzytelnienie i autoryzację użytkowników. Dzięki tej zależności możliwa jest implementacja bezpiecznego logowania i zarządzanie dostępem do różnych części aplikacji. Spring Security wspiera szeroki zakres opcji uwierzytelniania, w tym logowanie oparte na formularzach, a także HTTP Basic Authentication. Umożliwia również definiowanie reguł dotyczących dostępu do zasobów aplikacji, co pozwala na precyzyjne kontrolowanie, który użytkownik ma dostęp do określonych funkcji lub danych w aplikacji.

Autentykacja w projekcie:

LoginController.java

About

The repository contains a project implemented as part of the subject Advanced Technologies for Web Application Design

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published