Głosownik to projekt aplikacji webowej do przeprowadzania różnego rodzaju głosowań podczas Walnych Zgromadzeń Członków czy to innego typu wyborów. Aplikacja ma zastąpić dotychczasowe papierowe rozwiązania. Każde głosowanie ma pozwolić na stwierdzenie kworum oraz późniejsze anonimowe oddawanie głosów przez uczestników.
Celem aplikacji jest zapewnić anonimowość głosujących na każdym etapie głosowania, pozwalając jednocześnie na ich autentykację tuż przed rozpoczęciem głosowania.
Korzyści jakie przyniesie aplikacja to możliwość sprawdzenia obecności członków, przeprowadzania sprawnych, bezpiecznych i anonimowych głosowań w różnych rodzajach (głosowanie TAK/NIE, wybór pojedynczej opcji np. nazwiska kandydata na przewodniczącego).
Grupą docelową mają być organizacje studenckie, które mają potrzebę przeprowadzania głosowań (m.in koła naukowe podczas Walnych Zgromadzeń Członków, czy samorząd studencki podczas wewnętrznych głosowań).
Głosownik to projekt aplikacji webowej, co pozwoli na łatwy i szybki dostęp z każdego urządzenia z dostępem do internetu i przeglądarką internetową, bez konieczności instalowania aplikacji.
Po sklonowaniu repo, zacznij od instalacji zależności:
$ pnpm installNiestety MongoDB nie ułatwia życia w tym temacie, ale w package.json czekają skrypty które ułatwią robotę
Najpierw uruchom kontener dockerowy z bazą danych:
$ pnpm db:upNastępnie zainicjalizuj repliki za pomocą tego polecenia:
$ pnpm db:init-rsPotem dodaj nowego użytkownika do bazy danych
$ pnpm db:create-userPamiętajcie o uzupełnieniu pliku .env zgodnie z wzorcem w pliku .env.example
DATABASE_URL=
BETTER_AUTH_SECRET=
BETTER_AUTH_URL=Następnie, musisz wygenerować klienta Prismy (Prisma Client), ponieważ ta biblioteka generowana jest dynamicznie
$ npx prisma generatelub
$ pnpm prisma generateNa końcu zaktualizuj bazę danych o nowy schemat:
$ pnpm prisma db pushUwaga
Polecenia prisma generate oraz prisma db push musisz używać ZA KAŻDYM RAZEM kiedy dokonujesz zmian w schema.prisma
# development
$ pnpm run start
# watch mode
$ pnpm run start:dev
# production mode
$ pnpm run start:prodKlepaczy kodu interesuje przede wszystkim :dev
Licencja projektu to GNU AGPL v3.0. Więcej o licencji dowiesz się TUTAJ.