Liberapay는 재발 기부 플랫폼입니다. 우리는 당신이 당신이 감사하는 제작자와 프로젝트에 자금을 지원하도록 도와줍니다.
참고 :이 웹 앱은 자체 호스팅이 아닙니다.
채팅하고 싶어? Gitter에 우리와 함께하십시오.
또는 Github 살롱에 메시지를 게시 할 수 있습니다.
Weblate를 통해 Liberapay를 번역하는 데 도움이 될 수 있습니다. 현재 상태 :
Liberapay 번역에 대해 궁금한 점이 있으면 살롱에서 물어볼 수 있습니다.
Liberapay는 원래 Gratipay에서 포크되어 파일 시스템 라우팅 및 단순을 기반으로하는 웹 마이크로 프레임 워크 Pando ( Né Aspen)를 물려 받았습니다. 걱정하지 마세요. 아주 간단합니다. 예를 들어 Liberapay가 Hello $user, your id is $userid URL /$user/hello 에 대한 요청에 대한 $ userID 메시지입니다. www/%username/hello.spt 다음과 같이 파일 만 만들면됩니다.
from liberapay.utils import get_participant
[---]
participant = get_participant(state)
[---] text/html
{{ _("Hello {0}, your id is {1}", request.path['username'], participant.id) }}
마지막 줄에서 알 수 있듯이 기본 템플릿 엔진은 Jinja입니다.
_ 함수는 메시지를 사용자의 언어로 변환하려고 시도하고 변수를 올바르게 탈출합니다 (HTML 페이지에 대한 메시지를 생성하고 있음을 알고 있습니다).
Simplates 내부의 Python 코드는 요청별로 논리에만 해당되며 일반적인 백엔드 코드는 liberapay/ Directory에 있습니다.
다음과 같은 종속성이 먼저 설치되어 있는지 확인하십시오.
그런 다음 실행 :
make env
이제 Superuser Postgres Powers (아직 수행되지 않은 경우)를 제공하고 두 개의 데이터베이스를 작성해야합니다.
su postgres -c "createuser --superuser $(whoami)"
createdb liberapay
createdb liberapay_tests
더 깊은 이해가 필요한 경우 데이터베이스 역할을 살펴보고 PostgreSQL 문서의 데이터베이스 섹션을 관리하십시오.
그런 다음 DB를 설정할 수 있습니다.
make schema
환경 변수는 구성에 사용되며 기본값은 defaults.env 으로 표시 및 tests/test.env 입니다. local.env 및 tests/local.env 에서 이들을 무시할 수 있습니다.
모든 것을 설치하고 데이터베이스를 설정하면 앱을 실행할 수 있습니다.
make run
이제 http : // localhost : 8339/에서 액세스 할 수 있어야합니다.
기본적으로 제공되는 사용자는 없습니다. 실제 웹 사이트에서와 같이 계정을 만들 수 있으며 원하는 경우 가짜 사용자를 많이 만들 수도 있습니다.
make data
계정에 관리 권한을 부여하려면 데이터베이스를 수정하십시오.
psql liberapay -c "update participants set privileges = 1 where username = 'account-username'"
현지 급여일을 실행하려면 http : // localhost : 8339/admin/payday를 열고 "급여일 실행"버튼을 클릭하십시오. local.env 파일에 OVERRIDE_PAYDAY_CHECKS=yes 추가하여 잘못된 시간에 월급 날을 실행하지 않는 안전 점검을 비활성화 할 수 있습니다.
Python 코드는 Postgres.py 라이브러리를 통해 원시 SQL 쿼리를 보내서 데이터베이스와 상호 작용합니다.
공식 PostgreSQL 문서는 SQL, 특히 "SQL 언어"및 "SQL 명령"섹션을 다룰 때 친구입니다.
DB 스키마는 sql/schema.sql 에 있지만 해당 파일을 직접 수정하지 않고 대신 sql/branch.sql 에 변경 사항을 넣습니다. 배포하는 동안 해당 스크립트는 프로덕션 DB에서 실행되며 변경 사항은 sql/schema.sql 로 병합됩니다. 이 과정은 release.sh 에 의해 반자동입니다.
스타일의 경우 Sass 및 Bootstrap 3을 사용합니다. 스타일 시트는 style/ 디렉토리에 있고 JavaScript 코드는 js/ 에 있습니다. 둘 다에 대한 우리의 정책은 가능한 한 적은 것을 포함하는 것입니다.
우리는 style/bootstrap/ 디렉토리의 Sass 소스에서 부트 스트랩을 컴파일합니다. style/variables.scss 의 값을 변경하여 쉽게 사용자 정의 할 수 있도록합니다. style/bootstrap/ 로 파일을 수정하는 것은 아마도 나쁜 생각 일 것입니다.
사용자 인터페이스 아이콘의 경우 부트 스트랩 아이콘을 사용합니다. 아이콘은 templates/macros/icons.html 에서 icon 매크로 {{ icon('liberapay') }} 호출하여 페이지에 포함될 수 있습니다. 아이콘은 www/assets/icons.svg 파일에 저장됩니다. 해당 파일에 새 아이콘을 추가하려면 추가되는 아이콘의 root <svg> 요소를 <symbol> 요소로 바꾸어야합니다. viewBox 속성 만 보존하고 id 속성을 추가해야합니다.
유스 케이스에 맞는 부트 스트랩 아이콘에 아이콘이 없으면 Flaticon, Icons8, Pictogrammers, SVG Repo 및 The Noun Project와 같은 온라인 카탈로그를 검색 할 수 있습니다. 브랜드 아이콘의 경우 간단한 아이콘이 좋은 리소스입니다.
테스트 스위트를 실행하는 가장 쉬운 방법은 다음과 같습니다.
make test
이것은 테스트 DB의 스키마를 재현하고 모든 테스트를 실행합니다. 속도를 높이려면 다음 명령을 사용할 수도 있습니다.
make pytest 테스트 DB를 재현하지 않고 Python 테스트 만 실행하십시오.make pytest-re 이전에 실패한 테스트 만 실행하십시오 우리의 테스트 중 일부에는 외부 서비스와의 상호 작용이 포함됩니다. 이러한 테스트 속도를 높이기 위해 VCR을 사용하여 요청과 응답을 자동으로 기록합니다. 레코드는 tests/py/fixtures 디렉토리, 테스트 클래스 당 하나입니다.
외부 서비스와의 상호 작용을 추가하거나 수정하면 VCR이 레코드에서 새 또는 수정 된 요청을 찾지 못하고 기본적으로 새 요청을 기록하지 않기 때문에 테스트가 실패합니다 (자세한 내용은 레코드 모드 참조). 이 경우 테스트 명령에 VCR=new_episodes 추가하거나 (예 : make pytest VCR=new_episodes ) 쓸모없는 픽스처 파일을 삭제할 수 있습니다 (예 : rm tests/py/fixtures/TestPayinsStripe.yml ).
Idempotency 키 (예 : Stripe의 API)를 사용하는 API를 테스트하는 경우 더 이상 동일하지 않으면 일부 요청이 실패합니다. 이 경우 다른 idempotency 키가 사용되도록 테스트 클래스의 offset 속성의 값을 높이십시오.
PostgreSQL은 데이터 손실을 방지하도록 설계되었으므로 기본적으로 많은 동기 디스크 쓰기를 수행합니다. 블록 쓰기의 수를 줄이기 위해 recreate-schema.sh 스크립트는 자동으로 synchronous_commit 옵션을 테스트 데이터베이스의 off 로 전환하지만 동기화를 완전히 비활성화하지는 않습니다. PostgreSQL 인스턴스에 손실 될 수있는 데이터 만 포함 된 경우 서버의 구성 파일 ( postgresql.conf )에서 fsync , off 및 max_wal_senders wal_level minimal 0 으로 설정하여 더 빠른 속도를 높일 수 있습니다.
Liberapay는 현재 Stripe 및 PayPal의 두 가지 지불 프로세서를 지원합니다.
make stripe-bridge 실행하여 Stripe의 콜백을 로컬 Liberapay 인스턴스로 전달할 수 있습니다. Stripe-CLI 프로그램을 설치하려면 설치해야합니다.
악성 코드 나 보안 취약점이 포함되어 있지 않은지 확인하려면 모든 새로운 종속성을 감사해야합니다.
우리는 PIP의 해시 체크 모드를 사용하여 의존성 변조로부터 자신을 보호합니다. 따라서 종속성을 추가하거나 업그레이드 할 때 새 해시를 계산하고 요구 사항 파일에 넣어야합니다. 이를 위해 해시를 사용할 수 있습니다.
pip install hashin
hashin package==x.y -r requirements_base.txt
어떤 이유로 든 모든 요구 사항을 재사용 해야하는 경우 RUN make rehash-requirements .
요구 사항 파일의 모든 종속성을 업그레이드하려면 hashin -u -r requirements_base.txt 실행하십시오. 새로운 하위 의존성이 누락 된 경우 추가 hashin 명령을 실행해야 할 수도 있습니다.
requirements_tests.txt 의 테스트 종속성은 생산에 설치되지 않았기 때문에이 규칙을 따르지 않습니다. 테스트 종속성에서 가능한 취약점으로부터 보호하기 위해 개발 환경을 다른 시스템에서 분리하는 것은 귀하의 책임입니다.
개인 정보를 처리하는 코드를 작성할 때는 GDPR에 구한 원칙을 명심하십시오.
참고 : Liberapay는 자체 주최 할 수 없으며이 섹션은 새로운 버전을 배포하는 방법 만 문서화하기위한 것입니다.
Liberapay는 현재 AWS (아일랜드)에서 호스팅됩니다.
앱을 배포하려면 간단히 ren release.sh 배포하려면이를 안내합니다. 물론 먼저 액세스해야합니다.
CC0 공개 도메인 헌신 (자세한 내용은이 토론 참조)