Miesięcznik informatyków i menedżerów IT sektora publicznego

Paweł Ziółkowski

Darmowa aplikacja do głosowania dla rad

Zgodnie z nowelizacją ustawy o samorządzie gminnym wyniki z jawnych głosowań mają zawierać imienny wykaz głosowania, a protokół powinien zostać upubliczniony w Sieci. W spełnieniu tych wymagań pomaga aplikacja eRada.

Formularz głosowania

Aplikacja eRada została stworzona do obsługi głosowania w Gminie Miękinia, ale po instalacji i odpowiedniej konfiguracji bez problemu może być wykorzystana w innych miejscach. Narzędzie jest ciągle dopracowywane, dlatego celem artykułu jest nie tylko zaprezentowanie tego rozwiązania, ale również zaoferowanie współpracy nad jego rozbudową. Co ważne, aplikacja nie wymaga od nas zakupu dodatkowych urządzeń – do działania wymagany jest tylko komputer, a radni mogą głosować za pomocą smartfonów.

Zastosowana technologia

Od strony klienta (przeglądarki) aplikacja została napisana z wykorzystaniem frameworka Angular w wersji 7. Wizualizacja strony została wzbogacona biblioteką Bootstrap oraz ikonami Material Icons. Dodatkowo powiadomienia (toast) obsługuje pakiet ngx-toastr. Wykresy głosowania generowane są przez rozwiązanie dla Angulara – angular2-chartjs. Z kolei powiadomienia na żywo, zarówno od strony serwera, jak i przeglądarki, obsługuje socket.io. Po stronie serwera znajduje się Node.js wraz z frameworkiem Express.js. Komunikacja między bazą danych MySQL a Node.js realizowana jest za pomocą pakietu mysql2. Do haszowania haseł użyty został bcrypt.

Aplikacja eRada jest jeszcze w fazie rozwoju, dlatego przy działaniu można spodziewać się nierozwiązanych błędów. Do ich śledzenia warto zaglądać do tabeli logs bazy danych, w której zapisywane są znane błędy, oraz do konsoli serwera po uruchomienie demona nodemon. Aplikacja dostępna jest pod adresem itwa.pl/extra. W pobranym folderze znajdziemy pliki serwera w katalogu głównym oraz przygotowaną już do użytkowania stronę WWW.

Proces instalacji

Przed rozpoczęciem instalacji aplikacji należy przygotować kilka wymaganych składników. Całą instalację oraz przykłady pokażemy z wykorzystaniem systemu Linux Debian 9.8.0 stretch. Pierwszym wymaganym elementem jest MySQL, który będzie przechowywał nasze dane. W terminalu serwera, jako root, wykonajmy najpierw polecenie aktualizacji repozytoriów apt. Następnie instalujemy pakiet mysql-server (jeśli nie został wcześniej zainstalowany):

# apt-get update
# apt-get install mysql-server

W kolejnym kroku instalujemy program phpMyAdmin, który pomoże nam podczas pracy z bazą danych:

# apt install –y phpmyadmin \
php-mbstring php-gettext

Podczas instalacji zostaniemy zapytani, z jakim serwerem WWW będziemy pracować. Należy wybrać odpowiedni (u nas Apache2) i zatwierdzić wybór, wciskając klawisz [Spacja]. Zostaniemy poproszeni o utworzenie hasła użytkownika phpmyadmin, za pomocą którego będziemy mogli logować się do aplikacji. Po zakończeniu instalacji w terminalu wykonujemy polecenie dodające nowego użytkownika bazy danych o nazwie i haśle itwa. Nadajemy mu uprawnienia:

# mariadb -u user –p
MariaDB [(none)]> CREATE USER 'itwa'@'localhost' \
IDENTIFIED BY 'itwa';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO \
'itwa'@'localhost' WITH GRANT OPTION;

Następnie otwieramy stronę http://ip_serwera/phpmyadmin i logujemy się za pomocą utworzonego wcześniej użytkownika. Należy przejść do zakładki Import i wybrać plik serwer/erada.sql. Po zakończonym imporcie powinniśmy zobaczyć dwie nowe bazy danych: erada oraz session. Wizualizację struktury możemy zobaczyć w zakładce Widok projektu.

Kolejnym elementem systemu jest serwer Node.js wraz z menedżerem pakietu npm. Instrukcje wersji 10 znajdziemy w dokumentacji dostępnej na stronie itwa.pl/ew. Node.js to serwer, którego zadaniem będzie wysyłanie nam plików HTML oraz zarządzanie powiadomieniami na żywo. Dodatkowo instalujemy pomocnika dla Node'a, czyli Nodemon, który automatycznie odświeży stronę w razie pojawienia się jakichś zmian w kodzie:

# npm install -g nodemon

Kopiowanie plików aplikacji

Po pobraniu plików należy skopiować je do wybranego katalogu (/var/www/erada) i zainstalować wszystkie pakiety dla Node.js (wylistowane w pliku package.json) poleceniem npm install. Aplikacja wymaga połączenia z bazą danych. Jej parametry należy ustawić w pliku conf/DBConfig.

Następnie wprowadzamy wartości dla dbuser/user i dbpass­word/password. Port, na którym będzie dostępna nasza aplikacja, znajduje się w pliku conf/AppConfig.js jako właściwość port, z domyślną wartością 8080. Jeżeli wszystko zostało skonfigurowane, należy uruchomić serwer w katalogu aplikacji, wykonując polecenie nodemon index.js. Po jego wykonaniu otwieramy przeglądarkę i wywołujemy stronę http://ip_serwera:8080, po czym powinna nam się ukazać strona logowania.

Konfiguracja głosowania

Dodatkowym użytkownikiem aplikacji, za pomocą którego można się zalogować, jest admin@erada.pl z hasłem erada. Po poprawnym zalogowaniu pokaże nam się główne okno programu. Pierwszym krokiem jest dodanie kadencji, do której będziemy odwoływać się w sesjach i głosowaniach. W górnym menu należy wybrać Kadencja | Dodaj. Po odświeżeniu strony kadencja ustawiona jako aktywna (domyślnie) zostanie pokazana na pasku menu. W identyczny sposób dodajemy sesję, podając jej datę, oznaczenie i kadencję.

Z kolei do każdej sesji będziemy przypisywać głosowania. Po zapisaniu sesji, w kolumnie Akcje, ostatnia ikona pomoże nam szybko przełączać się między aktywnymi głosowaniami. Jeżeli zaś sesja jest już aktywna, będziemy mogli zobaczyć aktualny spis głosowań. Aktywne pozycje zostały oznaczone kolorem zielonym w kolumnie Aktywna. Formularz głosowania pozwala na dodanie nowych pozycji nie tylko do sesji, które zostały oznaczone jako aktywne, więc aplikacja podpowie nam, która obecnie sesja ma taki status. W polu Numer kolejny głosowania dostaniemy podpowiedź o kolejnym wolnym numerze (po wybraniu sesji).

[...]

Autor jest absolwentem Uniwersytetu Ekonomicznego we Wrocławiu, pracuje jako informatyk w Urzędzie Gminy w Miękini.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej