Skip to content

CodeForPoznan/small_eod

 
 

Repository files navigation

Small_EOD

Build Status Build Status Slack join

System służący do usprawnienia obiegu dokumentów Stowarzyszenia, w szczególności w zakresie:

  • obiegu korespondencji w zakresie spraw sądowych
  • archiwizacji dokumentacji

Założenia

  • system rozwijany będzie małymi etapami, aby jak najszybciej dostarczał wartość dla biura Stowarzysznia

  • w początkowych etapach system będzie przeznaczony do archiwizacji dokumentów pochodzących z różnych mediów

  • w przyszłości system będzie służył także do:

    • zarządzanie przebiegiem procesu sporządzenia pism
    • powiadamiania o nowych pismach
    • kontroli terminów
    • wysyłkę pism poprzez odpowiednie kolejki:
      • Envelo - realizowane automatycznie
      • ePUAP - realizowane manualnie przez osoby uprawnione, a następnie automatycznie
      • Poczta tradycyjna - realizowane manualnie przez osoby uprawnione
  • należy w trakcie rozwoju zachować ciągłość funkcjonowania procesów Stowarzyszenia

  • system trwale będzie miał charakter wewnętrzny dla Stowarzyszenia

    • publikacja danych z systemu odbywać się będzie poprzez API
  • Platforma udostępnia skuteczne API w celu umożliwienia powstania wokół systemu integracji

  • Uwierzytelnienie z wykorzystaniem GSuite

Architektura

System składa się z następujących komponentów:

  • Back-end - Django, dostępny w podkatalogu backend-project
  • Front-end - React, dostępny w podkatalogu frontend-project
  • Minio - podsystem składowania plików binarnych (dokumenty, zdjęcia itp.)
  • Baza danych PostgreSQL

Dodatkowe uwagi:

  • Projekt Stowarzyszenia korzysta z kontenerów Docker.
  • Dodatkowe integracje tj. e-mail, ePUAP, Envelo mogą być odrębnymi usługami, lecz komunikującymi się (microservices)
  • Back-end udostępnia dokumentacja REST API zgodną z Swagger
  • Została opracowana biblioteka: small-eod-sdk-javascript

Historia

Stowarzyszenie prowadziło jedynie rejestr korespondencji w oparciu o interfejs webowy dla dwóch tabelach SQL (przychodzące i wychodzące)

Opracowano small_eod v1, który umożliwiał rejestracje rejestracje dokumentów papierowych i rejestracje spraw. Całość została wykonana w oparciu o django-admin, co ograniczało rozwój, lecz pozwoliło na poznanie podstawowych koncepcji.

Rozpoczęto opracowanie small_eod v2, który stanowić ma trwałe rozwiązanie dla Stowarzyszenia poprzez m. in.: elastyczny interfejsu użytkownika nie opartego o django-grappeli, w szczególności umożliwiającego:

  • sprawne zarejestrowanie sprawy
  • zarejestrowanie sprawy i jednoczesne wielu archiwalnych listów
  • przesłanie załączników poprzez przeciągnięcie i upuszczenie

Szczegółowe założenia i wymagania dla small_eod v2 zostały przedstawione w docs.

Udział w projekcie

W celu rozwoju projektu kod źródłowy projektu można pobrać za pomocą komendy git:

git clone [email protected]:watchdogpolska/small_eod.git

W przypadku pracy w środowisku Windows/Mac można wykorzystać GitHub Desktop. W celu pobrania należy postępować zgodnie z instrukcją.

Projekt realizowany jest zgodnie z filozofią open-source. Szczegółowe informacje na temat:

Zadania do wykonania są zarejestrowane jako zagadnienia oznaczone etykietą good first issue w portalu GitHub. W celu ich realizacji wystarczy komentarz o rozpoczęciu prac, a następnie utworzenie żądania wcielenia zmian (pull request).

Bieżąca komunikacja projektu odbywa się z wykorzystaniem Slacka organizacji CodeForPoznań na kanale #watchdog. Odbywają się regularne spotkania statusowe (szczegóły w zagadnieniu https://github.com/watchdogpolska/small_eod/issues/547), gdzie można uzyskać wprowadzenie w projekt, dowiedzieć się na temat zadań i usunąć inne trudności we współpracy.

Uruchomienie projektu

W celu ułatwienia rozwoju projektu wykorzystywane jest oprogramowanie Docker. Umożliwia ona uruchomienie wszystkich usług niezbędnych do pracy nad projektem. Usługi zostały opisane w pliku docker-compose.yml.

W celu uruchomienia środowiska aplikacji wymagane jest:

Aby dowiedzieć się więcej o oprogramowaniem zapoznaj się z wideo Docker dla webdevelopera - #01 - Czym jest Docker?.

W celu uruchomienia projektu należy wykonać:

docker-compose up

Po pomyślnym uruchomieniu projektu środowisko pod adresem http://localhost:8000/admin/ winno być możliwe logowanie z wykorzystaniem loginu i hasła, a wszelkie zmiany kodu aplikacji w lokalnym repozytorium będą automatycznie załadowane przez Django.

W celu utworzenia konta administratora należy wykonać:

docker-compose run backend python manage.py createsuperuser

W celu utworzenia próbnych danych należy wykonać:

docker-compose run backend python manage.py init_data

W razie problemów z uruchomieniem projektu utwórz nowe zagadnienie

Testy automatyczne

Projekt wykorzystuje testy automatyczne, które zapewniają weryfikacje wszystkich wprowadzonych zmian. Wszelkie proponowane zmiany z wykorzystaniem GitHub Actions.

Wszelkie zmiany w repozytorium będą uruchamiały serie testów automatycznych, ale przed ich dodaniem masz możliwość wykonania testów lokalnie za pomocą Makefile.

W celu wykonanie testów automatycznych formatowania należy wykonać:

make lint

Większość problemów w formatowania można naprawić z wykorzystaniem automatycznego formatowania za pomocą wykonania:

make fmt

W celu wykonania testów automatycznych back-endu należy wykonać:

make test-django-backend

Wdrożenie automatyczne

Każda zmiana znajdująca się na gałęzi dev jest wdrażana z wykorzystaniem GitHub Actions do usługi Strona od HyperOne, która jest usługą klasy platform-as-a-service.

Publiczny dostęp do środowiska testowego odbywa się z wykorzystaniem adresu: dev.small-eod.siecobywatelska.pl. Dostępne jest konto użytkownika root z hasłem root. W przypadku uszkodzenia konta – utwórz nowe zagadnienie.

Dla potrzeb środowiska testowego w HyperOne zostały uruchomione:

  • dwie odrębne usługi Strona:
    • dla back-endu – oparte o środowisko wykonawcze h1cr.io/website/python-passenger:3.7
    • dla front-endu – oparte o środowisko wykonawcze h1cr.io/website/nginx-static:latest
  • usługa Baza danych w wariancie PostgreSQL 11
  • kontenery w klasycznej infrastrukturze Stowarzyszenia (bazującej na Wirtualnych Maszynach HyperOne):
    • Minio – dla usługi składowania plików – do momentu opracowania zarządzanej usługi przez dostawcę usług chmurowych
    • Balancer – dla zintegrowania usług Strona – do momentu opracowania zarządzanej usługi przez dostawcę usług chmurowych

Dostęp do wersji demo

W sprawie dostępu do wersji demo napisz na Slacku. Dostęp do API również wymaga loginu i hasła, które można otrzymać na Slacku.

Materiały dodatkowe

Wsparcie Vercel

Projekt wspierany jest przez firmę Vercel

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 58.9%
  • TypeScript 35.3%
  • JavaScript 1.7%
  • Less 1.6%
  • HTML 1.1%
  • Makefile 0.9%
  • Other 0.5%