worknenjoy / gitpay Goto Github PK
View Code? Open in Web Editor NEWBounties for issues on demand. Be rewarded by learning, using Git workflow and continuous integration
Home Page: http://gitpay.me
License: Other
Bounties for issues on demand. Be rewarded by learning, using Git workflow and continuous integration
Home Page: http://gitpay.me
License: Other
The task list is getting messy and unorganized and is a base to guide the developer when exploring tasks, now we need to enhance this component, separate from task list container and fix the filter bugs and add pagination and relevant filters (open tasks, closed, higher price etc)
Description
When I click to create an account, the system showing the success alert message, but the system don't reload the page and nothing happened.
1- Access your account on Gitpay;
2 - Choose the option "Criar Conta";
3- The system showing the success alert message, but the system don't reload the page and nothing happened.
When a payer pay for a task finished, send to the sender as well to confirm the payment and transfer
A task like this https://gitpay.me/#/task/3 overlaps the image content that is fetched from Github.
We need to manipule somehow the styles inside the content that is originated from Github, that now is generated like raw content.
The attached images on issue description from Github is breaking the layout. It's a very annoying bug
Beginner
The images attached to the task description that comes from Github api is being rendered in original format, and it breaks the layout
The images attached in the task description should adapt to the boundaries of the box.
You don't need any extra API keys to solve this issue
Create a Sequelize seed to creata a user and a task to allow to test locally
For some reason, when you create a new account to receive bounties, the account information screens is not appearing. We have this two screenshots that shows how it should behave
Current behaviour: In url https://gitpay.me/#/profile/payment-options, logged, you can add a account. Clicking the account is not showing the account info unless you refresh the page.
Expected behaviour: In url https://gitpay.me/#/profile/payment-options, logged, you can add a account. Clicking the account will change the state of the application to show the account info once been added.
I think there's a place that pass props connected to redux, and we have to check if is being triggered to actually show directly the account info without need to refresh
This seems to be easy but ends with a tricky one, be careful
When create a task, someone can be interested and you can assign someone to complete. It should be possible unchose (now it's just possible choose another) a assigned user. If is possible should be great select and / or write a reason
The assigned user should be able to mark on the task that for some reason he / she couldnt continue to offer opportunity to others
Should notify that the user was unsigned to a task using the existing email module
This is a task that will demonstrate the payment flow for https://gitpay.me
This is a task that I will assign for myself. So I will follow the steps to complete:
Criar tarefa
A welcome email with the first steps
Tasks like these: https://gitpay.me/#/task/12 was created because it could not be validated as invalid issue. We need to validate when create a task for this case as well when a task already exist. Currently they created a non valid successful page
Some accounts are activated without bank accounts, so we need a better handle to make sure that a account is active only if have a successful bank account registered
Currently we need mailchimp api keys to develop locally, and this should be avoided, since there's no real need for it.
define a favicon to the platform Gitpay
Hey, this is a huge one and has a impact in the whole platform.
Have you worked with translation before? You already tried some solution around? This is chance to work and implement from the scratch a solution for translation because we have to support english language. We accept payment worldwide and this is important to open for worldwide market.
We will need to manage the translation as well, but it will be too much complex do a interface for non technical people use this to collaborate with translation
So for now we will have the source translation in a external file in JSON format or other that the library that you propose will use.
We will in another step integrate with https://crowdin.com/. So it has to be Crowdin friendly
You will be open if you implemented this before to use a approach that you're familiar
You don't need to worry about the translation content, just the structure for people non so nerd as we are to actually do their best with translation.
The translation should happen for strings on the front-end and back-end
We focus on Brazil to support our great developer community. But if we expand and explain about the Gitpay philosophy we could attract a lot of open source projects worldwide and have clients to support very interesting open source projects
Advanced
The website now is completely in portuguese and need to support PT-br
and En
, the preferences page https://gitpay.me/#/profile/preferences should have a option to switch the language
The language should get info about the user browser and have a language switch that will change all the platform language
Look for translation for react and node libraries and have a proper folder that will hold all the language info
All the keys will be provided once you accept this issue
We should have more filters on the task list to track better the tasks status
We send notifications for many actions through the platform. When developing locally, if a API key is not provided, it should not crash the actions and just not send emails, and now the code depends of a provided key for that, which is not preferable
Solving this issue you will help other developers to develop locally without to require a api key to send e-mails, as well not be trigger with notifications when developing, leaving this part only in out of development env
The app is not running the whole flow when there's no api key for email
The app should do the actions on the routes that send notifications and if there's no api key, fails silently
Would be great if we could refactor a little bit of duplicate logic on email module:
https://github.com/worknenjoy/gitpay/tree/master/modules/mail
This task will have a bounty to test the whole Paypal payment flow for a task
The task title should be added to the task table and sync with Github whatever is possible
Bounties that was refunded should be supported
We have the basic flow of a bounty for a developer that is:
The User B to receive the funds needs to activate their account with the bank details:
https://gitpay.me/#/profile/payment-options
So if the payment is made for a user that have their account pending, the user that will receive the funds (User B) should be notified
The user that will receive the bounty should be aware that his account need to be activated to allow the platform send the payments to his bank account
When a payment is send, it is approved but the if the user don't have a active bank account validated at https://gitpay.me/#/profile/payment-options, the user will never receive the money and he should be aware to do that to allow the payment
When a payment is send, if the user don't have a fully working and active account, he should be notified to finish his account setup in https://gitpay.me/#/profile/payment-options
When the account activation happens on the backend:
https://github.com/worknenjoy/gitpay/tree/master/modules/users
When the payment happens on the backend
https://github.com/worknenjoy/gitpay/blob/master/modules/tasks/taskPayment.js
When a payment is send, we should verify if the user has the account_id
attribute, if not, send a email in this format requesting to activate:
Você recebeu um pagamento pelo Gitpay, mas sua conta para recebimento ainda não foi configurada, por favor ative sua conta em <a href="https://gitpay.me/#/profile/payment-options">https://gitpay.me/#/profile/payment-options</a> para poder receber os valores
All the keys will be provided once you accept this issue
It's necessary remove all errors what the ESLint show when is run command of verify Javascript pattern what was configurated on project.
To maintain a standard of code
Medium
Today is configured not to pass eslint error in prepush. You need to run git push with success
All message what ESLint show are intuitive
You need to run git push with success
It is exist plugins to ide vscode and atom to help on solution.
When a user is added to the list of possible assigns, sequelize is not restricting to unique
Hey, how are you? This is the deadline card:
It's a place to setup a deadline of a task. Please restrict this view only for the Task owner
A important think here is that is possible to create task without a owner. So in this case he will see the task deadline card, but how we handle after that?
This example of task I would like to show that sometimes we don't have all the answer and we are open to discuss how to solve in that case. But if is not possible and not easy, just do the main think, the happy path, when users are logged and create tasks, only the owner can set deadlines.
This a task that will validate the flow for a freelancer be rewarded by solve a issue.
This is the issue that it has to be solved by validating your account on http://gitpay.me
This is when you create a account when you're logged. You will have pending verifications that we will validate with you to offer a account that you will receive for the bounties completed.
When you visit a task, you will show interest and who creates the task will know that you want to start. So you can be assigned and once assigned, you will be able to receive after complete.
This is just a test so once you complete the steps you will be able to receive by direct transfer by complete these steps described here.
It should be possible to support Transferwise to make international payments
https://api-docs.transferwise.com/v1/use-cases/cross-border-payments-for-banks
This task consist in two things on the same screen as you can see in the screenshot.
First, there's a undefined there that I think is just a matter of handle the object empty state.
Second, we would like to add the same button to the first step to go to the next step, and having control of the steps as is possible when click on a item.
Configurar pagamento
After create a migration to add a new field for user:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
queryInterface.addColumn(
'Users',
'name',
Sequelize.STRING
);
},
down: (queryInterface, Sequelize) => {
queryInterface.removeColumn(
'Users',
'name',
Sequelize.STRING
);
}
};
The user model is still missing name
, even adding one and running the migration with npm run migrate
or even a command that I added npm run reset
and run the migration again. The old data keep there.
Researching I found that is maybe something related to database sync.
Connected repos (Gitpay as first case) will allow to link issues, and when an issue is created from the project side, it will automatically be created on Gitpay
Making possible to edit status that we show in the title part of the top bar as we can see below:
You should use a Material ui React component, adding a context menu in the ship that have one of the actions set the states of the task, OPEN, INPROGRESS, DONE and FINISHED
Support Paypal to make simple payments that is not covered by Stripe
When login, redirect to the same page before the user logs in
We are exceeding the limit for Github requests for issues. We need to have a signed authentication to be able to cross to increase our rate limit for requests
The Github public api for issues has a limited rate limit:
https://developer.github.com/v3/rate_limit/
We need authenticated requests on the api in the places that we call the public api to increase the limit:
https://developer.github.com/v3/#rate-limiting
Medium
The Github api stop to work after we reach the rate limit
The Github api should have a higher rate limit
Use the Github recommended solution:
git-lfs/git-lfs#2134
watsonbox/exportify#6
watsonbox/exportify#6
You will need the github api key to sign request
You will have the required keys once you accept the issue
The places that we require the github call is on the task fetch
https://github.com/worknenjoy/gitpay/blob/master/modules/tasks/taskFetch.js
Extract as env variable the API host that is used on the webpack project, and with this we can set a staging env.
Other issue related to that is that we have to pass production keys when generate the main js script bundle to production, so I have to do something like:
FOO=BAR webpack --config webpack.prod.js
We generate locally the production bundle. Think twice before change that, because we would have to move to generating on heroku, and I'm avoiding this for now.
It should be possible for a authenticated user that owns the task to delete it. This task is just the backend route that should be a rest call of the type DELETE
to a defined task like tasks/delete/:id
This is a part of a feature to implement a delete task on the front-end
Beginner
Not possible to delete a task
A route in the REST api format to delete a task
Add a test here: https://github.com/worknenjoy/gitpay/blob/master/test/task.test.js
that reproduce a task creation as context and make a request to delete that task
You will not need any extra api key to reproduce this
Stripe send notifications on our webhook route (https://gitpay.me/webhooks) sending information about the balance of an account. This balance is very useful to control the transfer about the bounties being sent.
The webhook notifications is already setup and integrated with the e-mails, tested and working for a lot of notifications that happens in many actions inside the Gitpay platform, as we have here:
https://github.com/worknenjoy/gitpay/blob/master/modules/load/controllers/webhook.js
We need to support this new webhook that give information about the balance.
This is the request received:
{
"id": "evt_1234",
"object": "event",
"api_version": "2018-02-28",
"created": 1530508059,
"data": {
"object": {
"object": "balance",
"available": [
{
"currency": "usd",
"amount": 6420,
"source_types": {
"card": 6420
}
},
{
"currency": "brl",
"amount": -2448,
"source_types": {
"card": -2448
}
}
],
"connect_reserved": [
{
"currency": "usd",
"amount": 0
},
{
"currency": "brl",
"amount": 0
}
],
"livemode": true,
"pending": [
{
"currency": "usd",
"amount": 0,
"source_types": {
"card": 0
}
},
{
"currency": "brl",
"amount": 0,
"source_types": {
"card": 0
}
}
]
}
},
"livemode": true,
"pending_webhooks": 1,
"request": {
"id": null,
"idempotency_key": null
},
"type": "balance.available"
}
The webhooks is not configured locally, so to test it you should run the tests:
https://github.com/worknenjoy/gitpay/blob/master/test/webhook.test.js
With npm run test
Stripe send the balances that update the value available to transfer that is really useful to control the transfer that is being made by the platform. So we need to be notified when the balance update
Beginner
The current behavior is a webhook being send to the route /webhooks
and isn't recognized and nothing happens, just a pending webhook that should be be send by email to [email protected]
When a webhook of new balances is send, a e-mail should be send to [email protected]
The email format should be
Subject: Um novo balanço da sua conta no Gitpay
<p>Temos um novo balanço para a conta do Gitpay:</p>
<ul>
<li>currency: value</li>
</ul>
Create a test in https://github.com/worknenjoy/gitpay/blob/master/test/webhook.test.js
The test should return sucessful for the new balance object, you should create a fixture with the object received at https://github.com/worknenjoy/gitpay/tree/master/test/data
with the name balance.js
with the data provided here
npm run test
All the keys will be provided once you accept this issue
It's a great task to practice TDD, so first create the test setup and run. After you have the desired result, make requests (with POSTMAN or curl) and you will receive the emails (First you need to test to send in your own email, after you have the desired result, switch to [email protected])
As we have faced before, the users that try to login with their Github account can't have an associated e-mail if his e-mail is private on Github.
We have this issue:
https://stackoverflow.com/questions/35373995/github-user-email-is-null-despite-useremail-scope
We need that the users be able to login regardless of the Github email privacy settings
Advanced
Users only can log with their Github accounts, if the e-mail is set to public
The users should be able to log using their github account even if their email are set as private. One alternative would be request the user e-mail before create an account
https://stackoverflow.com/questions/35373995/github-user-email-is-null-despite-useremail-scope
You need to figure out how to have the right scope that provide the user e-mail even if is a private one
We tried to solve this before here: #36
We have a webhook about a failed transfer that should be send to the destination account as the other webhooks
Here is the format:
{
"id": "evt_1ChFtEAcSPl6ox0l3VSifPWa",
"object": "event",
"account": "acct_1CdjXFAcSPl6ox0l",
"api_version": "2018-02-28",
"created": 1530014600,
"data": {
"object": {
"id": "po_1CgNDoAcSPl6ox0ljXdVYWx3",
"object": "payout",
"amount": 7409,
"arrival_date": 1529884800,
"automatic": true,
"balance_transaction": "txn_1CgNDoAcSPl6ox0ldyOtyaAP",
"created": 1529804456,
"currency": "brl",
"description": "STRIPE TRANSFER",
"destination": "ba_1Ce0PIAcSPl6ox0lFYghLdq4",
"failure_balance_transaction": "txn_1ChFtEAcSPl6ox0lUAWIKmOf",
"failure_code": "could_not_process",
"failure_message": "The bank could not process this transfer.",
"livemode": true,
"metadata": {
},
"method": "standard",
"source_type": "card",
"statement_descriptor": "Gitpay",
"status": "failed",
"type": "bank_account"
}
},
"livemode": true,
"pending_webhooks": 1,
"request": {
"id": null,
"idempotency_key": null
},
"type": "payout.failed"
}
So create a new case for this webhook and follow the tests in the webhooks controller to support this webhook and send to the user warning that the transfer failed
When a transfer fails for insufficient funds, let the user knows instead to show success
There's a bug when we click on the menu elements, because the active area don't cover all the menu as we can see here:
You can access this page at https://gitpay.me/#/profile (you need to be logged)
Setup a Postgres database locally
We are figuring out the best approach to communicate on the front-end with Passport authentication on the back-end #bitbucket-login
When a charge is made for a task with a value, send for the assigned
user that a payment was made
Improve development experience by automating the infrastructure with docker containers.
By running docker-compose up
, we should be able to get the project working when opening the browser at http://localhost:<frontend port>
By running docker-compose -f docker-compose.test up
, all tests should run.
We are using the spread operator like the example below
{ ...data, id: 1 }
And the build is failing because probably the node version on travis is different and local the test pass
We just need to update the node version to the same version that the package.json
Above 'Nossa stack', give a home stats with the amount of tasks, of users and bounties received using chips
The community should be able to track how many users, task and bounties and being created on the platform
Medium
A chip component. We should create a similar with a related icon
/info
or /data
){
tasks: [total of tasks],
orders: [total of value from tasks],
users: [total of users]
}
You don't need any extra api key to solve this issue
We have webhooks to have to notify payment updates, and we already have a lot for charges, transfer and payouts. We need now to handle a webhook that gives information about the card payment
The object send by the webhook is this one:
{
"id": "evt_test",
"object": "event",
"api_version": "2018-02-28",
"created": 1529347179,
"data": {
"object": {
"id": "card_test",
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Visa",
"country": "DK",
"customer": "cus_test",
"cvc_check": "pass",
"dynamic_last4": null,
"exp_month": 10,
"exp_year": 2019,
"fingerprint": "test",
"funding": "debit",
"last4": "7743",
"metadata": {
},
"name": "User Test",
"tokenization_method": null
}
},
"livemode": true,
"pending_webhooks": 1,
"request": {
"id": "req_BMnICMT36tV8vh",
"idempotency_key": null
},
"type": "customer.source.created"
}
After a request for gitpay.me/webhooks
with the following object, the system should handle and send a e-mail passing the card info with the cardholder name and last 4 digits
Follow the other tests and webhooks to understand how it works to create a new scenario:
You don't need to care about the email text, the important thing is use the information required (card info, user and last4 digits)
Use angular in the project and continues to display the welcome page
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.