Projektowanie aplikacji internetowych — projekt nr 4
Ten projekt realizujecie Państwo w 3- bądź 4-osobowych zespołach. Każdy
zespół powinien wymyślić swoje własne zagadnienie biznesowe, dostatecznie
złożone aby wszyscy członkowie zespołu mieli co robić. Zaimplementowana
aplikacja musi mieć kilka serwisów udostępniających swe usługi poprzez REST
API oraz frontend wykorzystujący bibliotekę React.
Harmonogram projektu:
- 20 kwietnia — rozpoczęcie prac
- 27 kwietnia — wymyślony temat i podział na serwisy (będzie
dyskutowane na ćwiczeniach)
- 11 maja — oddanie PDF-a z trzech pierwszych etapów (będzie
analizowany na ćwiczeniach)
- ...
Etapy projektu
- Określenie zagadnienia biznesowego / problemu.
- Określenie wymagań funkcjonalnych.
- Projektowanie architektury aplikacji (m.in. określenie jakie usługi będą
realizowane przez poszczególne serwisy).
- Projektowanie struktury bazy / baz danych.
- Projektowanie REST-owych API dla poszczególnych serwisów.
- Implementacja.
- Testowanie.
Wyniki z etapów 1-3 należy oddać jako plik PDF. Dla etapu 4 można albo
dodać schematy tabel do PDF-a, albo w plikach źródłowych
z modelami Sequelize mieć porządne komentarze. Etap 5 podobnie —
specyfikacja API albo w PDF-ie, albo w pliku w formacie OAS
(OpenAPI Specification).
Kod źródłowy proszę trzymać w repozytorium, np. na GitHubie. W logu ma
być widać commity od wszystkich członków zespołu. Proszę pamiętać o dodaniu
do .gitignore linii z nazwą podkatalogu node_modules
(jeśli pliku .gitignore nie ma w głównym katalogu repozytorium, to
trzeba go stworzyć).
Wymagania logiczno-techniczne
Projekt powinien uwzględniać następujące elementy analizy problemu oraz
architektury:
- zachowanie logicznej z punktu widzenia danego zagadnienia warstwowej
architektury przygotowywanej aplikacji
- wykorzystanie i podział aplikacji na odpowiednie serwisy funkcjonalne
wywoływane poprzez REST API
- identyfikacja poszczególnych funkcjonalności oraz ich uzasadnienie
w kontekście realizowanego zagadnienia biznesowego
- asynchroniczny model komunikacji klient-serwer
- relacyjna baza danych (bądź bazy, jeśli każdy serwis będzie miał swoją własną)
- generowanie widoków we frontendzie (model CSR, czyli Client Side
Rendering)
Wymagane są co najmniej trzy backendowe serwisy REST, w tym serwis
autentykacji użytkowników. Przekazywanie informacji o tożsamości zalogowanego
użytkownika należy oprzeć o JSON Web Token.
Należy użyć następujących narzędzi i pakietów:
- Node.js LTS oraz Express
- expressowe middleware, przede wszystkim pakiet cors
- Sequelize ze sqlite3 jako sterownikiem bazodanowym
- React
- (opcjonalnie) biblioteki rozszerzające możliwości React
- (opcjonalnie) biblioteki CSS pozwalające nadać stronom ładny wygląd
- (opcjonalnie) biblioteka do wizualizacji plików ze specyfikacjami
OpenAPI
- narzędzia przetwarzające źródła frontendu do postaci nadającej się do
opublikowania na serwerze WWW
Adresy serwisów REST, lokalizacje baz danych, sekrety kryptograficzne itp.
rzeczy muszą być w odpowiednich plikach konfiguracyjnych, a nie wpisane na
sztywno w kod źródłowy.
Przy ocenianiu projektu główne znaczenie będzie miała poprawność
architektury i jakość kodu. Wygląd witryny jest mało istotny.