Giter Club home page Giter Club logo

codesy's Introduction

Welcome

codesy is a platform for fixing and funding open source software..

The code for codesy's API backend combines:

Resources

Travis-CI Build Status

image

Requirements Status

Request Next Deploy

Code

https://github.com/codesy/codesy

License

AGPLv3; see LICENSE file

Documentation

http://codesy.readthedocs.org/

Issues

https://github.com/codesy/codesy/issues

IRC

irc://irc.freenode.net/codesy

Mailing list

https://groups.google.com/forum/#!forum/codesy-dev

Servers

https://codesy-stage.herokuapp.com/ (stage)

https://api.codesy.io/ (prod)

Contents

development deployment

codesy's People

Contributors

aprilchomp avatar faeranne avatar groovecoder avatar jdungan avatar jgmize avatar jsatt avatar kendallcorner avatar kennythewizard avatar requires 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codesy's Issues

Needs node version

fixed with mrmakeit/codesy node branch, but i cant figure out how to pull request a new branch

Create cron job to poll status of all issues with bids.

Supersedes #36

Because PuSH requires admin permission to the repo, instead we'll create a cron job that checks the status of all issues in codesy.

For now, when the cron job finds an issue has changed from 'open' to 'closed' or 'merged' etc., it should send an email to all users who made bid with offer > 0 like, "[codesy] A bug on which you offered a bid has been marked [closed|merged]."

Ideas for the future:

  • Send a custom email to users who offered at or above the median offer, telling them that they are part of the payout approval panel.
  • Send an email to any collaborator on the bug who asked for less than the total offered amount: Tell them that, if they fixed the bug, they can claim they payout.

Only deploy the python job from Travis to heroku

Steps to reproduce:

  1. Merge something into master
  2. Check the codesy-stage activity on heroku

Expected results:

  • Only one deployment & build should happen

Actual results:

  • 3 deployments & builds happen; 1 for each of the Travis jobs: i.e., style, docs, and python

local site bounces out of https

Might just be my local browser cache, but my local site has started bouncing me out of https on every other request. ๐Ÿ˜ฆ

Customize 401 template for unauthorized Bid requests

When the browser extension is not authorized and requests a bid form, we respond with 401 status. Right now, the extension just doesn't display. ๐Ÿ˜ฆ

We should customize the 401 template to a simple "Sign in to codesy" template.

Then, the extension could simply render the contents of the 401 template in the widget space. I.e., codesy/widgets#34

Change DRF to TokenAuthentication

Django Rest Framework - as it should - enforces CSRF protection when using SessionAuthentication.

The browser extensions execute their form and AJAX requests from the bug domains. (e.g., github.com) So, the HTTP Referer - github.com - does not match the server-side domain - codesy.io, and the CSRF validation fails.

So, we need to change DRF to TokenAuthentication, which doesn't enforce CsrfMiddleware 'Referer' matching, and is probably better anyway. To do so, we should:

  • Generate tokens when users register
  • Show the user their token when they click to download the extension, and prompt them to copy it
  • codesy/widgets#31

After connecting a credit card, give user visual feedback

Steps to reproduce:

  1. Sign in via GitHub
  2. Fill in the Connect Payments form
  3. Click Tokenize

Expected results:
Should see a "Payment Method added" message, and the "Connect payments" form should indicate there's already a payment form connected.

Actual results:
Nothing changes.

Bid form should allow blank entries for offer and ask fields

POST ing or PUT ing a bid form with out supplying a value will cause and error say that the field is required. If the field is left blank when submitted, the rest api should allow no value (so subsequent place holders in the form work) or at least set the value to zero.

Move content from codesy.io into home.html

Bonus Points: Detect if the user already has the add-on installed, and change the Call-to-Action from "Add to [Chrome|Firefox]" to "Sign up with GitHub".

C-C-C-Combo: If the user already has the add-on installed, and is already signed in with GitHub, change the Call-to-Action to "Add funds with Balanced"

Get user email from GitHub

We need the user's email address in their user account so we can email them if/when their bids are met.

Allow users to "claim" an issue for payout

When I get an email that my ask has been met, it should include, "If you fix this issue, claim your earnings here: https://codesy.io/claim/confirm?bid={{ bid.id }}"

So we need to:

  • Create a new Claim model with fields: Issue (FK), Claimant (FK), created, modified, and status
  • Wire the Claim model up with DRF API
  • Add a confirm view at GET /claim/confirm?bid={id} with a form to POST /claim/ with the issue & claimant; auto-populating created and status=open
  • Add a link to the confirm view to the notification email
  • Load the claim confirm view into the widget
  • ... when a user is looking at a closed bug on which they had a bid

Ideal workflow thru codesy bids & payout

  1. Enter card info at sign-up, or when making first offer (#15)
  2. Accumulate offers & asks for as long as it takes from as many people as it takes
  3. When someone's ask is met, notify them by email (#37), including a link to claim the payout after they fix it. (#131) Include the make-what-you-want interface at the claim link. (#??)
  4. When someone claims the payout, email all offering bidders that their card will be charged in 30 days to make the payout unless they dispute it
  5. During the 30 days, all offering bidders approve or dispute the payout
  6. At 30 days, or whenever all offering bidders approve, charge cards and send payments

Missions - Store Selectors and containers in backend

codesy.pages = [
    {
      domain: /.github.com/i
      target:
        selector: ".discussion-sidebar"
    }
    {
      domain: /.bitbucket.org/i
      target:
        selector: "dl.issue-attrs"
        containers: ["<div class=\"issue-attr\">"]
    }
    {
      domain: /.sourceforge.net/i
      target:
        selector: "#sidebar"
        containers: [
          "<li>"
          "<ul class=\"sidebarmenu\">"
        ]
    }
    {
      domain: /.stackoverflow.com/i
      target:
        selector: "#sidebar"
    }
  ]```

<!---
@huboard:{"order":8.125,"milestone_order":13,"custom_state":"ready"}
-->

Chrome Extension says "No 'Access-Control-Allow-Origin' header is present on the requested resource."

Not sure how this was working before. But the fix is probably to use django-cors-headers.

Steps to reproduce:

  1. Installed the Chrome extension
  2. Go to any old github issue

Expected results:
Bid form shown

Actual results:
Extension makes this request:

OPTIONS https://127.0.0.1:8443/bid/?url=https%3A%2F%2Fgithub.com%2Fcodesy%2Fcodesy%2Fissues%2F75

and says

XMLHttpRequest cannot load https://127.0.0.1:8443/bid/?url=https%3A%2F%2Fgithub.com%2Fcodesy%2Fcodesy%2Fissues%2F75. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome-extension://cchpcdoagjopolebepldmfpkcbfoigok' is therefore not allowed access. The response had HTTP status code 401.

add ENVIRONMENT_APPS settings for django_nose

While reviewing https://github.com/codesy/codesy/pull/44/files I noticed django_nose is only needed for tests, but it needs to be an INSTALLED_APP to work.

So, I propose we add the following to settings.py:

ENVIRONMENT_APPS = os.environ.get('ENVIRONMENT_APPS', [])
INSTALLED_APPS = DEFAULT_APPS + THIRD_PARTY_APPS + LOCAL_APPS + ENVIRONMENT_APPS

Then, we add the following to .env-dist: (and thereby .env):

export ENVIRONMENT_APPS=['django_nose',]
export TEST_RUNNER="django_nose.NoseTestSuiteRunner"

Then, we can move django-nose==1.2 from requirements.txt to requirements-test.txt so it only needs to be installed on local dev environments.

Create integration tests

When I did the DRF 3.0 update, I found some errors only with spot-checking. So, we should create a higher-level suite of tests that test the key user flows that integrate many pieces:

  • Test that user registration creates an authorization token
  • Test that GET, POST, PUT, and DELETE of bids (via BidViewSet) work as expected
  • Test that GETting the bid widget HTML (via GetBid APIView) works as expected

Update "first run" experience to install extension first

From the home page:

  1. Click 'Add to browser'
  2. The browser "first run" experience should open a new tab back to the codesy home page
  3. The home page should now say "Sign in with GitHub"
  4. After signing in with GitHub, the home page should include the user's API token (so the browser content script can grab it), and should show the "Connect payment method" form

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.