Code Monkey home page Code Monkey logo

opencollective's Introduction

logo

Please raise all issues in this repo, which serves as an overview for the project.

Crowdin

What is OpenCollective?

Open Collective is an online funding platform for open and transparent communities. We provide the tools to raise money and share your finances in full transparency.

Documentation

Please see our help docs for all info, including user guide, how to contribute, and developer docs: https://docs.opencollective.com

Bounties

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. Please see our docs for more information: https://docs.opencollective.com/help/contributing/development/bounties

Issues

This repository serves as our main issue tracker. When creating issues, it's important to follow common guidelines to make them extra clear. Here is a few links that we liked to help you achieve that:

Questions?

Join our Slack or email support.

opencollective's People

Contributors

abitrolly avatar ainigrivs avatar alanna avatar arnaudbenard avatar asood123 avatar benjam avatar betree avatar clarete avatar coliff avatar gitter-badger avatar gustavlrsn avatar hipsterbrown avatar iamronen avatar jzabala avatar kapsir avatar kewitz avatar marcogbarcellos avatar nayafia avatar piamancini avatar richardlitt avatar rugk avatar sbinlondon avatar sedubois avatar sloria avatar snitin315 avatar sudharakap avatar theevilskeleton avatar vsund avatar xdamman avatar znarf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencollective's Issues

Create an "Operator" route

We want to experiment quickly, so in many cases instead of hacking the backend, we can have someone manually do the work during the experiment. So, let's create the "Operator" route. It takes the payload from the frontend and sends an email to operator@.

Ex: Allow splitting a donation towards multiple collectives. Instead of building the backend and shuffling tables for something that may not stick around, let the frontend send the split of money for each collective in a payload to the Operator.

const payload = {
    userId: 89,
    donationAmount: 100,
    donationCurrency: USD,
    split: {
        WWCode_HQ: 20, 
        WWCode_Seattle: 70,
        OC: 5,
        fees: 5
    }
}

The Operator (one of us) will manually "Add funds" to the right collectives.

Specs

  • Takes a payload and sends it to operator@
  • The route should only require a valid applicationKey to work

Add a custom one-liner/bio when making a donation

When making a donation, we should allow the donor to say a few words about them.
E.g. "Developer at Awesome Agency", "Thanks for this awesome open source project!", "In memory of ...", "Go Women Who Code, you rock!", "Proud sponsor", ...

Characters limit should be 100 (so that there is room to add a URL and @mention in a tweet).

Because it is related to the collective, it should be stored in the UserGroups table that makes the relationship between a user and a collective.

On the Website Repo, we should add a new input field here https://github.com/OpenCollective/website/blob/master/frontend/src/components/PublicGroupSignup.js#L30

and adapt the UserGroups model on API https://github.com/OpenCollective/api/blob/master/app/models/UserGroup.js#L11

How should we call this new column? description?

Stickers for backers

Backers of a collective should receive a sticker with the logo of the collective and the date of when they started supporting the collective.

Let's brainstorm a few ideas here.

Roles

In a collective, people have different roles and different titles.
For example, you could have core contributors, organizers, volunteers, contributors, staff, etc.

Per @asood123's point, we should make sure we that don't create too much complexity with this. So I think it will be good to have only 3-4 different "master roles", but then people can name them how they want and subdivide them in different "tiers".

For example, in an open source project there are core maintainers then a bunch of contributors who contribute at very different levels (some doing one pull request a year, others once a month, others once a week). Likewise, there are different backers. Some giving $1, others giving $500. We should design for that.

This could be achieved by adding a title column in the UserGroups table (which should eventually be renamed to UserCollectives)

E.g.:

  • ADMIN: People who are the main organizers / leaders. They can pre-approve expenses, edit the page of the collective. Title could be "Core contributors", "Staff", "Organizers", "Founders", "Maintainers".
  • MEMBER: People who contribute more casually to the collective. They could have a role (e.g. "Community manager", "Advisor"). They could be called "Contributor", "Member", "Staff member", "Team member", "Volunteer".
  • BACKER: People / companies who contribute money, "supporters", "sponsors", "gold sponsors", ...
  • FOLLOWER: Someone who just wants to follow the progress of a collective but doesn't contribute to it

We should keep the organization of a collective as flat as possible but we also need to design for providing people different levels of contribution for which they should be acknowledged accordingly.

Here could be a way to schematize this:

id UserId CollectiveId role title about createdAt deletedAt
1 1 2 ADMIN Core Contributor Reviewing pull requests 2016-04-05 NULL
2 2 2 MEMBER Contributor Javascript developer 2016-4-06 NULL
3 3 2 BACKER Sponsor Best place to work in SF 2016-4-06 NULL

Note that the about column solves this issues as well: #9 (one-liner/bio for backers)

Badge "Proud sponsor of Open Source"

It would be good to have a small badge that companies can put in the footer of their website that says "Proud sponsor of Open Source", or "We are contributing to Open Source Collectives" (something along those lines), that would link to their company profile page on OpenCollective.

Referral

Keep track of how members arrive to the collectives. see #18 for more detail.

Pay with PayPal bug

On a meetup with a host without stripe but with PayPal, when clicking on "Pay With PayPal", it triggers a slack notification before the donation actually went through.

That said, it doesn't seem to record the donation in the DB, so it doesn't look like an urgent bug as I initially thought.

Build roles

As per #18 organize members in Contributors, Backers, Friends (free membership)

End-to-end tests regularly fail on app "approve transaction" connect host Paypal account...

...while waiting for #returnToMerchant to appear. Relaunching build usually fixes issue. Race condition or overloaded Paypal API? What are possible solutions?

E.g:

[Approve Transaction] Test Suite
================================

...

Running:  connect host Paypal account
 ✔ Element <#loadLogin> was visible after 5072 milliseconds.
 ✔ Element <input#login_email> was visible after 1627 milliseconds.
 ✔ Element <input.button.primary.default> was visible after 50 milliseconds.
 ✖ Timed out while waiting for element <#returnToMerchant> to be present for 60000 milliseconds.  - expected "visible" but got: not found
...

Issue appears even when CircleCi parallelization is disabled and even when tests don't seem to be running at same time on different branches.

Allow adding fees on top

Currently, when you donate $100, stripe charges you $100 and fees come out of that. Depending on how much host takes, end collective gets around ~$87.

We want to let users pay more fees on top of their donation. User clicks on Donate $100. Dialog shows:

$100
+ $13 fees
= $113
Confirm

Implementation proposal

  1. Backend: Add a boolean field on the collective feesOnTop
  2. Frontend: Create a new dialog that shows the final amount with fees
  • If flipped (initially only for the French movement with a French host, so no currency issues), we show the dialog above.
  • When they click confirm, we pass $113 to Stripe and show the Stripe dialog. Two dialogs aren't ideal but it would be the easiest way to do it. Otherwise, we'd need to rebuild a credit card donation form.

Open questions

  • Should we do one dialog or two?
  • Find out exactly how much stripe will charge for a european credit card. We can also assume a flat 3% rate and eat the difference of 20 cents or so.

backers / sponsors avatars in READMEs are not retina

I just noticed that the backers/sponsors are not displayed with a retina image. IMO they should – looks more official / professional / in active care / you-name-it.

Yes. How can we do that? I guess we will have force the height in the HTML

Yep, force the height in the HTML. Otherwise, maybe some hacks using svg where the svg includes an img with the forced height. (so that the HTML we have to paste is more compact) Maybe there's other ways to do it

yeah I want to keep the html compact, but I also wanted to keep flexibility to improve the design without having to change the HTML

with a card design like on http://opencollective.com/mochajs (but probably more compact than that)

discussion in #mochajs between @xdamman and @dasilvacontin

ES6 rules

Open to discussion on this. ESlint rules

{
  "parser": "babel-eslint",
  "env": {
    "node": true
  },
  "rules": {
    // Disallow Unused Variables
    "no-unused-vars": 2,
    // require space before/after arrow function's arrow
    // https://github.com/eslint/eslint/blob/master/docs/rules/arrow-spacing.md
    "arrow-spacing": [2, { "before": true, "after": true }],
    // suggest using arrow functions as callbacks
    "prefer-arrow-callback": 2,
    // suggest using template literals instead of string concatenation
    // http://eslint.org/docs/rules/prefer-template
    "prefer-template": 2,
    // suggest using of const declaration for variables that are never modified after declared
    "prefer-const": 2,
    // disallow modifying variables that are declared using const
    "no-const-assign": 2,
  }
}

Start storing avatar photos in s3

Currently, we link to a user's avatar photo on Twitter or wherever we can find it. Let's copy it to s3 and link to our copy. That way it won't go empty when the other site changes it.

On boarding Open Source Projects

We should have an easy process to on board open source repositories.

Apply to create an open collective for your open source project.

We are slowly accepting new open collectives. Apply today to reserve your spot.

  1. Connect your github account
  2. Select the repository for which you'd like to create an open collective (your repo needs to have at least 100 stars)
  3. Select the people who should be part of the collective (minimum 2)
  4. What's your mission?
  5. What would use the money for?
  6. Thank you for your application. To be eligible, you need to have at least 10 people to commit to become a backer or a sponsor. They won't be charged until your collective is approved. Share with them this link: opencollective.com/org/repo

Pending collective

If a collective hasn't been approved yet, their page should say something along the lines of:

We have applied to become an open collective. To be approved, we need your help!

We need x more people to commit to become a backer or a sponsor.

Become a backer for $5/month
Become a sponsor for $100/month
You will only be charged once we reach our goal of 10 backers or sponsors

Thank you for your commitment. Help us spread the word!

Support a column for hostFeePercent

Currently, we give 5% to the host for any donation. We need to customize this. Some hosts (like the self-hosted ones) want 0%. Some like WWCode want 10%.

This needs to be done soon to make fees for april easier.

Fix CircleCI tests (continuous integration)

They take forever and are unreliable. It is slowing us down.
Any expert in CircleCI out there who can give a helping hand?

It's not a trivial problem as we have a lot of tests spread out across different applications:

When we test website or app, we should first checkout the api repository, install it and run it (ideally, we would want to find a way to cache that as it takes a lot of time).

Share on Twitter / Facebook after donation

After a donation, we should offer the user an easy way to share on Twitter and Facebook (and we should add ?referrerId=$userid to the URL of the collective). Both for first time donors and returning donors.

#feature Posts / newsletter

It's important to communicate to the different members of a collective.
To that end, we should make it easy to send an email update and target specifically certain tiers (e.g. an update for backers, an update for sponsors).

Since a collective is a collaborative space, any member should be able to submit an update (aka a post). For example to do a summary of the latest meetup, share pictures/videos, etc.

To avoid spam, an admin of the collective should approve the post for it to be sent out by email to the targeted audience.

i18n

We would love to support multiple languages.

It looks like the best framework to do this is to use this React library https://github.com/yahoo/react-intl

We should use the upcoming v2 (currently in release candidate 1), as it brings a lot of changes that will be difficult to migrate to if we already start with v1.

Right now, we did a very quick hack to make OpenCollective in French for LaPrimaire.org, see

This should also remove the need to use Numbro https://github.com/OpenCollective/website/blob/master/frontend/src/lib/format_currency.js

Record everything that goes on in the system

We have an Activity model that's meant to record every action in the system. It started as a way to show an activity feed on a group page. Then it evolved into recording events to show in slack. It's incomplete in both cases.

We need to record everything that happens in the system - every action, every bit of data that comes in. Activity should be modified to cover all the cases.

One way to do this would be to create a middleware that intercepts all routes and records everything. This would clean up scattered Activity entries everywhere and put them in one place for easy maintenance. Open to other ideas like Kafka?

send email with collectives' donations/expenses to their host

We should let hosts know on a regular basis when their collectives are receiving donations to make their management easier and more efficient. I suggest hosts can opt-in between every activity/daily digest/weekly digest. I wouldn't offer monthly since they get the monthly email anyway.

Create two-tiered approval for expenses

Allow for Collective organizer/core contributor to approve expenses as well as the host.
Eventually we could allow for collectives to choose between joint approval (host & organizer) or either/or approval.

Add funds returns 'created at' error

host of WWCodeDC is trying to manually add funds to the collective and they are getting an error that says 'CreatedAt must be less than or equal to "Tue Apr 12 2016 17:00 GMT-7 PDT" idem for a different date.
screen shot 2016-04-20 at 9 55 48 am
screen shot 2016-04-20 at 5 16 31 pm

OCR for Receipts

We require all expenses to have a receipt attached. Currently, users need to manually fill that info. No one likes filing expenses, so any reduction in friction in this process would go a long way.

We want to OCR receipts and prefill some of the fields like here: https://opencollective.com/yeoman/expense/new. Submit a receipt and whatever fields we can deduce, we will fill the form for user to review.

Fancier versions of this could hook it up to a phone number. Txt a receipt to us and we'll send you back a link showing what we prefilled and you can edit or approve.

Fix Zipcode Bug in Stripe

From user Hunter Trujillo

Hey, I just tried donating, and after Stripe payment went through, I got an error in the title bar that said this:
Unexpected token < in JSON at position 0
And then in my console, I'm guessing you're using Redux, the action that failed was this:
DONATE_GROUP_FAILURE
There was a 503 from a request at this endpoint:
https://opencollective.com/api/groups/43/payments/
The page I was on was here:
https://opencollective.com/apex#support

User had changed ZipCode recently. No place in stripe path to change zipcode

Possible fixes:

  • enable the zip code field on the stripe form
  • disable declining cards that fail zip code verification on your stripe settings.

Fix fees in txn table

Donation ID 337: $200 to WWC Austin (group id2), platform fees $10 (ok) but host fees is $10 as well (should be $20, 10%) I checked the group and host fees says 10, so I'm not sure what the issue is.

La Primaire: txn id: 327 host fee 25, id 400 host fee 0 (I'm sure this is because we modified fees in between) I'm manually calculating collective's net.

Les barbars: txn id359: host fees should be 0, it is calculating 5%. (might be same issue as above, check next month)

Vloupe [bug]: It started calculating 5% for host on 4-18 (txn 364), but host fee was 0 before and it still says 0.

For paypal flow we need to differentiate fees 'manual' and 'paypal' since 'manual' don't have paypal fees. But we should report them anyway in the monthly email. Since this is still manual, it's a pain to calculate because I can't aggregate expenses and # of expenses.

If PayoutMethod is empty, I assume it's manual. Please confirm.

For foreign currencies we need to pull from Stripe the platform fees and host fees in USD at the currency exchange rate of the day. Otherwise we can't calculate revenue properly.

Fixes on new public page

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.