WSZYSTKIE DANE OSOBOWE W TYM PROJEKCIE ZOSTAŁY WYGENEROWANE LOSOWO !!!.
Generator danych osobowych znajduje się w katalogu database/generator/
Temat projektu:
1. Aplikacja Web z bazą danych e-karty gorączkowe dla oddziału szpitalnego
- do zrealizowania jest przeglądarkowa aplikacja wykorzystująca serwer bazodanowy (np. Relacyjny, dokumentowy)
- zalecany zespół 2 osobowy
Aplikacja jest pisana z myślą o uruchomianiu w środowisku skonteneryzowanym.
Do budowania aplikacji jest potrzebne: nodejs
i npm
lub docker
i docker-compose
Aplikacja była przetestowana na środowisku Linuxowym.
W celu działania aplikacji należy posiadać zainicjowaną bazę danych, należy to zrobić tylko raz.
Baza będzie dostępna w katalogu volume
.
Jak zainicjować bazę jest opisane w sekcjach poniżej.
docker-compose up
Powyższy skrypt zbuduje aplikacje i ją uruchomi.
Aby zakończyć działanie aplikacji, wciśnij Ctrl+C
.
Tak uruchomiana aplikacja niebędzie działać, bez zainicjowanej bazy danych. Zainicjuj bazy danych poniższymi komendami:
docker-compose exec -T postgresql psql telm telm < database/extensions.sql
docker-compose exec -T postgresql psql telm telm < database/schema.sql
docker-compose exec -T postgresql psql telm telm < database/example_data.sql
Wejdź na stronę localhost:8080.
Zaloguj się jako ltomczak
z hasłem qwerty123
;
Uruchom bazy danych PostgreSQL i Redis:
docker-compose --env-file ".dev.env" --file "docker-compose.dev.yml" up
Uwaga: baza danych jest inicjowana z użytkownikiem telm
i hasłem SuperTajneHaslo
.
Aby połączyć się z bazą danych, proszę wpisać:
psql --host=localhost --port=5001 --dbname=telm --username=telm
Password for user telm: SuperTajneHaslo
Zainstaluj zależności:
npm install
W dwóch osobnych terminalach uruchom polecenia:
npm run dev-build
npm run dev-serve
Wejdź na stronę localhost:8080.
Uwaga: aby podłączyć inną bazę danych, niż ta domyśla, należy zmienieć parametry w pliku .env
.
Uruchamiając npm run build
, uruchamia webpack
'a, który pakuje cały projekt w kilka skompresowanych plików do katalogu dist
, o następującej strukturze:
├── dist
│ ├── private
│ │ └── main.js
│ └── public
│ ├── index.html
│ ├── main.js
│ ├── material-ui.js
│ ├── material-ui.js.LICENSE.txt
│ ├── react-admin.js
│ ├── react.js
│ ├── react.js.LICENSE.txt
│ ├── rechart.js
│ ├── vendor.js
│ └── vendor.js.LICENSE.txt
├── node_modules
└── package.json
Cały proces jest automatyczny i nie wymaga interakcji z użytkownikiem.
Całą aplikacją można sterować za pomocą zmiennych środowiskowych.
Nazwa | Wartość | Opis |
---|---|---|
APP_SECRET | string | używany do podpisywania pliku cookie z identyfikatorem sesji |
APP_PORT | number | port na którym zostanie uruchomiona aplikacja |
APP_REDISURL | string | uri serwera Redis |
APP_PGHOST | string | adres serwera PostgreSQL |
APP_PGPORT | number | port serwera PostgreSQL |
APP_PGDATABASE | string | nazwa bazy danych |
APP_PGUSER | string | użytkownik do serwera PostgreSQL |
APP_PGPASSWD | string | hasło do serwera PostgreSQL |
Aplikacja składa się z 4 procesów:
- PostgreSQL - server z danymi aplikacji
- Redis - serwer z sesjiami użytkowników
- Nginz - tak zawany load balancer
- Serwer NodeJS - serwer napisany przez nas
Użytkownik poprzez przeglądarkę łączy się z serwerem Nginx, który balansuje ruch pomiędzy uruchomione serwery NodeJS. Serwery NodeJS łączą się z serwerem danych i sesji w celu obsługi żądania.
Serwer backendowy jest postawiony na wieloplatformowym środowisku uruchomieniowym NodeJS.
Serwer komunikuje się za pomocą RestAPI z klientem cienkim.
RestAPI zostało wykonane, przy użyciu biblioteki express
.
Interfejs graficzny został wykonany w react
'cie.
Wykorzystano także bibliotekę react-admin
, która ułatwia pisanie aplikacji do administrowania danymi.
Rys: Widok hospitalizacji, dane tabelaryczne
Rys: Widok hospitalizacji, ciśnienie krwi
Baza danych została zaprojektowana za pomocą programu pgModeler. Jest to otwarto-źródłowy program, opublikowany na licencji GNU General Public License.
Baza danych składa się z 6 tabel:
patients
- dane pacjentówhospitalizantions
- dane pobytów pacjentów, hostpitalizacjeexaminations
- badania wykonywane pacjentompersonel
- personel medycznybasic_auth
- dane logowanialogs
- logi dostępu do api
database
generator
example_data.sql
model.dbm
- model bazy danych w programie pgModelerregen.sh
- skrypt do tworzenie dwóch następnych plików wmodel.dbm
model.png
- model w postaci graficznejschema.sql
- model w postaci ddl
src
- kod źródłowybackend
- część serwerowafrontend
- część przeglądarkowadata
- część danych, ich definicje i walidatory
docker-compose.dev.yml
- pliki orkiestratora (wersja deweloperska)docker-compose.yml
- pliki orkiestratora
Sumaryczna użyta ilość bibliotek i narzędzi to: ( ͡° ͜ʖ ͡° )つ──☆*:・゚ 1257.
Liczbę można uzyskać uruchamiając npm ls --parseable | wc -l
.
A na poważnie: użyliśmy narzędzia npm
do rozwiązywania zależności.
Sprawia to, że podczas instalowania bibliotek w katalogu node_modules
wraz z zależnościami do tych bibliotek i tak w kółko.
Pełny wykaz bibliotek znajduje się w pliku dependencies.txt
, a biblioteki faktyczne użyte przez nas są w pliku package.json
w sekcjach dependencies i devDependencies
.
Najważniejsze biblioteki:
react
- główna biblioteka graficznareact-admin
- biblioteka do tworzenia stron typu dashboard z danymi@material-ui/core
- biblioteka graficzna w stylu Material@date-io/dayjs
- biblioteka do obsługi czasuyup
- biblioteka do walidacji danychrecharts
- biblioteka do rysowania grafówtypescript
- język javascript z typowaniemwebpack
- narzędzie do kompilowania i pakowania koduexpress
- biblioteka do tworzenia serwera HTTPpg
- biblioteki do obsługi bazy PostgreSQLknex
- biblioteki generowania dynamicznych zapytań SQL
- Adam Jędrzejowski a.jedrzejowski@gmail.com
- Ewelina Drelich ewe.drelich@gmail.com