Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
A document for QA testing and developers to know how to test features in a non-production environment
The future of the Open Collective API is our public GraphQL API. You can check the documentation on https://graphql-docs-v2.opencollective.com.
Learn more about it here: https://medium.com/open-collective/open-collective-graphql-api-preview-3b42ed1d55ff
Our REST API is still supported but we're not working on it anymore.
Get list of members
Get collective info
Get members
Get members per tier
Get transactions from collective
The PDF service supports passing either a Personal-Token
(for personal tokens) or an Authorization
header (for OAuth).
Getting the receipt for a contribution
Getting the PDF for an Invoice Expense
Getting a bundled receipt for a fiscal host/period
Get paid to contribute to Open Source!
The Open Collective engineering team is small, and we're always looking for new contributors to our Open Source codebases. Our Bounty program is an opportunity to solve issues that could be neglected otherwise. Contributors who fix these issues will be rewarded financially.
Our bounty program is about creating opportunities for our community to contribute to Open Collective, to make it their own. It also gives us an opportunity to get to know developers who we could potentially work with more in the future. We celebrate making open source contributions more sustainable by paying, but money alone shouldn't be the primary motivation for participation.
We're not able to accept pull requests that aren't completed to a high standard in a reasonable timeframe. Please only pick up bounties that you are confident you can complete at your current knowledge and skill level. We will not accept pull requests or pay bounties for code that's not up to the standard we need to maintain for the Collectives who rely on this platform.
Our dev team is happy to answer questions and provide some limited support, but we don't have capacity to mentor junior developers through the bounty program.
For general guidelines about what's expected in the code, see more info here.
For reference, until July 2020, we used the following model:
$100: minimal or unknown complexity
$200: simple complexity
$500: medium complexity
Note: we are not able to pay bounties to people based in countries sanctioned by the United States, or countries where US sanctions are so widespread that our payment processors no longer serve them.
But since then we have moved to a more flexible one. Based on the importance of the issue and its complexity, we attach a bounty between $100 and $1000 to the ticket.
We want to attract quality contributions. The issue will only be considered complete and approved for payment if the Pull Request is merged by an Open Collective Core Developer.
Search for issues with attached bounties:
Express interest by commenting on the issue and ask to be assigned
Open a Pull Request and ask for feedback and review
Incorporate feedback from Core Developers, if applicable
PR is reviewed, approved, and merged by a Core Developer
Get paid:
If you can issue an invoice, submit it as expense to Ofitech.
If you can't issue an invoice, ask to be rewarded with an Open Collective Gift Card
See more info about getting paid through Open Collective
Issues tagged as "bounty candidate" are issues that we are considering to add bounties for, but that are not bounties yet - either because they lack proper specifications, a team consensus, or because we don't have the bandwidth to review it at the moment. Feel free to comment on such issues to ask for a bounty to be added if it's something you're willing to work on.
Financial compensation can only happen if the issue has a "bounty" tag with a pre-defined amount. In other words, completing a bounty candidate that didn't receive the "bounty" tag will not make you eligible for the bounty program.
The options supported for paying bounties are the ones supported by Ofitech, namely:
PayPal
Bank account transfers (to countries not in the US sanctioned list)
Make sure the issue is understandable for newcomers and expectations are clearly set
Tag issues with the "bounty" label and amount (e.g. "$100")
Add a comment with a basic explanation of the Bounty process and link to BOUNTY.md
A $100 bounty was attached to this issue. Anyone submitting a Pull Request will be rewarded with $100 when the Pull Request is reviewed, accepted and merged. More info.
Make sure the issue is understandable for newcomers and expectations are clearly set
First Time Contributors
Not part of the Open Collective GitHub organization
Fork our projects on GitHub and push changes on their forks
Have access to minimal or simple complexity issues
Should comment on bounty issues to get assigned (limited to one at a time)
Contributors (at least 1 completed issue)
Added to the "Contributors" group in the Open Collective GitHub organization
Can push branches to the Open Collective repositories
Have access to minimal, simple or medium complexity issues
Can assign themselves bounty issues (limited to one at a time)
Recurring Contributors (3 or more completed issues)
Added to the "Recurring Contributors" group in the Open Collective GitHub organization
Can assign themselves two bounty issues at a time
Confirmed Contributors (3 or more completed issues including at least 2 with medium complexity)
Added to the "Confirmed Contributors" group on the Open Collective GitHub organization
Become candidates to work on complex issues or projects on a negotiable per-project or hourly rate
We're happy to have you contributing to our codebase! We recommend you go through the following guide.
You'll need to have some basic programming experience with the technologies and tools we use.
Git & Github - Clone, commit and open a PR using Git with GitHub. Check out the following tutorials:
JavaScript/Node.js - We recommend having basic experience working with Node, which Open Collective is written in (frontend & backend). Check out these free JavaScript & Node tutorials:
GraphQL - Our API uses GraphQL, powered by Sequelize and PostgreSQL. Understanding how this work is important to contributing to or fixing the majority of the issues on our API. To learn more, check out these tutorials & articles:
React & Next.js - You'll need to understand React and Next.js to contribute to issues on the frontend. Check out the following links:
The project's core repositories are divided into three:
opencollective/opencollective - Here is where we manage issues and community discussions. Our issues are all labelled with a complexity label. We recommend starting with simple issues ( complexity -> simple
).
opencollective/opencollective-frontend - This repository contains our frontend code. You can find more information in the setup section of this guide.
opencollective/opencollective-api - This contains our API code. If you enjoy working on the backend, you can set up our API locally. To learn about setting it up, check out the setup section below.
This section explains how you can get Open Collective running locally on your computer.
Setting up the frontend is straightforward. We've provided a comprehensive guide in a separate document that explains how to set up the project.
https://github.com/opencollective/opencollective-frontend/blob/main/README.md
NOTE: If you're only contributing frontend code, you don't need to setup the API.
The API setup requires more effort than the frontend, as it requires installing the PostgreSQL. You might experience difficulty setting up the API on a Windows environment. We recommend using a Unix environment.
Just like the front end, we have a separate document for the setup.
https://github.com/opencollective/opencollective-api/blob/main/README.md
Like to contribute to our design? Checkout our design contribution guidelines.
Before you make your first commit, read through our commit convention, provided in the link below:
https://github.com/opencollective/opencollective-frontend/blob/main/CONTRIBUTING.md
We recommend you learn more about our bounty program through the link below:
If you are stuck or have a question, join our Discord #engineering channel through the link below:
We're trying our best to make our documentation better. We encourage you to give suggestions on how we can improve it.
In Open Collective, every entity is a collective and can be accessed publicly via their unique slug https://opencollective.com/:slug
. In our public API, Collectives are usually refered to as Accounts
. You can think about it like "profiles" that's what we really store in that table.
A Collective can be of type:
COLLECTIVE e.g. Webpack
EVENT e.g. BrusselsTogether Meetup 4
ORGANIZATION e.g. iDoneThis, DigitalOcean, etc.
USER e.g. xdamman
PROJECT
FUND
A Member connects two profiles together. It can have multiple roles (one role per row):
HOST legal holder of the bank account that holds the money on behalf of the collective
ADMIN users who can approve expenses for the collective
MEMBER aka core contributors
BACKER users who gave money to the collective
An Order is the intent to give money to an Account. It is created by a UserId on behalf of a collective (which can be their own UserCollective or any other Collective that they are a member of).
Attributes:
Attribute
Definition
Example
UserCollectiveId
User who created the order
/xdamman
FromCollectiveId
Source of the money
/digitalocean
CollectiveId
Destination of the money
/webpack
currency
currency of the ToCollectiveId
USD
amount
amount in cents
10000
SubscriptionId
References recurring subscription
status
status of the order
PENDING -> APPROVED|REJECTED -> PAID
A Transaction records money moving from one account to another ac. In this example, a collective webpack is giving €100 to Women Who Code Berlin hosted by Women Who Code 501(c)(3).
Attribute
Definition
Example
OrderId
References the order
1
FromCollectiveId
Source of the money (virtual account)
/webpack
ToCollectiveId
Destination of the money (virtual account)
/wwcodeberlin
PaymentMethodId
Payment method (e.g. if there wasn't enough funds in the FromCollectiveId
)
NULL
FromHostId
Source of the money
/opensource
ToHostId
Destination of the money
/wwcode
FromHostAmount
total amount in cents paid by the host of the FromCollectiveId
in the currency of the host
-11481 (-$114.81)
FromCollectiveAmount
total amount that increases/decreases the balance of the FromCollectiveId
in the currency of the FromCollectiveId
-11481
paymentProcessorFeesInHostCurrency
fees for the payment processor in cents
hostFeesInHostCurrency
fees for the host in cents in the currency of the host (which might be different than the currency of the collective, e.g. WWCode (USD) and WWCode Berlin (EUR)
574 (5% of €100 in USD)
platformFeesInHostCurrency
fees for the platform (Open Collective)
574 (5% of €100 in USD)
ToHostAmount
net amount in cents received by the host of the ToCollectiveId
in the currency of the ToHostId
9630 (€100 - (2.9% + $0.30) - €5 platform fee)
ToCollectiveAmount
total amount that increases/decreases the balance of the ToCollectiveId
in the currency of the order
9580 (€96.30 - €5 host fee)
FromHostCurrency
currency of the FromHostId
USD
FromCollectiveCurrency
currency of the FromCollectiveId
USD
ToCollectiveCurrency
currency of the collective that receives the money
EUR
ToHostCurrency
currency of the order (currency of the ToCollectiveId
)
USD
fxrate
Foreign eXchange Rate from the currency of the order (ToCollectiveCurrency
) to the currency of the host of the FromCollectiveId
(float)
1.15
Note: The Collective currency might be different than the Host Currency (both for the source "From" and the recipient "To"). The fxrate only takes into account the conversion between ToCollectiveCurrency
to ToHostId
.