Awesome
<div align="center"> <a href="https://github.com/activist-org/activist"><img src="https://raw.githubusercontent.com/activist-org/Organization/main/logos/activistGitHubOrgBanner.png" width=1024 alt="activist Logo"></a> </div>An open-source activism platform
activist.org is a platform that enables more people to safely engage in activism by making it easy to discover organizations and events as well as coordinate and collaborate on political action. We want to enable activists to learn proven and novel strategies from each other for social and ecological change. Free, open-source, privacy-focused and governed by our community.
<!-- > [Learn more about our organization on activist.org](https://activist.org/organizations/1/about) -->[!NOTE] The contributing section has information for those interested.
<a id="contents"></a>
Contents
- Our goals
- Contributing
- Environment setup
- Design and accessibility
- Platform features
- Securely hosted
- Community governance
- Localization
- Supporters and partners
<a id="our-goals"></a>
Our goals ⇧
The activist community is creating a global platform where movements grow and people are inspired to join in political actions. We want to update how power is distributed in our society by removing barriers and enabling more people to safely engage in activism.
<a id="topics"></a>
Topics
The following are the working topics that activist could include:
Environment | Housing | Refugees and Migration |
LGTBQIA+ | Racial Justice | Women's Rights |
Children's Rights | Elder Rights | Education |
Health and Wellbeing | Animal Rights | Democracy |
Labor Rights | Technology and Privacy | Peace and Resolution |
Nutrition | Accessibility and Inclusion | Institutional Transparency |
Freedom of Expression | Infrastructure and Mobility | Emergency Relief |
<a id="preview-video"></a>
Preview video ⇧
The following is a recording of the Creating and Joining Events prototype found on Figma:
Further prototypes and designs are available in the designs for activist.
<a id="contributing"></a>
Contributing ⇧
<a href="https://matrix.to/#/#activist_community:matrix.org"><img src="https://raw.githubusercontent.com/activist-org/Organization/main/resources/images/logos/MatrixLogoGrey.png" height="50" alt="Public Matrix Chat" align="right"></a>
We use Matrix for our internal communication. You're more than welcome to join us in our public chat rooms to share ideas, ask questions or just say hi to the team :)
Please see the contribution guidelines and style guide if you are interested in contributing. Work that is in progress or could be implemented is tracked in the issues and projects.
[!NOTE] Just because an issue is assigned on GitHub doesn't mean that the team isn't interested in your contribution! Feel free to write in the issues and we can potentially reassign it to you.
Also check the -next release-
and -priority-
labels in the issues for those that are most important, as well as those marked good first issue
that are tailored for first time contributors. For those new to coding or our tech stack, we've collected links to helpful documentation pages in the contribution guidelines.
We would be happy to discuss granting you further rights as a contributor after your first pull requests, with a maintainer role then being possible after continued interest in the project. activist seeks to be an inclusive, diverse and supportive organization. We'd love to have you on the team!
<a id="how-you-can-help"></a>
How you can help ⇧
- Reporting bugs as they're found 🐞
- Working with us on new features ✨
- Localizing content for the platform 🌐
- Please join our public localization project on Weblate!
- Documentation for onboarding and project cohesion 📝
- Sharing activist.org with others! 🚀
<a id="environment-setup"></a>
Environment setup ⇧
- First and foremost, please see the suggested IDE setup in the dropdown below to make sure that your editor is ready for development.
[!IMPORTANT]
<details><summary>Suggested IDE setup</summary> <p>VS Code
Install the following extensions:
- batisteo.vscode-django
- bradlc.vscode-tailwindcss
- charliermarsh.ruff
- esbenp.prettier-vscode
- streetsidesoftware.code-spell-checker
- Vue.volar
WebStorm
</p> </details>
- Check out the Vue.js development docs
- Make sure a local Node.js interpreter is configured in your project
- Make sure the Vue.js plugin and JavaScript Debugger are enabled in the plugins page of the settings
- To setup your development environment, first install Docker and Docker Compose.
[!NOTE] If you are new to Docker, activist recommends installing Docker Desktop. Docker Desktop comes with many Docker tools and a straightforward user interface.
- Fork the repo, clone your fork, and configure the remotes:
[!NOTE]
<details><summary>Consider using SSH</summary> <p>Alternatively to using HTTPS as in the instructions below, consider SSH to interact with GitHub from the terminal. SSH allows you to connect without a user-pass authentication flow.
To run git commands with SSH, remember then to substitute the HTTPS URL,
https://github.com/...
, with the SSH one,git@github.com:...
.
- e.g. Cloning now becomes
git clone git@github.com:<your-username>/activist.git
GitHub also has their documentation on how to Generate a new SSH key 🔑
</p> </details>
# Clone your fork of the repo into the current directory.
git clone https://github.com/<your-username>/activist.git
# Navigate to the newly cloned directory.
cd activist
# Assign the original repo to a remote called "upstream".
git remote add upstream https://github.com/activist-org/activist.git
- Now, if you run
git remote -v
you should see two remote repositories named:origin
(forked repository)upstream
(activist repository)
-
Create a virtual environment for the backend, activate it and install dependencies:
# Unix or MacOS: python3 -m venv venv source venv/bin/activate # Windows: python -m venv venv venv\Scripts\activate.bat # After activating venv: pip install --upgrade pip pip install -r backend/requirements-dev.txt
-
Start your docker images with the following:
# --build only necessary with new dependencies or backend model changes docker compose --env-file .env.dev up --build # And to stop the containers when you're done working: # docker compose --env-file .env.dev down
Sometimes changes to the database can cause the database population to fail in your environment. If this happens, you can destroy the deployment and rebuild it:
# Destroy your current docker-compose deployment: docker-compose rm -f -v --env-file .env.dev
-
You can then visit http://localhost:3000 to see the development frontend build once the container is up and running. From there click
View organizations
orView events
to explore the platform. -
To view the backend admin UI and Swagger UI, visit http://localhost:8000/admin and http://localhost:8000/v1/schema/swagger-ui/ respectively.
-
If you'd like to sign in to the frontend via http://localhost:3000/auth/sign-in or the Django admin panel via http://localhost:8000/admin, then you can use the fixtures
admin
user with the passwordadmin
.
[!NOTE] Feel free to contact the team in the Development room on Matrix if you're having problems getting your environment setup! If you're having issues with Docker and just want to get the frontend or backend up and running, please see the section on this in the contributing guide.
-
Install pre-commit to ensure that each of your commits is properly checked against our linter and formatters:
# In the project root: pre-commit install
[!NOTE] pre-commit is Python package that can be installed via pip or any other Python package manager. You can also find it in our requirements.txt file.
pip install pre-commit
<a id="tech-stack"></a>
Tech Stack ⇧
The following are the current and planned technologies for activist.org:
Frontend
- Nuxt.js • Vue.js • TypeScript • Tailwind CSS • Headless UI
Backend
Deployment
Internationalization
Analytics
[!NOTE] Those new to any frameworks or technologies who want to work on their skills are more than welcome to contribute!
<a id="design-a11y"></a>
Design and accessibility ⇧
<a href="https://www.figma.com/file/I9McFfaLu1RiiWp5IP3YjE/activist_designs?node-id=805%3A231"><img src="https://raw.githubusercontent.com/activist-org/Organization/main/resources/images/logos/FigmaLogo.png" height="50" alt="Public Figma Designs" align="right"></a>
The designs for activist are made using Figma. You can use the issues to make suggestions for improvements. Design related issues are marked with the design
label.
We want our tools to look great, feel easy to use and function flawlessly on any device while at the same time including good security practices wherever possible. We also consistently make decisions that put a11y at the center of what we’re building.
[!NOTE] Please contact the team on GitHub or via the email on the designs welcome page if you're interested in contributing. We'd love to see a sample of your work and if everything looks good we'll schedule a time to get connected!
<a id="platform-features"></a>
Platform features ⇧
The project board is where we organize our work and plan out what's next. The following sections give a general overview of the various planned features of activist.org.
Organizations profiles ⇧
Easy-to-use microsites for organizations of all sizes with multiple subpages.
Describe your organization’s aims and structure as well as answer frequently asked questions. Explain how your groups collaborate and safely onboard new people to the team.
Events ⇧
Collaborative event pages made for activists and their needs.
Organizations can create flexible event pages for different formats of events. There are two types of events:
- Learn: seminars, meetings, panel discussions
- Action: protests, volunteering, canvassing
Other event features include:
- A feed will allow organizers to share information in real time with participants
- Organizations can create event templates and share them with allies
- Event pages can be transformed into flyers or posters and linked to via QR codes
- Legal notes can be added to warn participants of the risks involved
Resources ⇧
A simple link hub for organizations.
Organizations can keep important links (chats, articles, pads, etc.) in one place, group what belongs together and pin to the top what’s currently most important. Private by default, resources can also be made public to share information and best practices.
Onboarding ⇧
Safe methods to onboard new members.
We are working on a conversational onboarding interface based on the Matrix protocol that operates across messengers while not compromising data sovereignty for organizations or individuals. Organizations will also have the option to include their existing processes if preferred.
Search ⇧
Easily find, filter and share.
Display search results in list, map and calendar views. Users can also save searches for later or set up notifications for newly published events, resources, and discussions.
Discussions ⇧
Dedicated forums for organizations and their events.
Discussions will also allow organizations, groups and events to send notifications to supporters. Included features for democratic decision making will further enable asynchronous planning.
Tasks ⇧
Kanban boards for organizing the work to be done.
Users will be able to attach kanban boards to every organization, group and event. This will allow those involved to easily plan and keep an overview of progress while templates guide organizers with best practices from our community.
Affiliates ⇧
Relationships between organizations, people and events.
Organizations and users can give support to each other as well as events:
- Supporter: a one-way relationship of support
- Ally: a relationship of mutual support
Relationships between organizations will help users find similar organizations or easily connect with actions when they’re in a new place. Affiliations will also determine notifications and access to restricted content.
Votes ⇧
Linking events and organizations to decision making.
Users will be able to subscribe for updates on events and organizations that work in relation to legislation and elections. The plan for this feature is that it will be based on data from Wikidata, with open data generating the vote pages that our community then maintains.
<a id="securely-hosted"></a>
Securely hosted ⇧
We are hosting our data in Iceland with a reputable hosting provider that is trusted by whistleblowers, activists and investigative journalists: FlokiNET.
Iceland is a strong supporter for net neutrality with strict privacy protection laws and freedom of the press. All these factors have contributed to making Iceland a preferred destination for data centers.
You can learn more about FlokiNET on their blog.
<a id="community-governance"></a>
Community governance ⇧
We not only value, but need open discourse. Our initial feature set for the MVP and future releases was developed together with our growing community of activists.
Our aim is to secure a progressive community by design while putting platform health before platform growth. Only organizations that are already on activist will be able to vouch for new organizations that apply to join. Together with experienced activists we are selecting an initial group of organizations that have a proven track record of inclusivity and elevating underrepresented groups.
We are still developing our operating principles and will always update them based on community decisions. Questions around flagging, banning, guidelines and rules will always be answered collectively.
<a id="localization"></a>
Localization ⇧
<a href="https://hosted.weblate.org/projects/activist/activist"><img src="https://raw.githubusercontent.com/activist-org/Organization/main/resources/images/logos/WeblateLogo.png" height="100" alt="Visit Weblate project" align="right"></a>
We need to break down language barriers in order to mobilize larger and more diverse coalitions. Translation requests will be available for several assets on the platform - organization profiles, events and resources - and we are growing our network of volunteer contributors to facilitate this.
[!NOTE] Want to join our translators working group? Please join us in the localization project on Weblate and the Localization channel on Matrix to get involved!
Localization of activist is done via Weblate. Please see the localization guide for information on how to get started!
Localization coverage ⇧
<a href="https://hosted.weblate.org/projects/activist/activist">
<img src="https://hosted.weblate.org/widget/activist/activist/multi-auto.svg" alt="Translation status" />
</a>
<a id="supporters-partners"></a>
Supporters and partners ⇧
Contributors
Thanks to all our amazing contributors! ❤️
<a href="https://github.com/activist-org/activist/graphs/contributors"> <img src="https://contrib.rocks/image?repo=activist-org/activist" /> </a>Code and dependencies
We would like to thank all the great software that made activist's development possible 🙏
- Countless Nuxt modules
- OpenStreetMap
- MapLibre
Our supporters
Licensed software providers
The following organizations have supported activist with licenses to use their technology for free:
The Wikimedia UNLOCK Accelerator
These organizations have supported activist via the 2022 edition of the Wikimedia UNLOCK accelerator. UNLOCK supported open-source software projects and non-technical projects under free licenses. UNLOCK Accelerator was committed to promoting solutions that make the world's knowledge more diverse, more accessible and inclusive for everyone.
<div align="center"> <br> <a href="https://www.wikimedia.de"><img height="130"src="https://raw.githubusercontent.com/activist-org/Organization/main/resources/images/logos/WikimediaDeutschlandLogo.png" alt="Wikimedia Deutschland"></a> <a href="https://wikimedia.rs"><img height="120" src="https://raw.githubusercontent.com/activist-org/Organization/main/resources/images/logos/WikimediaSerbiaLogo.png" alt="Wikimedia Serbia"></a> <a href="https://belgrade.impacthub.net"><img height="120" src="https://raw.githubusercontent.com/activist-org/Organization/main/resources/images/logos/ImpactHubLogo.png" alt="Impact Hub Belgrade"></a> <br> </div>Disclosure
activist is not directly affiliated with any corporation, political party or government.