Pierwsza czerwona flaga:
Moim celem było wykonać tą aplikację jako SPA. Na początku była to typowa dynamiczna aplikacja webowa, ale dokonałem refaktoryzacji do SPA.
Dobre powody do użycia SPA: zwiększenie responsywności, model cienkiego serwera, redukcja ilości zduplikowanej logiki, team mający większe doświadczenie z frontendem niż z backendem, miłośc do js.
Złe powody do użycia SPA: "celem było wykonać tą aplikację jako SPA".
Wiem że to pewnie zabawkowy projekt, ale normalnie użyte technologie powinny być uzasadnione przez biznesowe potrzeby ;). Patrząc na niektóre fragmenty, mam duże wątpliwości czy to była refaktoryzacja
.
Ok, do kodu:
spring.datasource.url=jdbc:postgresql://localhost:5432/file_cloud
spring.datasource.username=postgres
spring.datasource.password=123456
Mam nadzieję że nie trzymasz hasła w kontroli wersji (nawet mimo że baza jest lokalna). Hasło 123456 to tez średni pomysł :P.
Plik: https://github.com/Jockiee/FileCloud/blob/master/src/main/resources/templates/index.html - kompletnie losowe formatowanie kodu. Weź go chociaż przepuść przez jakiś formatter HTML.
No i niby masz styles.css
, ale kod pełny inline stylów w rodzaju <div style="height:0%; position:absolute; bottom:50px; right: 0px;">
.
Plik: https://github.com/Jockiee/FileCloud/blob/master/src/main/resources/static/js/spa.js - hmm, własny framework do SPA?
https://github.com/Jockiee/FileCloud/blob/master/src/main/resources/static/js/spa.js#L120 - ratunku.
' <button type="button" data-filename="' + fileName + '" class="btnDelete btn-danger" style="position: absolute; right: 5px; top: 5px;">X</button></li>';
Js z inline HTML z inline CSS. No i ten, fileName
brzmi jak coś kontrolowanego przez użytkownika, czyli piękny XSS. https://en.wikipedia.org/wiki/Cross-site_scripting
To tyle z HTML/JS - części javowej nie przeglądałem.