Programowanie dla WWW, rok akademicki 2020/2021
Celem projektu było zbudowanie kompleksowej platformy blogowej umożliwającej administratorowi dodawanie nowych postów, zarejestrowanym użytkownikom dodawanie komentarzy pod postami oraz wszystkim innym odwiedzającym wyświetlanie zarówno postów jak i komentarzy.
- Accordion w formie rozwijanego podglądu komentarzy pod postami.
- Dotyczywanie postów przy scrollowaniu.
- Dekoracyjny parallax scrolling jako belka z tytułem postu.
- Logowanie na konto.
- Dodawnie nowych postów i komentarzy.
- Baza danych
- 3 tabele: użytkownicy, posty, komentarze.
- Autoryzacja użytkowników poprzez token JWT wygasający po 60 minutach.
- System uprawnień:
ADMIN
posiadający dostęp do wszystkich zapytań,USER
posiadający dostęp tylko do dodawania komentarzy i wyświetlania tresci.
- React.Js
- axios
- react-parallax
- universal-cookie
- Bootstrap 5
- FontAwesome
- Całość backendu napisana w języku Rust.
- Wykorzystany framework:
rocket
w wersji0.4.8
. - Baza danych SQLite.
curl --location --request GET 'localhost:8000/api/posts'
curl --location --request GET 'localhost:8000/api/posts?page=0&limit=3'
curl --location --request GET 'localhost:8000/api/posts/comments/9'
W odpowiedzi otrzymujemy token JWT oraz zakres uprawnień.
curl --location --request POST 'localhost:8000/api/login' \
--header 'Content-Type: application/json' \
--data-raw '{
"login": "admin",
"password": "admin"
}'
curl --location --request POST 'localhost:8000/api/register' \
--header 'Content-Type: application/json' \
--data-raw '{
"login": "hubert",
"password": "jaremko",
"name": "Hubert J"
}'
curl --location --request POST 'localhost:8000/api/posts' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJsb2dpbiI6Imh1YmVydCIsInBhc3N3b3JkIjoiaGFzbG8iLCJyb2xlIjoiVVNFUiIsImV4cCI6MTYyMzU4Njg0NX0.qrx5iSG1SLIQ0ciQeF92Ilq7T4t2niU9T1eipQJTpED9zVZcrvjNcwh8jQi1xfr6Ltqm8p46DEnBSuLW691ohg' \
--header 'Content-Type: application/json' \
--data-raw '{
"title": "Tytuł nowego posta",
"content": "Nowy post, wymagane logowanie."
}'
curl --location --request POST 'localhost:8000/api/posts/comments/13' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJsb2dpbiI6Imh1YmVydCIsInBhc3N3b3JkIjoiaGFzbG8iLCJyb2xlIjoiVVNFUiIsImV4cCI6MTYyMzU4Njg0NX0.qrx5iSG1SLIQ0ciQeF92Ilq7T4t2niU9T1eipQJTpED9zVZcrvjNcwh8jQi1xfr6Ltqm8p46DEnBSuLW691ohg' \
--header 'Content-Type: text/plain' \
--data-raw 'Nowy komentarz.'
cd frontend
npm run build
https://www.rust-lang.org/tools/install
rustup toolchain install nightly
cargo +nightly run
Po kompilacji i uruchomieniu, klient oraz serwer są dostępne na porcie 8000.