{"id":14483166,"url":"https://github.com/pytition/Pytition","last_synced_at":"2025-08-30T03:33:18.767Z","repository":{"id":25975825,"uuid":"105209989","full_name":"pytition/Pytition","owner":"pytition","description":"Django app for self-hosted privacy-friendly online petitions","archived":false,"fork":false,"pushed_at":"2025-07-21T06:32:00.000Z","size":5260,"stargazers_count":108,"open_issues_count":55,"forks_count":31,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-08-20T06:44:48.586Z","etag":null,"topics":["django","petition","politics","privacy-aware","privacy-online","python","signatories"],"latest_commit_sha":null,"homepage":"https://pytition.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pytition.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"patreon":"yannsionneau","github":"fallen","liberapay":"yannsionneau","custom":["https://fr.tipeee.com/pytition"]}},"created_at":"2017-09-28T23:52:43.000Z","updated_at":"2025-07-21T06:32:05.000Z","dependencies_parsed_at":"2024-01-09T01:08:14.902Z","dependency_job_id":"833cc283-c2c2-4d94-b1db-3fb7b1d847da","html_url":"https://github.com/pytition/Pytition","commit_stats":{"total_commits":702,"total_committers":48,"mean_commits":14.625,"dds":0.2535612535612536,"last_synced_commit":"803ce4b74f3af9690235842762cda24dea4250a6"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/pytition/Pytition","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytition%2FPytition","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytition%2FPytition/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytition%2FPytition/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytition%2FPytition/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytition","download_url":"https://codeload.github.com/pytition/Pytition/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytition%2FPytition/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272800745,"owners_count":24995138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","petition","politics","privacy-aware","privacy-online","python","signatories"],"created_at":"2024-09-03T00:01:34.213Z","updated_at":"2025-08-30T03:33:18.733Z","avatar_url":"https://github.com/pytition.png","language":"Python","funding_links":["https://patreon.com/yannsionneau","https://github.com/sponsors/fallen","https://liberapay.com/yannsionneau","https://fr.tipeee.com/pytition"],"categories":["Python"],"sub_categories":[],"readme":"[![Documentation Status](https://readthedocs.org/projects/pytition/badge/?version=latest)](https://pytition.readthedocs.io/en/latest/?badge=latest)\n\n# Pytition\n\n## Why using Pytition?\n\n* Because it allows you to host petitions without compromising the privacy of your signatories.\n* No tracking, ever: CSS, JS and all resources are self-hosted. Pytition does not use CDN.\n* Nice UI: Bootstrap 4 + JQuery 3.\n* Based on solid backend technology: Django.\n* Responsive UI: works well on phones/tablets/laptops/desktops.\n* If you host an instance of Pytition, you can guarantee your signatories that their informations won't leak to third parties.\n* It is Open Source and Free Software.\n\n## Features\n\n* [x] Multi-lingual UI with i18n: English, French, Italian, Occitan, Spanish.\n* [x] You can pre-visualize petitions before publishing them.\n* [x] Easy to use: petition content is typed-in via TinyMCE editors (like WordPress).\n* [x] You can setup real SMTP account for the confirmation e-mail so that it is less likely considered as SPAM.\n* [x] Supports Open Graph tags to provide description and image to allow nice cards to be shown when people post the petition link on social networks.\n* [x] You can propose your signatories to subscribe to a newsletter/mailinglist (via HTTP GET/POST or EMAIL methods).\n* [x] You can export signatures in CSV format.\n* [x] Support for several organizations on the same Pytition instance [v2.0](https://github.com/pytition/Pytition/milestone/2)\n  * Fine grain per-user per-organization permissions\n* [x] Email retry support through the use of a mail queue middleware\n* [x] Nice (multiple) permlink support for each petition\n* [x] Optional share buttons\n\n## Future features\n\n* [ ] Support for multi-lingual petition content: [v3.0](https://github.com/pytition/Pytition/milestone/3)\n* [ ] Support for adding several petition templates: [v4.0](https://github.com/pytition/Pytition/milestone/4)\n* [ ] Add optional Diaspora share icon\n\n## Install development environment\n\nSee [dev/CONTRIBUTE.md](dev/CONTRIBUTE.md)\n\n## Documentation (Installing in production, configuration, update etc)\n\nSee https://pytition.readthedocs.io\n\n## Included dependencies\n\nThose are external projects that are needed and used by Pytition, but included in Pytition source tree:\n\n* Bootstrap 4.2.1\n* JQuery 3.3.1\n* Popper 1.14.6\n* Open Iconic 1.1.1\n* TinyMCE 4.9.2\n* jQuery Smart Wizard 4\n\n## Dependencies\n\n* Python 3.8 up to 3.11\n* Django 4.2.x\n* django-tinymce 3.5.0\n* django-colorfield 0.8.0\n* requests 2.20.x\n* mysqlclient 2.0.1\n* beautifulsoup4 4.6.3\n* django-formtools 2.2\n* bcrypt\n\n## Translations\n\n| Language      | Translation % |\n| ------------- | ------------- |\n| English       | \u003ca href=\"https://weblate.framasoft.org/engage/pytition/en/?utm_source=widget\"\u003e\u003cimg src=\"https://weblate.framasoft.org/widgets/pytition/en/pytitions/svg-badge.svg\" alt=\"État de la traduction\" /\u003e\u003c/a\u003e|\n| French  | \u003ca href=\"https://weblate.framasoft.org/engage/pytition/fr_FR/?utm_source=widget\"\u003e\u003cimg src=\"https://weblate.framasoft.org/widgets/pytition/fr_FR/pytitions/svg-badge.svg\" alt=\"État de la traduction\" /\u003e\u003c/a\u003e|\n| Italian       | \u003ca href=\"https://weblate.framasoft.org/engage/pytition/it/?utm_source=widget\"\u003e\u003cimg src=\"https://weblate.framasoft.org/widgets/pytition/it/pytitions/svg-badge.svg\" alt=\"État de la traduction\" /\u003e\u003c/a\u003e|\n| Occitan       | \u003ca href=\"https://weblate.framasoft.org/engage/pytition/oc/?utm_source=widget\"\u003e\u003cimg src=\"https://weblate.framasoft.org/widgets/pytition/oc/pytitions/svg-badge.svg\" alt=\"État de la traduction\" /\u003e\u003c/a\u003e |\n| Spanish       | \u003ca href=\"https://weblate.framasoft.org/engage/pytition/es/?utm_source=widget\"\u003e\u003cimg src=\"https://weblate.framasoft.org/widgets/pytition/es/pytitions/svg-badge.svg\" alt=\"État de la traduction\" /\u003e\u003c/a\u003e |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpytition%2FPytition","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpytition%2FPytition","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpytition%2FPytition/lists"}