Nasza strona powstała z myślą o wspieraniu organizacji charytatywnych w Polsce. Od początku za najwazniejsze założenia przyjęliśmy pełną transparentność, otwartość kodu, użycie rozwiązań darmowych i wykluczenie wszelkich możliwości pozyskiwania jakichkolwiek korzyści za jej tworzenie, prowadzenie i rozwój.
Wyslij.co jest projektem otwartym, dostępnym na zasadach wolnego oprogramowania. Dzieki temu każdy może uczestniczyć w jego rozwoju.
Jeżeli chcesz dołączyć do grona kontrybutorów, przede wszystkim przejrzyj naszą sekcję
Issues repozytorium. Szukaj zgłoszeń
na nowe funkcjonalności lub błędy, które zostały już przedyskutowane i zatwierdzone przez nasz
zespół. Najczęściej takie zadania dla nowych osób będą oznaczone specjalną etykietą
good first issue
albo help needed
.
Jeżeli masz pomysł na nowe funkcjonalności lub widzisz błąd - zgłoś je także przez Issues. To także ważna forma kontrybucji do projektu!
Od początku zależało nam, żeby wyslij.co było usługą jak najtańszą i najłatwiejszą w utrzymaniu. Ze względu na jej prostotę zdecydowaliśmy się hostować ją w formie strony na GitHub Pages. GitHub oferuje cały szereg narzędzi, dzięki którym realizacja naszego zadania okazała się możliwa praktycznie bez kosztów finansowych, a jedynie angażując nasz czas pracy.
Zanim zabierzesz się za pracę nad naszym projektem, zapoznaj się z jego założeniami oraz konstrukcją, żeby lepiej rozumieć, jak dostarczamy nasze rozwiązanie.
Do budowania strony wykorzystujemy prosty framework backendowy - Flask - dostępny w języku Python. Dzięki dodatkowej bibliotece Frozen Flask, możemy automatycznie generować statyczne pliki dla poszczególnych podstron usługi.
W lokalnym środowisku możemy wykorzystać Flaska do kodowania rozwiązań. Budowanie stron odbywa się w procesie zautomatyzowanym za pomocą GitHub Actions. Wygenerowane pliki statyczne są ładowane na serwery GitHuba i tam aktualizowana jest nasza strona.
Silnikiem do budowania stron jest wspomniany wyżej Flask wraz z Frozen Flask. Budują one strony z użyciem szablonów napisanych z użyciem Jinja2. Rozwiązania te napisane są w języku programowania Python.
Część frontendowa napisana jest przede wszystkim z wykorzystaniem frameworka tailwind CSS.
Aby uruchomić projekt będziesz potrzebować przede wszystkim zainstalowanego na komputerze interpretera
języka Python. Dobrym narzędziem do tego może być pyenv
wraz z pluginem pyenv-virtualenv.
Z ich pomocą utwórz virtualenv, w którym bedziesz instalować zależności projektu.
Mając aktywny virtualenv zainstaluj zależności z użyciem pip
z poziomu głownego folderu repozytorium kodu:
pip install -r requirements.txt
Aby uruchomić deweloperski serwer:
ORGANIZATIONS_DIR_PATH=organizations ORGANIZATIONS_SLUG_FIELD_NAME=adres python site/server.py
Dla ułatwienia prac nad kodem, przyjmujemy, że w kodzie źródłowym wykorzystujemy angielskie nazwy - zarówno dla zmiennych, jak i funkcji. Jeżeli gdzieś musimy zastosować polskie nazwy (szczególnie taką konwencję przyjęliśmy w plikach yaml edytowanych przez organizacje), staramy się je parametryzować w konfiguracji projektu.
W opisach Pull Requestów oraz w Issues stosujemy język polski, żeby uprościć komunikację z organizacjami i każdym, kto chciałby z nami współpracować nad rozwojem usługi.
Gotowe zmiany należy przedstawić w formie Pull Requestu. Każda zmiana wymaga zatwierdzenia przez przynajmniej jedną osobę z naszego zespołu. W opisie Pull Requesta zamieść informacje o wprowadzonych zmianach oraz odniesienie do Issue, którego dotyczą zmiany.
W razie wszelkich niejasności, najlepszym kanałem komunikacji z nami jest sekcja Issues. Wystarczy założyć nowe zgłoszenie i opisać zagadnienie.