├── .autopr └── triggers.yaml ├── .circleci └── config.yml ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── 1-bug-report.yml │ ├── 2-feature-request.yml │ ├── 3-custom-issue.yml │ ├── 4-ui-issue.yml │ ├── 5-backend-issue.yml │ └── config.yml └── workflows │ ├── AIPR.yml │ ├── autopr.yml │ └── chatgpt-code-generation.yml ├── .gitignore ├── .nvmrc ├── .sequelizerc ├── .travis.yml ├── .vscode ├── launch.json └── settings.json ├── CONTRIBUTING.md ├── LICENSE.md ├── PITCHME.md ├── Procfile ├── README.md ├── app.json ├── config ├── config.json ├── passport.js └── secrets.js ├── cron.js ├── cron └── orderCron.js ├── crowdin.yml ├── deploy-ghpages.sh ├── docker-compose-linux.yml ├── docker-compose.test.yml ├── docker-compose.yml ├── frontend ├── .babelrc ├── .mocharc.yaml ├── .storybook │ ├── decorators │ │ └── withPrivateTemplate.tsx │ ├── main.js │ └── preview.js ├── README.md ├── build │ └── messages │ │ └── src │ │ └── components │ │ └── profile │ │ └── preferences.json ├── package-lock.json ├── package.json ├── public │ └── favicon-gitpay.ico ├── sitemap-builder.js ├── sitemap.xml ├── src │ ├── actions │ │ ├── assignActions.js │ │ ├── contactActions.js │ │ ├── couponActions.js │ │ ├── helpers │ │ │ ├── convert-params-to-stripe-object.js │ │ │ └── index.js │ │ ├── infoActions.js │ │ ├── labelActions.js │ │ ├── languageActions.js │ │ ├── loginActions.js │ │ ├── messages │ │ │ ├── messages.js │ │ │ └── stripe-error-messages.ts │ │ ├── notificationActions.js │ │ ├── orderActions.js │ │ ├── organizationsActions.js │ │ ├── payoutActions.js │ │ ├── preferencesActions.js │ │ ├── profileActions.js │ │ ├── projectActions.js │ │ ├── taskActions.js │ │ ├── taskSolutionActions.js │ │ ├── teamActions.js │ │ ├── transferActions.js │ │ ├── userActions.js │ │ ├── userRoleActions.js │ │ ├── walletActions.js │ │ └── walletOrderActions.js │ ├── bank-codes-br.js │ ├── common │ │ ├── form │ │ │ └── inputAuth.js │ │ ├── operator │ │ │ └── if.js │ │ └── selectors │ │ │ └── user │ │ │ └── getUser.js │ ├── components │ │ ├── areas │ │ │ ├── private │ │ │ │ ├── components │ │ │ │ │ ├── ProfileStyles.js │ │ │ │ │ ├── profile-head.js │ │ │ │ │ ├── profile-sidebar.tsx │ │ │ │ │ ├── profile.js │ │ │ │ │ └── session │ │ │ │ │ │ ├── cookie-policy.tsx │ │ │ │ │ │ ├── login-button.tsx │ │ │ │ │ │ ├── login-form.js │ │ │ │ │ │ ├── login-page.js │ │ │ │ │ │ ├── privacy-policy.tsx │ │ │ │ │ │ ├── private-route.js │ │ │ │ │ │ ├── provider-login-buttons.tsx │ │ │ │ │ │ ├── session.js │ │ │ │ │ │ ├── terms-of-service.tsx │ │ │ │ │ │ └── welcome-user.js │ │ │ │ ├── features │ │ │ │ │ ├── account │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── account-header.tsx │ │ │ │ │ │ │ ├── account-menu.tsx │ │ │ │ │ │ │ ├── account-tab-main.tsx │ │ │ │ │ │ │ ├── account-tabs.tsx │ │ │ │ │ │ │ └── delete-account-button.tsx │ │ │ │ │ │ ├── features │ │ │ │ │ │ │ ├── account-activation │ │ │ │ │ │ │ │ └── account-activation.tsx │ │ │ │ │ │ │ ├── account-bank-details │ │ │ │ │ │ │ │ └── bank-account.tsx │ │ │ │ │ │ │ ├── account-customer │ │ │ │ │ │ │ │ └── account-customer.tsx │ │ │ │ │ │ │ ├── account-details │ │ │ │ │ │ │ │ ├── TextMaskCustom.tsx │ │ │ │ │ │ │ │ ├── account-details.css │ │ │ │ │ │ │ │ ├── account-details.tsx │ │ │ │ │ │ │ │ └── deleteUser.js │ │ │ │ │ │ │ ├── account-settings │ │ │ │ │ │ │ │ ├── preferences-bar.js │ │ │ │ │ │ │ │ ├── preferences.tsx │ │ │ │ │ │ │ │ └── settings.tsx │ │ │ │ │ │ │ └── account-skills │ │ │ │ │ │ │ │ ├── my-language.js │ │ │ │ │ │ │ │ ├── my-skill.js │ │ │ │ │ │ │ │ ├── skill-icon.js │ │ │ │ │ │ │ │ └── skill.tsx │ │ │ │ │ │ └── user-account.tsx │ │ │ │ │ ├── dashboard │ │ │ │ │ │ └── profile-options.tsx │ │ │ │ │ ├── explore │ │ │ │ │ │ ├── explore-issues-table.tsx │ │ │ │ │ │ └── user-explore-tasks.tsx │ │ │ │ │ ├── issues │ │ │ │ │ │ └── user-tasks.js │ │ │ │ │ ├── organizations │ │ │ │ │ │ ├── organization-update.js │ │ │ │ │ │ ├── organizations.js │ │ │ │ │ │ └── user-organization-tree.js │ │ │ │ │ ├── payments │ │ │ │ │ │ ├── add-funds-form-drawer.tsx │ │ │ │ │ │ ├── add-funds-invoice-tab.tsx │ │ │ │ │ │ ├── checkout │ │ │ │ │ │ │ ├── address-section.js │ │ │ │ │ │ │ ├── card-section.js │ │ │ │ │ │ │ ├── checkout-form.js │ │ │ │ │ │ │ ├── stripe-checkout.js │ │ │ │ │ │ │ └── user-section.js │ │ │ │ │ │ ├── order │ │ │ │ │ │ │ └── order.js │ │ │ │ │ │ ├── payment-dialog.js │ │ │ │ │ │ ├── payment-options.js │ │ │ │ │ │ ├── payment-refund.js │ │ │ │ │ │ ├── payment-type-icon.js │ │ │ │ │ │ ├── payments-table.js │ │ │ │ │ │ ├── payments.js │ │ │ │ │ │ └── paypal-payment-dialog.js │ │ │ │ │ ├── payout-settings │ │ │ │ │ │ └── pages │ │ │ │ │ │ │ ├── payout-settings-bank-account-holder-page.tsx │ │ │ │ │ │ │ ├── payout-settings-bank-account-info-page.tsx │ │ │ │ │ │ │ ├── payout-settings-bank-account-page.tsx │ │ │ │ │ │ │ ├── payout-settings-page.tsx │ │ │ │ │ │ │ └── payout-settings-paypal-page.tsx │ │ │ │ │ ├── payouts │ │ │ │ │ │ ├── bank-account-settings.tsx │ │ │ │ │ │ ├── payout-settings.tsx │ │ │ │ │ │ ├── payout-table.js │ │ │ │ │ │ ├── payouts.js │ │ │ │ │ │ └── paypal-settings.tsx │ │ │ │ │ ├── projects │ │ │ │ │ │ ├── project-issue-table.tsx │ │ │ │ │ │ └── project-page.tsx │ │ │ │ │ ├── roles │ │ │ │ │ │ ├── update-role.js │ │ │ │ │ │ └── user-roles.tsx │ │ │ │ │ ├── transfers │ │ │ │ │ │ ├── transfer-detail.tsx │ │ │ │ │ │ ├── transfer-table.js │ │ │ │ │ │ └── transfers.js │ │ │ │ │ └── wallets │ │ │ │ │ │ ├── invoice-due-date.tsx │ │ │ │ │ │ ├── invoice-id.tsx │ │ │ │ │ │ ├── wallet-form.tsx │ │ │ │ │ │ ├── wallets-table.tsx │ │ │ │ │ │ └── wallets.tsx │ │ │ │ ├── pages │ │ │ │ │ └── private-page.tsx │ │ │ │ └── shared │ │ │ │ │ ├── country-codes.js │ │ │ │ │ ├── country-picker.js │ │ │ │ │ └── messages.js │ │ │ └── public │ │ │ │ └── features │ │ │ │ ├── organization │ │ │ │ ├── organization-card.js │ │ │ │ ├── organization-list-simple.js │ │ │ │ └── organization-list.js │ │ │ │ ├── stats │ │ │ │ ├── Asstes │ │ │ │ │ └── graph.png │ │ │ │ ├── Charts │ │ │ │ │ ├── Barchart.js │ │ │ │ │ └── PieCharts │ │ │ │ │ │ ├── LabelPieChart.js │ │ │ │ │ │ ├── StackPieChart.js │ │ │ │ │ │ └── StatusPieChart.js │ │ │ │ ├── CurrentMonthStats.js │ │ │ │ ├── InformationCard.js │ │ │ │ ├── InformationCards │ │ │ │ │ ├── AvrageBountyPrice.js │ │ │ │ │ ├── Bounties.js │ │ │ │ │ └── Earnings.js │ │ │ │ ├── StackData.js │ │ │ │ ├── Stats-main-page.js │ │ │ │ └── top-dashboard.js │ │ │ │ ├── task │ │ │ │ ├── assignment │ │ │ │ │ ├── AssignActions.js │ │ │ │ │ ├── RemoveAssignment.js │ │ │ │ │ └── messageAssignment.js │ │ │ │ ├── components │ │ │ │ │ ├── interested-offers.jsx │ │ │ │ │ ├── interested-users.jsx │ │ │ │ │ ├── issue-actions-by-role.tsx │ │ │ │ │ └── send-solution-drawer.tsx │ │ │ │ ├── language-filter.tsx │ │ │ │ ├── messages │ │ │ │ │ └── task-messages.js │ │ │ │ ├── offers │ │ │ │ │ └── task-offer-drawer.tsx │ │ │ │ ├── order │ │ │ │ │ ├── task-order-details.js │ │ │ │ │ └── task-order-transfer.js │ │ │ │ ├── payment │ │ │ │ │ ├── methods │ │ │ │ │ │ ├── invoice │ │ │ │ │ │ │ ├── payment-method-invoice-billing-info.tsx │ │ │ │ │ │ │ └── payment-method-invoice-tab.tsx │ │ │ │ │ │ └── wallet │ │ │ │ │ │ │ └── payment-method-wallet-tab.tsx │ │ │ │ │ └── plans │ │ │ │ │ │ └── task-payment-plans.tsx │ │ │ │ ├── send-solution-form.js │ │ │ │ ├── send-solution-requirements.tsx │ │ │ │ ├── status-dialog.js │ │ │ │ ├── task-assigned.js │ │ │ │ ├── task-assignment.js │ │ │ │ ├── task-author-list.js │ │ │ │ ├── task-claim.js │ │ │ │ ├── task-deadline-form.js │ │ │ │ ├── task-explorer.js │ │ │ │ ├── task-filter-labels.tsx │ │ │ │ ├── task-filters.tsx │ │ │ │ ├── task-header.js │ │ │ │ ├── task-interested.js │ │ │ │ ├── task-invite-card.js │ │ │ │ ├── task-invite.js │ │ │ │ ├── task-item.js │ │ │ │ ├── task-labels.js │ │ │ │ ├── task-level-split-button.js │ │ │ │ ├── task-level.js │ │ │ │ ├── task-list-profile.js │ │ │ │ ├── task-list-user.js │ │ │ │ ├── task-list.tsx │ │ │ │ ├── task-message-author.js │ │ │ │ ├── task-order-invoice-confirm.tsx │ │ │ │ ├── task-orders.js │ │ │ │ ├── task-payment-cancel.js │ │ │ │ ├── task-payment-form.js │ │ │ │ ├── task-payment.js │ │ │ │ ├── task-payments.js │ │ │ │ ├── task-report.js │ │ │ │ ├── task-solve-instructions.tsx │ │ │ │ ├── task-status-dropdown.tsx │ │ │ │ ├── task-status-filter.js │ │ │ │ ├── task-status-icons.js │ │ │ │ ├── task-table.js │ │ │ │ ├── task-tabs.js │ │ │ │ └── task.js │ │ │ │ ├── team │ │ │ │ └── team.js │ │ │ │ └── welcome │ │ │ │ ├── components │ │ │ │ ├── BottomSectionDialog.tsx │ │ │ │ ├── CommonStyles.js │ │ │ │ ├── Info.js │ │ │ │ ├── OurStack.js │ │ │ │ └── cubes.js │ │ │ │ ├── legacy │ │ │ │ ├── clientlist.js │ │ │ │ ├── consulting.js │ │ │ │ ├── contact-recruiter-form.js │ │ │ │ ├── country-list.js │ │ │ │ ├── github-app.js │ │ │ │ ├── home.js │ │ │ │ ├── how-it-works-company.js │ │ │ │ ├── how-it-works-people.js │ │ │ │ ├── landing-page.js │ │ │ │ ├── messages.js │ │ │ │ ├── pricing.js │ │ │ │ ├── terms-of-service-company.js │ │ │ │ ├── terms-of-service-people.js │ │ │ │ ├── welcome.js │ │ │ │ ├── which-companies.js │ │ │ │ ├── who-subscribes.js │ │ │ │ └── workflow.js │ │ │ │ └── pages │ │ │ │ ├── home-page.tsx │ │ │ │ └── welcome-page.tsx │ │ ├── design-library │ │ │ ├── atoms │ │ │ │ ├── alerts │ │ │ │ │ ├── account-requirements │ │ │ │ │ │ ├── account-requirements.stories.tsx │ │ │ │ │ │ ├── account-requirements.styles.ts │ │ │ │ │ │ └── account-requirements.tsx │ │ │ │ │ ├── alert │ │ │ │ │ │ ├── alert.stories.tsx │ │ │ │ │ │ ├── alert.styles.ts │ │ │ │ │ │ └── alert.tsx │ │ │ │ │ └── simple-info │ │ │ │ │ │ ├── simple-info.stories.tsx │ │ │ │ │ │ ├── simple-info.styles.ts │ │ │ │ │ │ └── simple-info.tsx │ │ │ │ ├── badges │ │ │ │ │ └── payment-provider │ │ │ │ │ │ ├── payment-provider.stories.tsx │ │ │ │ │ │ ├── payment-provider.styles.ts │ │ │ │ │ │ └── payment-provider.tsx │ │ │ │ ├── buttons │ │ │ │ │ ├── account-button │ │ │ │ │ │ ├── account-button.stories.tsx │ │ │ │ │ │ └── account-button.tsx │ │ │ │ │ ├── action-buttons │ │ │ │ │ │ ├── action-buttons.stories.tsx │ │ │ │ │ │ ├── action-buttons.styles.ts │ │ │ │ │ │ └── action-buttons.tsx │ │ │ │ │ ├── button │ │ │ │ │ │ ├── button.stories.tsx │ │ │ │ │ │ ├── button.styles.ts │ │ │ │ │ │ └── button.tsx │ │ │ │ │ ├── import-issue-button │ │ │ │ │ │ ├── import-issue-button.stories.tsx │ │ │ │ │ │ ├── import-issue-button.styles.ts │ │ │ │ │ │ └── import-issue-button.tsx │ │ │ │ │ ├── issue-actions │ │ │ │ │ │ ├── issue-actions.stories.tsx │ │ │ │ │ │ └── issue-actions.tsx │ │ │ │ │ ├── provider-login-buttons │ │ │ │ │ │ ├── provider-login-buttons.stories.tsx │ │ │ │ │ │ ├── provider-login-buttons.styles.ts │ │ │ │ │ │ └── provider-login-buttons.tsx │ │ │ │ │ └── signin-buttons │ │ │ │ │ │ ├── signin-buttons.stories.tsx │ │ │ │ │ │ └── signin-buttons.tsx │ │ │ │ ├── inputs │ │ │ │ │ ├── checkbox-terms │ │ │ │ │ │ ├── checkbox-terms.stories.tsx │ │ │ │ │ │ ├── checkbox-terms.styles.ts │ │ │ │ │ │ ├── checkbox-terms.tsx │ │ │ │ │ │ └── terms-dialog.tsx │ │ │ │ │ ├── checkboxes │ │ │ │ │ │ ├── checkboxes.stories.tsx │ │ │ │ │ │ ├── checkboxes.styles.ts │ │ │ │ │ │ └── checkboxes.tsx │ │ │ │ │ ├── fields │ │ │ │ │ │ ├── accept-terms-field │ │ │ │ │ │ │ ├── accept-terms-field.stories.tsx │ │ │ │ │ │ │ └── accept-terms-field.tsx │ │ │ │ │ │ ├── account-type-field │ │ │ │ │ │ │ ├── account-type-field.tsx │ │ │ │ │ │ │ └── account-type.stories.tsx │ │ │ │ │ │ ├── bank-currency-field │ │ │ │ │ │ │ ├── bank-curency-field.stories.tsx │ │ │ │ │ │ │ └── bank-currency-field.tsx │ │ │ │ │ │ ├── bank-select-field │ │ │ │ │ │ │ ├── bank-select-field.stories.tsx │ │ │ │ │ │ │ └── bank-select-field.tsx │ │ │ │ │ │ ├── birth-date-field │ │ │ │ │ │ │ ├── birth-date-field.stories.tsx │ │ │ │ │ │ │ └── birth-date-field.tsx │ │ │ │ │ │ ├── country-field │ │ │ │ │ │ │ ├── country-field.stories.tsx │ │ │ │ │ │ │ └── country-field.tsx │ │ │ │ │ │ ├── country-select-field │ │ │ │ │ │ │ ├── country-select-field.stories.tsx │ │ │ │ │ │ │ └── country-select-field.tsx │ │ │ │ │ │ ├── currency-field │ │ │ │ │ │ │ ├── currency-field.stories.tsx │ │ │ │ │ │ │ └── currency-field.tsx │ │ │ │ │ │ ├── field │ │ │ │ │ │ │ ├── field.stories.tsx │ │ │ │ │ │ │ └── field.tsx │ │ │ │ │ │ ├── id-number-field │ │ │ │ │ │ │ ├── id-number-field.stories.tsx │ │ │ │ │ │ │ └── id-number-field.tsx │ │ │ │ │ │ ├── phone-number-field │ │ │ │ │ │ │ ├── phone-number-field.stories.tsx │ │ │ │ │ │ │ ├── phone-number-field.tsx │ │ │ │ │ │ │ └── text-mask-custom.tsx │ │ │ │ │ │ └── user-role-field │ │ │ │ │ │ │ ├── user-role-field.stories.tsx │ │ │ │ │ │ │ └── user-role-field.tsx │ │ │ │ │ ├── fieldset │ │ │ │ │ │ ├── fieldset.stories.tsx │ │ │ │ │ │ ├── fieldset.styles.ts │ │ │ │ │ │ └── fieldset.tsx │ │ │ │ │ ├── input-comment │ │ │ │ │ │ ├── input-comment.stories.tsx │ │ │ │ │ │ ├── input-comment.styles.ts │ │ │ │ │ │ └── input-comment.tsx │ │ │ │ │ └── price-input │ │ │ │ │ │ ├── price-input.stories.tsx │ │ │ │ │ │ ├── price-input.styles.ts │ │ │ │ │ │ └── price-input.tsx │ │ │ │ ├── loaders │ │ │ │ │ ├── loader │ │ │ │ │ │ ├── loader.stories.tsx │ │ │ │ │ │ ├── loader.styles.ts │ │ │ │ │ │ └── loader.tsx │ │ │ │ │ └── placeholders │ │ │ │ │ │ ├── avatar-placeholder.stories.tsx │ │ │ │ │ │ ├── avatar-placeholder.styles.ts │ │ │ │ │ │ └── avatar-placeholder.tsx │ │ │ │ ├── notifications │ │ │ │ │ └── notification │ │ │ │ │ │ ├── notification.stories.tsx │ │ │ │ │ │ └── notification.tsx │ │ │ │ ├── status │ │ │ │ │ ├── account-status │ │ │ │ │ │ ├── account-holder-status │ │ │ │ │ │ │ ├── account-holder-status.stories.tsx │ │ │ │ │ │ │ ├── account-holder-status.styles.ts │ │ │ │ │ │ │ └── account-holder-status.tsx │ │ │ │ │ │ └── bank-account-status │ │ │ │ │ │ │ ├── bank-account-status.stories.tsx │ │ │ │ │ │ │ ├── bank-account-status.styles.ts │ │ │ │ │ │ │ └── bank-account-status.tsx │ │ │ │ │ ├── base-status │ │ │ │ │ │ ├── base-status.stories.tsx │ │ │ │ │ │ └── base-status.tsx │ │ │ │ │ └── payment-types-status │ │ │ │ │ │ ├── invoice-status │ │ │ │ │ │ ├── invoice-status.stories.tsx │ │ │ │ │ │ ├── invoice-status.styles.ts │ │ │ │ │ │ └── invoice-status.tsx │ │ │ │ │ │ └── payment-status │ │ │ │ │ │ ├── payment-status.stories.tsx │ │ │ │ │ │ ├── payment-status.styles.ts │ │ │ │ │ │ └── payment-status.tsx │ │ │ │ ├── transitions │ │ │ │ │ └── transition.js │ │ │ │ └── typography │ │ │ │ │ ├── base-title │ │ │ │ │ ├── base-title.stories.tsx │ │ │ │ │ └── base-title.tsx │ │ │ │ │ ├── main-title │ │ │ │ │ ├── main-title.stories.tsx │ │ │ │ │ └── main-title.tsx │ │ │ │ │ └── secondary-title │ │ │ │ │ ├── secondary-title.stories.tsx │ │ │ │ │ └── secondary-title.tsx │ │ │ ├── molecules │ │ │ │ ├── breadcrumbs │ │ │ │ │ └── breadcrumb │ │ │ │ │ │ ├── breadcrumb.jsx │ │ │ │ │ │ └── breadcrumb.stories.tsx │ │ │ │ ├── cards │ │ │ │ │ ├── balance-card │ │ │ │ │ │ └── balance-card.tsx │ │ │ │ │ ├── billing-info-card │ │ │ │ │ │ ├── billing-info-card.stories.tsx │ │ │ │ │ │ └── billing-info-card.tsx │ │ │ │ │ ├── issue-card │ │ │ │ │ │ ├── issue-card.stories.tsx │ │ │ │ │ │ └── issue-card.tsx │ │ │ │ │ ├── issue-solution-card │ │ │ │ │ │ ├── issue-solution-card.stories.tsx │ │ │ │ │ │ └── issue-solution-card.tsx │ │ │ │ │ ├── plan-card │ │ │ │ │ │ ├── plan-card.stories.tsx │ │ │ │ │ │ └── plan-card.tsx │ │ │ │ │ ├── project-card │ │ │ │ │ │ ├── project-card.js │ │ │ │ │ │ ├── project-card.stories.tsx │ │ │ │ │ │ ├── project-list-simple.js │ │ │ │ │ │ └── project-list.js │ │ │ │ │ └── team-card │ │ │ │ │ │ ├── TeamCard.js │ │ │ │ │ │ └── team-card.stories.tsx │ │ │ │ ├── content │ │ │ │ │ ├── empty │ │ │ │ │ │ ├── empty-bank-account │ │ │ │ │ │ │ ├── empty-bank-account.stories.tsx │ │ │ │ │ │ │ └── empty-bank-account.tsx │ │ │ │ │ │ └── empty-base │ │ │ │ │ │ │ ├── empty-base.stories.tsx │ │ │ │ │ │ │ └── empty-base.tsx │ │ │ │ │ ├── introduction │ │ │ │ │ │ ├── introduction.stories.tsx │ │ │ │ │ │ └── introduction.tsx │ │ │ │ │ ├── privacy-policy │ │ │ │ │ │ ├── privacy-policy.stories.tsx │ │ │ │ │ │ └── privacy-policy.tsx │ │ │ │ │ └── terms-of-service │ │ │ │ │ │ ├── terms-of-service.stories.tsx │ │ │ │ │ │ └── terms-of-service.tsx │ │ │ │ ├── dialogs │ │ │ │ │ ├── activate-account-dialog │ │ │ │ │ │ ├── activate-account-dialog.stories.tsx │ │ │ │ │ │ └── activate-account-dialog.tsx │ │ │ │ │ ├── bottom-section-dialog │ │ │ │ │ │ ├── bottom-section-dialog.stories.tsx │ │ │ │ │ │ ├── bottom-section-dialog.styles.tsx │ │ │ │ │ │ └── bottom-section-dialog.tsx │ │ │ │ │ ├── country-picker-dialog │ │ │ │ │ │ ├── country-picker-dialog.stories.tsx │ │ │ │ │ │ └── country-picker-dialog.tsx │ │ │ │ │ ├── import-issue-dialog │ │ │ │ │ │ ├── import-issue-dialog.stories.tsx │ │ │ │ │ │ └── import-issue-dialog.tsx │ │ │ │ │ ├── issue-message-author-dialog │ │ │ │ │ │ ├── issue-message-author-dialog.stories.tsx │ │ │ │ │ │ └── issue-message-author-dialog.tsx │ │ │ │ │ ├── issue-reports-dialog │ │ │ │ │ │ ├── issue-reports-dialog.stories.tsx │ │ │ │ │ │ └── issue-reports-dialog.tsx │ │ │ │ │ ├── privacy-dialog │ │ │ │ │ │ ├── privacy-dialog.stories.tsx │ │ │ │ │ │ └── privacy-dialog.tsx │ │ │ │ │ ├── signup-dialog │ │ │ │ │ │ ├── signup-dialog.stories.tsx │ │ │ │ │ │ └── signup-dialog.tsx │ │ │ │ │ └── terms-dialog │ │ │ │ │ │ ├── terms-dialog.stories.tsx │ │ │ │ │ │ └── terms-dialog.tsx │ │ │ │ ├── drawers │ │ │ │ │ ├── drawer │ │ │ │ │ │ ├── drawer-actions │ │ │ │ │ │ │ └── drawer-actions.tsx │ │ │ │ │ │ ├── drawer.stories.tsx │ │ │ │ │ │ └── drawer.tsx │ │ │ │ │ ├── offer-drawer │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── invite │ │ │ │ │ │ │ │ ├── invite-drawer-actions.tsx │ │ │ │ │ │ │ │ ├── invite-drawer-checkboxes.tsx │ │ │ │ │ │ │ │ └── invite-input.tsx │ │ │ │ │ │ │ ├── offer-drawer-create.tsx │ │ │ │ │ │ │ ├── offer-drawer-tabs.tsx │ │ │ │ │ │ │ └── offer │ │ │ │ │ │ │ │ ├── offer-drawer-actions.tsx │ │ │ │ │ │ │ │ └── offer-drawer-checkboxes.tsx │ │ │ │ │ │ ├── offer-drawer.stories.tsx │ │ │ │ │ │ └── offer-drawer.tsx │ │ │ │ │ ├── payment-drawer │ │ │ │ │ │ ├── payment-drawer.stories.tsx │ │ │ │ │ │ └── payment-drawer.tsx │ │ │ │ │ └── task-deadline-drawer │ │ │ │ │ │ └── task-deadline-drawer.tsx │ │ │ │ ├── form-section │ │ │ │ │ ├── address-information-form │ │ │ │ │ │ ├── address-information-form.stories.tsx │ │ │ │ │ │ └── address-information-form.tsx │ │ │ │ │ ├── bank-account-number-form │ │ │ │ │ │ ├── bank-account-number-form.tsx │ │ │ │ │ │ └── bank-account-number.stories.tsx │ │ │ │ │ ├── country-currency-form │ │ │ │ │ │ ├── country-currency-form.stories.tsx │ │ │ │ │ │ └── country-currency-form.tsx │ │ │ │ │ ├── coupon-form │ │ │ │ │ │ ├── coupon.stories.tsx │ │ │ │ │ │ └── coupon.tsx │ │ │ │ │ ├── login-form │ │ │ │ │ │ ├── login-form-forgot │ │ │ │ │ │ │ ├── login-form-forgot.stories.tsx │ │ │ │ │ │ │ └── login-form-forgot.tsx │ │ │ │ │ │ ├── login-form-main │ │ │ │ │ │ │ ├── login-form.stories.tsx │ │ │ │ │ │ │ └── login-form.tsx │ │ │ │ │ │ ├── login-form-reset │ │ │ │ │ │ │ ├── login-form-reset.stories.tsx │ │ │ │ │ │ │ └── login-form-reset.tsx │ │ │ │ │ │ ├── login-form-signin │ │ │ │ │ │ │ ├── login-form-signin.stories.tsx │ │ │ │ │ │ │ └── login-form-signin.tsx │ │ │ │ │ │ └── login-form-signup │ │ │ │ │ │ │ ├── login-form-signup.stories.tsx │ │ │ │ │ │ │ └── login-form-signup.tsx │ │ │ │ │ └── personal-details-form │ │ │ │ │ │ ├── personal-details-form.tsx │ │ │ │ │ │ └── personal-details.stories.tsx │ │ │ │ ├── headers │ │ │ │ │ ├── issue-header │ │ │ │ │ │ ├── issue-header.stories.tsx │ │ │ │ │ │ └── issue-header.tsx │ │ │ │ │ ├── profile-main-header │ │ │ │ │ │ ├── profile-main-header.stories.tsx │ │ │ │ │ │ └── profile-main-header.tsx │ │ │ │ │ └── profile-secondary-header │ │ │ │ │ │ ├── profile-secondary-header.stories.tsx │ │ │ │ │ │ └── profile-secondary-header.tsx │ │ │ │ ├── lists │ │ │ │ │ ├── issue-author-list │ │ │ │ │ │ ├── issue-author-list.stories.tsx │ │ │ │ │ │ └── issue-author-list.tsx │ │ │ │ │ ├── issue-labels-list │ │ │ │ │ │ ├── issue-labels-list.stories.tsx │ │ │ │ │ │ └── issue-labels-list.tsx │ │ │ │ │ ├── offers-list │ │ │ │ │ │ ├── offers-list.stories.tsx │ │ │ │ │ │ └── offers-list.tsx │ │ │ │ │ ├── pickup-tag-list │ │ │ │ │ │ ├── pickup-tag-list.stories.tsx │ │ │ │ │ │ └── pickup-tag-list.tsx │ │ │ │ │ └── requirements-list │ │ │ │ │ │ ├── requirement-list.stories.tsx │ │ │ │ │ │ └── requirement-list.tsx │ │ │ │ ├── menus │ │ │ │ │ ├── account-menu │ │ │ │ │ │ ├── account-menu.stories.tsx │ │ │ │ │ │ └── account-menu.tsx │ │ │ │ │ ├── actions-menu │ │ │ │ │ │ ├── actions-menu.stories.tsx │ │ │ │ │ │ └── actions-menu.tsx │ │ │ │ │ ├── profile-account-menu │ │ │ │ │ │ ├── profile-account-menu.stories.tsx │ │ │ │ │ │ └── profile-account-menu.tsx │ │ │ │ │ ├── side-menu │ │ │ │ │ │ ├── side-menu.placeholder.styles.css │ │ │ │ │ │ ├── side-menu.placeholder.tsx │ │ │ │ │ │ ├── side-menu.stories.tsx │ │ │ │ │ │ └── side-menu.tsx │ │ │ │ │ └── topbar-menu │ │ │ │ │ │ ├── topbar-menu.stories.tsx │ │ │ │ │ │ └── topbar-menu.tsx │ │ │ │ ├── sections │ │ │ │ │ └── stats-bar │ │ │ │ │ │ ├── stats-bar.stories.tsx │ │ │ │ │ │ └── stats-bar.tsx │ │ │ │ ├── switchers │ │ │ │ │ └── language-switcher │ │ │ │ │ │ ├── language-switcher.stories.tsx │ │ │ │ │ │ └── language-switcher.tsx │ │ │ │ ├── tables │ │ │ │ │ └── section-table │ │ │ │ │ │ ├── section-table-custom-fields │ │ │ │ │ │ ├── issue-created-field │ │ │ │ │ │ │ ├── issue-created-field.stories.tsx │ │ │ │ │ │ │ └── issue-created-field.tsx │ │ │ │ │ │ ├── issue-labels-field │ │ │ │ │ │ │ ├── issue-labels-field.stories.tsx │ │ │ │ │ │ │ └── issue-labels-field.tsx │ │ │ │ │ │ ├── issue-language-field │ │ │ │ │ │ │ ├── issue-language-field.stories.tsx │ │ │ │ │ │ │ └── issue-language-field.tsx │ │ │ │ │ │ ├── issue-link-field │ │ │ │ │ │ │ ├── issue-link-field.stories.tsx │ │ │ │ │ │ │ └── issue-link-field.tsx │ │ │ │ │ │ ├── issue-price-field │ │ │ │ │ │ │ ├── issue-price-field.stories.tsx │ │ │ │ │ │ │ └── issue-price-field.tsx │ │ │ │ │ │ ├── issue-project-field │ │ │ │ │ │ │ ├── issue-project-field.stories.tsx │ │ │ │ │ │ │ └── issue-project-field.tsx │ │ │ │ │ │ └── issue-status-field │ │ │ │ │ │ │ ├── issue-status-field.stories.tsx │ │ │ │ │ │ │ └── issue-status-field.tsx │ │ │ │ │ │ ├── section-table-pagination-actions │ │ │ │ │ │ ├── section-table-pagination-actions.stories.tsx │ │ │ │ │ │ └── section-table-pagination-actions.tsx │ │ │ │ │ │ ├── section-table.stories.tsx │ │ │ │ │ │ └── section-table.tsx │ │ │ │ ├── tabs │ │ │ │ │ ├── account-tabs │ │ │ │ │ │ ├── account-tabs.stories.tsx │ │ │ │ │ │ └── account-tabs.tsx │ │ │ │ │ ├── bank-account-tabs │ │ │ │ │ │ ├── bank-account-tabs.stories.tsx │ │ │ │ │ │ └── bank-account-tabs.tsx │ │ │ │ │ ├── base-tabs │ │ │ │ │ │ ├── base-tabs.stories.tsx │ │ │ │ │ │ └── base-tabs.tsx │ │ │ │ │ └── payout-settings-tabs │ │ │ │ │ │ ├── payout-settings-tabs.stories.tsx │ │ │ │ │ │ └── payout-settings-tabs.tsx │ │ │ │ └── trigger-buttons │ │ │ │ │ └── account-settings │ │ │ │ │ ├── account-settings.stories.tsx │ │ │ │ │ └── account-settings.tsx │ │ │ ├── organisms │ │ │ │ ├── forms │ │ │ │ │ ├── account-details-form │ │ │ │ │ │ ├── account-details-form.stories.tsx │ │ │ │ │ │ └── account-details-form.tsx │ │ │ │ │ ├── bank-account-form │ │ │ │ │ │ ├── bank-account-form.stories.tsx │ │ │ │ │ │ └── bank-account-form.tsx │ │ │ │ │ ├── delivery-date │ │ │ │ │ │ ├── delivery-date.stories.tsx │ │ │ │ │ │ └── delivery-date.tsx │ │ │ │ │ ├── import-issue │ │ │ │ │ │ ├── import-issue.stories.tsx │ │ │ │ │ │ └── import-issue.tsx │ │ │ │ │ ├── invoice-payment │ │ │ │ │ │ ├── invoice-payment.stories.tsx │ │ │ │ │ │ └── invoice-payment.tsx │ │ │ │ │ ├── paypal-info-form │ │ │ │ │ │ ├── paypal-info-form.stories.tsx │ │ │ │ │ │ └── paypal-info-form.tsx │ │ │ │ │ ├── price-plan-form │ │ │ │ │ │ ├── price-plan.stories.tsx │ │ │ │ │ │ └── price-plan.tsx │ │ │ │ │ ├── signup-signin │ │ │ │ │ │ ├── signup-signin.stories.tsx │ │ │ │ │ │ └── signup-signin.tsx │ │ │ │ │ └── subscribe-form │ │ │ │ │ │ ├── mailchimp.css │ │ │ │ │ │ ├── subscribe-form.stories.tsx │ │ │ │ │ │ └── subscribe-form.tsx │ │ │ │ └── layouts │ │ │ │ │ ├── account-header │ │ │ │ │ ├── account-header.stories.tsx │ │ │ │ │ └── account-header.tsx │ │ │ │ │ ├── bottom-bar │ │ │ │ │ ├── FooterStyles.js │ │ │ │ │ ├── GithubCard.tsx │ │ │ │ │ ├── SlackCard.tsx │ │ │ │ │ ├── bottom.stories.tsx │ │ │ │ │ └── bottom.tsx │ │ │ │ │ ├── issue-content │ │ │ │ │ ├── issue-content-placeholder.tsx │ │ │ │ │ ├── issue-content.stories.tsx │ │ │ │ │ └── issue-content.tsx │ │ │ │ │ ├── profile-sidebar │ │ │ │ │ ├── profile-sidebar.stories.tsx │ │ │ │ │ └── profile-sidebar.tsx │ │ │ │ │ └── topbar │ │ │ │ │ ├── TopbarStyles.js │ │ │ │ │ ├── import-issue-dialog.tsx │ │ │ │ │ ├── import-issue.js │ │ │ │ │ ├── topbar-menu.tsx │ │ │ │ │ ├── topbar.stories.tsx │ │ │ │ │ └── topbar.tsx │ │ │ ├── pages │ │ │ │ ├── private │ │ │ │ │ ├── account-settings │ │ │ │ │ │ ├── account-settings.stories.tsx │ │ │ │ │ │ └── account-settings.tsx │ │ │ │ │ ├── payout-settings-bank-account-holder │ │ │ │ │ │ ├── payout-settings-bank-account-holder.stories.tsx │ │ │ │ │ │ └── payout-settings-bank-account-holder.tsx │ │ │ │ │ ├── payout-settings-bank-account-info │ │ │ │ │ │ ├── payout-settings-bank-account-info.stories.tsx │ │ │ │ │ │ └── payout-settings-bank-account-info.tsx │ │ │ │ │ ├── payout-settings-bank-account │ │ │ │ │ │ ├── payout-settings-bank-account.stories.tsx │ │ │ │ │ │ └── payout-settings-bank-account.tsx │ │ │ │ │ ├── payout-settings-paypal │ │ │ │ │ │ └── payout-settings-paypal.tsx │ │ │ │ │ └── payout-settings │ │ │ │ │ │ ├── payout-settings.stories.tsx │ │ │ │ │ │ └── payout-settings.tsx │ │ │ │ └── public │ │ │ │ │ ├── about │ │ │ │ │ ├── about.stories.tsx │ │ │ │ │ └── about.tsx │ │ │ │ │ ├── four-o-four │ │ │ │ │ ├── four-o-four.js │ │ │ │ │ └── four-o-four.stories.tsx │ │ │ │ │ └── home │ │ │ │ │ ├── CommonStyles.js │ │ │ │ │ ├── home.stories.tsx │ │ │ │ │ └── home.tsx │ │ │ └── templates │ │ │ │ └── base │ │ │ │ ├── private-base │ │ │ │ ├── private-base.stories.tsx │ │ │ │ └── private-base.tsx │ │ │ │ └── public-base │ │ │ │ ├── public-base.stories.tsx │ │ │ │ └── public-base.tsx │ │ └── shared │ │ │ ├── bottom │ │ │ ├── FooterStyles.js │ │ │ ├── GithubCard.tsx │ │ │ ├── SlackCard.tsx │ │ │ └── bottom.js │ │ │ ├── table-metadata │ │ │ └── task-header-metadata.jsx │ │ │ └── topbar │ │ │ ├── TopbarStyles.js │ │ │ ├── import-issue-dialog.tsx │ │ │ ├── import-issue.js │ │ │ ├── topbar-menu.tsx │ │ │ └── topbar.js │ ├── consts.ts │ ├── containers │ │ ├── account-activation.ts │ │ ├── account-details.js │ │ ├── account.js │ │ ├── account │ │ │ └── payout-settings │ │ │ │ ├── payout-settings-paypal.ts │ │ │ │ └── payouts-settings-bank-account.ts │ │ ├── bottom.js │ │ ├── checkout-form.js │ │ ├── common.js │ │ ├── contact-recruiter-form.js │ │ ├── customer-details.js │ │ ├── home.js │ │ ├── info.js │ │ ├── label.js │ │ ├── language.js │ │ ├── login-form.js │ │ ├── login-page.js │ │ ├── notification.js │ │ ├── organization-list.js │ │ ├── payments.js │ │ ├── payouts-settings.ts │ │ ├── payouts.ts │ │ ├── profile-head.js │ │ ├── profile.js │ │ ├── project-list.js │ │ ├── provider-login-buttons.tsx │ │ ├── recover-password.js │ │ ├── send-solution-drawer.js │ │ ├── task-explorer.js │ │ ├── task-filter.js │ │ ├── task-list-profile.js │ │ ├── task-list-user.js │ │ ├── task-list.js │ │ ├── task-orders.js │ │ ├── task-payment-form.js │ │ ├── task-payment.js │ │ ├── task-solve.js │ │ ├── task.js │ │ ├── team.js │ │ ├── topbar.js │ │ ├── transfers.ts │ │ ├── user-account.js │ │ ├── user-organization-tree.js │ │ ├── user-roles.js │ │ ├── user-tasks-explore.js │ │ ├── user-tasks.js │ │ ├── wallets.js │ │ └── welcome.js │ ├── hooks │ │ └── use-common-actions.tsx │ ├── images │ │ ├── Fallback.png │ │ ├── avatar-alexandre.png │ │ ├── backgrounds │ │ │ └── bg-mail-top.png │ │ ├── bitbucket-logo-blue.png │ │ ├── bitbucket-logo.png │ │ ├── bounty.png │ │ ├── brazil.png │ │ ├── city-software.png │ │ ├── clients │ │ │ ├── client1.png │ │ │ ├── client2.png │ │ │ ├── client3.png │ │ │ ├── electron-logo.png │ │ │ ├── etherpad-logo.png │ │ │ ├── fitnowbrazil-logo.png │ │ │ └── sitespeedio-logo.png │ │ ├── collections │ │ │ ├── Group 505.svg │ │ │ ├── Group 529.svg │ │ │ ├── Group 530.svg │ │ │ ├── collection-flat-background.svg │ │ │ ├── collection-flat-build.png │ │ │ ├── collection-flat-build.svg │ │ │ ├── collection-flat-community.svg │ │ │ ├── collection-flat-companies.svg │ │ │ └── collection-flat-works.svg │ │ ├── core-team-page-asset.png │ │ ├── countries │ │ │ ├── australia.png │ │ │ ├── austria.png │ │ │ ├── belgium.png │ │ │ ├── belize.png │ │ │ ├── brazil.png │ │ │ ├── bulgaria.png │ │ │ ├── canada.png │ │ │ ├── colombia.png │ │ │ ├── croatia.png │ │ │ ├── cyprus.png │ │ │ ├── czech-republic.png │ │ │ ├── default.png │ │ │ ├── denmark.png │ │ │ ├── estonia.png │ │ │ ├── finland.png │ │ │ ├── france.png │ │ │ ├── germany.png │ │ │ ├── ghana.png │ │ │ ├── gibraltar.png │ │ │ ├── greece.png │ │ │ ├── hong-kong.png │ │ │ ├── hungary.png │ │ │ ├── india.png │ │ │ ├── indonesia.png │ │ │ ├── ireland.png │ │ │ ├── italy.png │ │ │ ├── japan.png │ │ │ ├── kenya.png │ │ │ ├── latvia.png │ │ │ ├── liechtenstein.png │ │ │ ├── lithuania.png │ │ │ ├── luxembourg.png │ │ │ ├── malaysia.png │ │ │ ├── malta.png │ │ │ ├── mexico.png │ │ │ ├── netherlands.png │ │ │ ├── new-zealand.png │ │ │ ├── nigeria.png │ │ │ ├── norway.png │ │ │ ├── pakistan.png │ │ │ ├── philippine.png │ │ │ ├── poland.png │ │ │ ├── portugal.png │ │ │ ├── puerto-rico.png │ │ │ ├── romania.png │ │ │ ├── singapore.png │ │ │ ├── slovakia.png │ │ │ ├── slovenia.png │ │ │ ├── south-africa.png │ │ │ ├── spain.png │ │ │ ├── sri-lanka.png │ │ │ ├── sweden.png │ │ │ ├── switzerland.png │ │ │ ├── thailand.png │ │ │ ├── turkey.png │ │ │ ├── united-arab-emirates.png │ │ │ ├── united-kingdom.png │ │ │ └── united-states-of-america.png │ │ ├── credit-card-icon.png │ │ ├── credit-card-icon.svg │ │ ├── deal.png │ │ ├── discount-99.png │ │ ├── funds.png │ │ ├── github-logo-alternative.png │ │ ├── github-logo-black.png │ │ ├── github-logo-bottom.png │ │ ├── github-logo.png │ │ ├── gitlab-logo.png │ │ ├── gitpay-app.png │ │ ├── gitpay-explore-task-screenshot.png │ │ ├── gitpay-logo.png │ │ ├── icons │ │ │ ├── noun_project management_3063514.svg │ │ │ ├── noun_project management_3063515.svg │ │ │ ├── noun_project management_3063521.svg │ │ │ ├── noun_project management_3063531.svg │ │ │ ├── noun_project management_3063532.svg │ │ │ ├── noun_project management_3063535.svg │ │ │ ├── noun_project management_3063542.svg │ │ │ ├── noun_project management_3063547.svg │ │ │ └── skill-preferences │ │ │ │ ├── Angular.svg │ │ │ │ ├── Blogging.svg │ │ │ │ ├── CSS.svg │ │ │ │ ├── Continuous Integration.svg │ │ │ │ ├── Design.svg │ │ │ │ ├── Documentation.svg │ │ │ │ ├── Git.svg │ │ │ │ ├── Node.js.svg │ │ │ │ ├── PHP.svg │ │ │ │ ├── Python.svg │ │ │ │ ├── React.svg │ │ │ │ ├── Ruby.svg │ │ │ │ ├── Testing.svg │ │ │ │ ├── Vue.js.svg │ │ │ │ ├── Wordpress.svg │ │ │ │ └── Writing.svg │ │ ├── landingPage_People.png │ │ ├── login_bg.png │ │ ├── logo-complete-gray.png │ │ ├── logo-complete.png │ │ ├── logo-symbol.png │ │ ├── main-background01.jpg │ │ ├── main-background02.jpg │ │ ├── main-background03.jpg │ │ ├── main-background04.jpg │ │ ├── main-background05.jpg │ │ ├── main-background06.jpg │ │ ├── main-background07.jpg │ │ ├── main-background08.jpg │ │ ├── main-background09.jpg │ │ ├── material-ui-icon-language.png │ │ ├── notifications.png │ │ ├── octodex-motherhubbertocat-transparent.png │ │ ├── octodex-motherhubbertocat.png │ │ ├── octodex-professortocat.png │ │ ├── octodex.png │ │ ├── payment-icon-alt.png │ │ ├── payment-icon.png │ │ ├── paypal-icon.png │ │ ├── sharing.png │ │ ├── slack-logo.png │ │ ├── task-cover.png │ │ ├── task-icon.png │ │ ├── teams │ │ │ ├── core-team-mayna.jpg │ │ │ ├── headhunter-team-member1.png │ │ │ ├── headhunter-team-member2.png │ │ │ ├── profile_rq.jpg │ │ │ └── wharley-team-member.jpg │ │ ├── time-icon.png │ │ ├── tools-icon.png │ │ ├── united-states-of-america.png │ │ ├── welcome-bg.png │ │ ├── welcome-companies.png │ │ ├── welcome-freelancer.png │ │ ├── welcome-teamwork.png │ │ ├── welcome1.png │ │ ├── welcome2.png │ │ ├── welcome3.png │ │ └── worknenjoy-logo.png │ ├── index.d.ts │ ├── index.html │ ├── index.js │ ├── main │ │ ├── app.css │ │ ├── app.js │ │ ├── authOrApp.js │ │ ├── cookie-consent-bar.tsx │ │ ├── routes-sitemap.js │ │ └── routes.js │ ├── modules │ │ └── auth.js │ ├── reducers │ │ ├── accountReducer.js │ │ ├── contactReducer.js │ │ ├── couponReducer.js │ │ ├── customerReducer.js │ │ ├── infoReducer.js │ │ ├── labelReducer.js │ │ ├── languageReducer.js │ │ ├── loginReducer.js │ │ ├── notificationReducer.js │ │ ├── orderReducer.js │ │ ├── organizationsReducer.js │ │ ├── payoutsReducer.js │ │ ├── preferencesReducer.js │ │ ├── profileReducer.js │ │ ├── projectReducer.js │ │ ├── reducers.js │ │ ├── taskReducer.js │ │ ├── taskSolutionReducer.js │ │ ├── teamReducer.js │ │ ├── transfersReducer.js │ │ ├── userRoleReducer.js │ │ ├── walletOrderReducer.js │ │ └── walletReducer.js │ ├── selectors │ │ ├── task.js │ │ └── tasks.js │ ├── stories │ │ ├── Button.jsx │ │ ├── Button.stories.jsx │ │ ├── Header.jsx │ │ ├── Header.stories.jsx │ │ ├── Introduction.stories.mdx │ │ ├── Page.jsx │ │ ├── Page.stories.jsx │ │ ├── assets │ │ │ ├── code-brackets.svg │ │ │ ├── colors.svg │ │ │ ├── comments.svg │ │ │ ├── direction.svg │ │ │ ├── flow.svg │ │ │ ├── plugin.svg │ │ │ ├── repo.svg │ │ │ └── stackalt.svg │ │ ├── button.css │ │ ├── header.css │ │ └── page.css │ ├── styleguide │ │ ├── components │ │ │ └── Page.js │ │ ├── media.tsx │ │ └── styles │ │ │ ├── palette.js │ │ │ └── style.js │ ├── translations │ │ ├── br.json │ │ ├── en.json │ │ ├── generated │ │ │ ├── br.json │ │ │ └── en.json │ │ └── result │ │ │ ├── br.json │ │ │ └── en.json │ └── utils │ │ ├── auth │ │ └── auth.js │ │ ├── format-currency.tsx │ │ └── valid-account.tsx ├── stripe-v3.js ├── tests │ ├── actions │ │ ├── contactActions.test.js │ │ ├── notificationActions.test.js │ │ ├── organizationsActions.test.js │ │ ├── preferencesActions.test.js │ │ ├── taskActions.test.js │ │ ├── taskSolutionActions │ │ │ └── taskSolutionActions.test.js │ │ ├── userActions.test.js │ │ ├── walletActions.test.js │ │ └── walletOrderActions.test.js │ ├── components │ │ ├── __mocks__ │ │ │ ├── fileMock.js │ │ │ └── react-intl.js │ │ ├── cardTeam.test.js │ │ ├── checkout.test.js │ │ ├── login-form.test.jsx │ │ ├── messageAuthor.test.js │ │ └── taskSolution │ │ │ └── task-solution-drawer.test.js │ ├── data │ │ └── create-account-invalid-request.json │ └── reducers │ │ └── reducers.test.js ├── translation.js ├── tsconfig.json ├── webpack.config.js └── webpack.config.prod.js ├── locales ├── br.json ├── en.json └── result │ ├── br.json │ └── en.json ├── migrate.js ├── migration ├── migrations │ ├── 20170430212022-create-user.js │ ├── 20180306212049-users.js │ ├── 20180314193229-add-website-to-user.js │ ├── 20180314204119-add-username-to-user.js │ ├── 20180314205257-add-repos-to-user.js │ ├── 20180314210833-add-picture-url-to-user.js │ ├── 20180318174217-add-provider-to-user.js │ ├── 20180404200305-create-task.js │ ├── 20180422180804-create-order.js │ ├── 20180505094828-task_order.js │ ├── 20180511130542-add-customer-to-user.js │ ├── 20180524213355-add-account-to-user.js │ ├── 20180526160654-create-assign.js │ ├── 20180606135249-add-assigned-to-task.js │ ├── 20180610112853-add-transfer-to-task.js │ ├── 20180626131108-add-title-to-task.js │ ├── 20180626132835-add-repourl-to-user.js │ ├── 20180701191416-add-provider-to-order.js │ ├── 20180703154101-add-payment-url-to-order.js │ ├── 20180703154147-add-payer-id-to-order.js │ ├── 20180703190806-add-token-to-order.js │ ├── 20180707140456-add-transfer-to-order.js │ ├── 20180707141413-add-paypal-to-user.js │ ├── 20180930180435-add-language-to-user.js │ ├── 20180930181704-add-country-to-user.js │ ├── 20181227152503-create-offer.js │ ├── 20190116200530-add-mailflag-to-task.js │ ├── 20190118000202-add-os-to-users.js │ ├── 20190118000217-add-languages-to-user.js │ ├── 20190118000224-add-skills-to-user.js │ ├── 20190118000232-add-receive-notifications-to-user.js │ ├── 20190325193202-role.js │ ├── 20190325193646-member.js │ ├── 20190328210733-add-status-to-assigns.js │ ├── 20190424115813-add-open-for-jobs-to-users.js │ ├── 20190523201059-create-organization.js │ ├── 20190924125939-create-task-history.js │ ├── 20191015182526-add-authorization-id-to-order.js │ ├── 20200317183859-Label.js │ ├── 20200318231424-TaskLabel.js │ ├── 20200323014820-create-plan.js │ ├── 20200422012929-add-message-to-assign.js │ ├── 20200707091140-add-transfer_group-to-order.js │ ├── 20200822085416-addProviderUsernameToUser.js │ ├── 20201217162421-create-project.js │ ├── 20201217171700-create-projects-tasks.js │ ├── 20201217203513-add-projectId-to-task.js │ ├── 20201218184508-add-organizations-projects.js │ ├── 20201218194527-add-organizationId-to-project.js │ ├── 20210102201731-create-types.js │ ├── 20210102211604-add-type-to-user.js │ ├── 20210122093719-add-prviate-to-task.js │ ├── 20210202164305-add-description-to-task.js │ ├── 20210405203758-change-order-source-not-unique.js │ ├── 20210501233027-TaskSolution.js │ ├── 20210527014928-coupon.js │ ├── 20210605214301-add-coupon-to-order.js │ ├── 20220404015828-add-active-to-user.js │ ├── 20220412120201-change-offer-comment-char-limit.js │ ├── 20230501125111-add-recover-password-token-to-user.js │ ├── 20230627191129-add-activation-token-to-user.js │ ├── 20230628100256-add-email-verified-to-user.js │ ├── 20231212224240-add-status-to-offer.js │ ├── 20240102224715-create-transfer.js │ ├── 20240105133559-add-transferId-to-task.js │ ├── 20240111183036-add-userId-to-transfer.js │ ├── 20240111183241-add-to-to-transfer.js │ ├── 20240125173630-add-has-issue-reference-to-task-solution.js │ ├── 20240129230552-create-payouts.js │ ├── 20240129230638-UserPayout.js │ ├── 20240607142810-add-paypal-payout-id-to-transfer.js │ ├── 20240609120835-add-transfer-amount-to-transfer.js │ ├── 20240819141150-add-not-listed-to-task.js │ ├── 20240824095929-add-provider-email-to-user.js │ ├── 20240824100218-add-provider-id-to-user.js │ ├── 20240824130228-add-login-strategy-to-user.js │ ├── 20240924210820-create-wallet.js │ ├── 20240924212046-create-wallet-order.js │ ├── 20241228170105-create-programming-languages-tables.js │ ├── 20250129165212-create-plan-schema.js │ ├── 20250129170625-add-plan-schemas-to-plans.js │ └── 20250129201839-add-create-at-updated-at-to-plan.js └── seeders │ ├── 20190326142803-roles.js │ ├── 20190625021603-generate_users.js │ ├── 20190625021614-generate_tasks.js │ ├── 20210102213618-create-user-types.js │ ├── 20210602015833-generate-coupon.js │ └── 20250130160328-create-plan-schemas.js ├── models ├── assign.js ├── coupon.js ├── history.js ├── index.js ├── label.js ├── member.js ├── offer.js ├── order.js ├── organization.js ├── payout.js ├── plan.js ├── planSchema.js ├── programminglanguage.js ├── project.js ├── projectProgrammingLanguage.js ├── role.js ├── task.js ├── taskSolution.js ├── transfer.js ├── type.js ├── user.js ├── wallet.js └── walletOrder.js ├── modules ├── app │ ├── controllers │ │ ├── auth.js │ │ ├── contact.js │ │ ├── coupon.js │ │ ├── info.js │ │ ├── label.js │ │ ├── language.js │ │ ├── offer.js │ │ ├── order.js │ │ ├── organization.js │ │ ├── payout.js │ │ ├── project.js │ │ ├── task.js │ │ ├── taskSolution.js │ │ ├── team.js │ │ ├── transfer.js │ │ ├── type.js │ │ ├── wallet.js │ │ ├── walletOrder.js │ │ └── webhook.js │ ├── index.js │ └── routes │ │ ├── auth.js │ │ ├── contact.js │ │ ├── coupon.js │ │ ├── info.js │ │ ├── label.js │ │ ├── language.js │ │ ├── offer.js │ │ ├── orders.js │ │ ├── organization.js │ │ ├── payout.js │ │ ├── projects.js │ │ ├── secure.js │ │ ├── taskSolutions.js │ │ ├── tasks.js │ │ ├── team.js │ │ ├── transfer.js │ │ ├── types.js │ │ ├── wallet.js │ │ ├── walletOrder.js │ │ └── webhooks.js ├── assigns │ ├── assignExists.js │ └── index.js ├── authenticationHelpers.js ├── bot │ ├── bountyClosedNotPaidComment.js │ ├── comment.js │ └── issueAddedComment.js ├── contact │ ├── contactRecruiters.js │ └── index.js ├── coupon │ ├── index.js │ ├── processCouponUsage.js │ └── validateCoupon.js ├── label │ ├── index.js │ └── labelSearch.js ├── language │ ├── index.js │ ├── languageSearch.js │ └── projectProgrammingLanguage.js ├── mail │ ├── assign.js │ ├── constants.js │ ├── contact.js │ ├── content.js │ ├── deadline.js │ ├── handleError.js │ ├── handleResponse.js │ ├── issueClosed.js │ ├── mail.js │ ├── order.js │ ├── payment.js │ ├── request.js │ ├── status.js │ ├── task.js │ ├── template.js │ ├── templates │ │ ├── base-content.js │ │ ├── default.js │ │ ├── main-content.js │ │ └── user-account-activation.ts │ ├── transfer.js │ ├── user.js │ └── wallet.js ├── members │ ├── index.js │ └── memberExists.js ├── offers │ ├── index.js │ ├── offerExists.js │ ├── offerMessage.js │ └── updateOffer.js ├── orders │ ├── index.js │ ├── orderAuthorize.js │ ├── orderBuilds.js │ ├── orderCancel.js │ ├── orderDetails.js │ ├── orderExists.js │ ├── orderFetch.js │ ├── orderPayment.js │ ├── orderRefund.js │ ├── orderSearch.js │ ├── orderTransfer.js │ ├── orderUpdate.js │ └── orderUpdateAfterStripe.js ├── organizations │ ├── index.js │ ├── organizationBuilds.js │ ├── organizationFetch.js │ ├── organizationList.js │ └── organizationUpdate.js ├── payouts │ ├── index.js │ ├── payoutBuilds.js │ └── payoutSearch.js ├── projectHelpers.js ├── projects │ ├── index.js │ ├── projectFetch.js │ └── projectList.js ├── roles │ ├── index.js │ └── roleExists.js ├── tasks │ ├── index.js │ ├── removeAssignedUser.js │ ├── requestAssignedUser.js │ ├── taskBuilds.js │ ├── taskClaim.js │ ├── taskDeleteById.js │ ├── taskDeleteConfirmation.js │ ├── taskExists.js │ ├── taskFetch.js │ ├── taskFunding.js │ ├── taskInvite.js │ ├── taskMessage.js │ ├── taskMessageAuthor.js │ ├── taskPayment.js │ ├── taskReport.js │ ├── taskSearch.js │ ├── taskSolutionCreate.js │ ├── taskSolutionFetchData.js │ ├── taskSolutionGet.js │ ├── taskSolutionUpdate.js │ ├── taskSync.js │ ├── taskTransfer.js │ └── taskUpdate.js ├── team │ ├── index.js │ └── requestJoinCoreTeam.js ├── transfers │ ├── index.js │ ├── transferBuilds.js │ ├── transferFetch.js │ ├── transferSearch.js │ └── transferUpdate.js ├── types │ ├── index.js │ └── typeSearch.js ├── users │ ├── index.js │ ├── userAccount.js │ ├── userAccountCountries.js │ ├── userAccountCreate.js │ ├── userAccountUpdate.js │ ├── userBankAccount.js │ ├── userBankAccountCreate.js │ ├── userBankAccountUpdate.js │ ├── userBuilds.js │ ├── userChangePassword.js │ ├── userCustomer.js │ ├── userCustomerCreate.js │ ├── userCustomerUpdate.js │ ├── userDeleteById.js │ ├── userExists.js │ ├── userFetch.js │ ├── userOrganizations.js │ ├── userPreferences.js │ ├── userSearch.js │ ├── userTasks.js │ ├── userTypes.js │ └── userUpdate.js ├── util │ ├── currency-map.js │ └── customer.js ├── walletOrders │ ├── index.js │ ├── walletOrderBuilds.js │ ├── walletOrderFetch.js │ ├── walletOrderList.js │ └── walletOrderUpdate.js ├── wallets │ ├── index.js │ ├── walletBuilds.js │ ├── walletFetch.js │ ├── walletList.js │ └── walletUpdate.js └── webhooks │ └── chargeSucceeded.js ├── package-lock.json ├── package.json ├── pmd.xml ├── pull_request_template.md ├── reports.js ├── scripts.js ├── scripts ├── financial_summary.js └── update_projects_programming_languages.js ├── server.js └── test ├── authenticate.sequelize.test.js ├── contact.test.js ├── cron.test.js ├── data ├── account.json ├── balance.js ├── balance.transaction.js ├── card.js ├── charge.js ├── github.auth.token.js ├── github.event.main.js ├── github.issue.create.js ├── github.issue.error.js ├── github.issue.get.js ├── github.issue.labeled.js ├── github.org.json ├── github.repository.get.js ├── payout.js ├── paypal.order.js ├── paypal.payout.js ├── refund.js ├── stripe.charge.balance_transaction.js ├── stripe.charge.js ├── stripe.customer.js ├── stripe.invoice.basic.js ├── stripe.invoice.create.js ├── stripe.invoice.paid.js ├── stripe.invoice.update.js ├── stripe.invoiceitem.js ├── stripe.webhook.invoice.js └── transfer.js ├── email.test.js ├── helpers └── index.js ├── info.test.js ├── order.test.js ├── organization.test.js ├── payout.test.js ├── project.test.js ├── scripts.test.js ├── task.test.js ├── taskSolution.test.js ├── transfer.test.js ├── user.test.js ├── wallet.test.js ├── walletOrder.test.js └── webhook.test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | public 2 | build 3 | node_modules 4 | temp 5 | coverage 6 | test 7 | migrate.js 8 | migration 9 | frontend/stripe-v3.js 10 | frontend/sitemap-builder.js 11 | 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [alexanmtz] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: gitpay 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: ['https://gitpay.me/#/organizations/1/projects/4'] 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Gitpay Discussions 4 | url: https://github.com/worknenjoy/gitpay/discussions 5 | about: Please ask and answer questions here. 6 | - name: Gipay website 7 | url: https://gitpay.me 8 | about: See the platform in production 9 | -------------------------------------------------------------------------------- /.github/workflows/chatgpt-code-generation.yml: -------------------------------------------------------------------------------- 1 | on: 2 | issues: 3 | types: [labeled] 4 | issue_comment: 5 | types: [created] 6 | 7 | permissions: 8 | contents: write 9 | issues: write 10 | pull-requests: write 11 | 12 | jobs: 13 | chatgpt-code-generation: 14 | if: ${{ (github.event_name == 'issues' && 15 | contains( github.event.label.name, 'Code Generation')) || 16 | (github.event_name == 'issue_comment' && 17 | github.event.issue.pull_request && 18 | contains( github.event.comment.body, 'Generate code!')) }} 19 | runs-on: ubuntu-latest 20 | steps: 21 | - name: ChatGPT Code Generation 22 | uses: alexanmtz/write-code-and-create-pr-from-issue-by-chatgpt@main 23 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v17.9.1 2 | -------------------------------------------------------------------------------- /.sequelizerc: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | 'config': path.resolve('./config', 'config.json'), 5 | 'migrations-path': path.resolve('./migration', 'migrations'), 6 | 'models-path': path.resolve('./', 'models'), 7 | 'seeders-path': path.resolve('./migration', 'seeders') 8 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | dist: trusty 3 | language: node_js 4 | cache: 5 | directories: 6 | - node_modules 7 | services: 8 | - postgresql 9 | before_script: 10 | - psql -c 'create database gitpay_test;' -U postgres 11 | - npm run migrate-test 12 | node_js: 13 | - "8.6.0" 14 | 15 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "pwa-chrome", 9 | "request": "launch", 10 | "name": "Launch Chrome against localhost", 11 | "url": "http://localhost:8080", 12 | "webRoot": "${workspaceFolder}" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "vsicons.presets.angular": true 3 | } -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: npm start 2 | -------------------------------------------------------------------------------- /config/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "development": { 3 | "username": "postgres", 4 | "password": "postgres", 5 | "database": "gitpay_dev", 6 | "host": "127.0.0.1", 7 | "port": 5432, 8 | "dialect": "postgres", 9 | "logging": false, 10 | "operatorsAliases": false 11 | }, 12 | "test": { 13 | "username": "postgres", 14 | "password": "postgres", 15 | "database": "gitpay_test", 16 | "host": "127.0.0.1", 17 | "port": 5432, 18 | "dialect": "postgres", 19 | "logging": false 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /locales/en.json 3 | translation: /locales/result/%two_letters_code%.json 4 | languages_mapping: 5 | two_letters_code: 6 | pt-BR: br 7 | en-US: en 8 | - source: /frontend/src/translations/generated/en.json 9 | translation: /frontend/src/translations/result/%two_letters_code%.json 10 | languages_mapping: 11 | two_letters_code: 12 | pt-BR: br 13 | en-US: en 14 | -------------------------------------------------------------------------------- /docker-compose-linux.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | frontend: 5 | image: node:8.6 6 | command: sh -c "npm install && npm run dev" 7 | working_dir: /gitpay/frontend 8 | volumes: 9 | - .:/gitpay 10 | network_mode: host 11 | expose: 12 | - "8082" 13 | backend: 14 | env_file: 15 | - .env 16 | image: node:8.6 17 | command: sh -c "npm install && npm run migrate && npm run start" 18 | working_dir: /gitpay 19 | volumes: 20 | - .:/gitpay 21 | network_mode: host 22 | db: 23 | env_file: 24 | - .env 25 | image: postgres 26 | network_mode: host 27 | -------------------------------------------------------------------------------- /docker-compose.test.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | backend_test: 5 | image: node:8.6 6 | command: sh -c "npm install && npm run migrate-test && npm run test" 7 | working_dir: /gitpay 8 | volumes: 9 | - .:/gitpay 10 | environment: 11 | - NODE_ENV=test 12 | network_mode: host 13 | db_test: 14 | image: postgres 15 | environment: 16 | - POSTGRES_PASSWORD=postgres 17 | - POSTGRES_DB=gitpay_test 18 | network_mode: host -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | frontend: 5 | image: node:8.6 6 | command: sh -c "npm install && npm run dev" 7 | working_dir: /gitpay/frontend 8 | volumes: 9 | - .:/gitpay 10 | network_mode: host 11 | ports: 12 | - "8082:8082" 13 | expose: 14 | - "8082" 15 | backend: 16 | env_file: 17 | - .env 18 | image: node:8.6 19 | command: sh -c "npm install && npm run migrate && npm run start" 20 | working_dir: /gitpay 21 | volumes: 22 | - .:/gitpay 23 | network_mode: host 24 | ports: 25 | - "3000:3000" 26 | db: 27 | env_file: 28 | - .env 29 | image: postgres 30 | network_mode: host 31 | -------------------------------------------------------------------------------- /frontend/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | "@babel/preset-react", 5 | "@babel/preset-typescript" 6 | ], 7 | "plugins": [ 8 | ["transform-imports", { 9 | "@material-ui/icons": { 10 | "transform": "@material-ui/icons/${member}", 11 | "preventFullImport": true 12 | } 13 | } 14 | ], 15 | "add-react-displayname", 16 | "@babel/plugin-proposal-object-rest-spread", 17 | "@babel/plugin-proposal-class-properties", 18 | "babel-plugin-styled-components", 19 | ["react-intl", { 20 | "messagesDir": "./build/messages/", 21 | "removeDefaultMessage": true, 22 | "extractFromFormatMessageCall": true, 23 | "workspaceRoot": "src" 24 | }] 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /frontend/.mocharc.yaml: -------------------------------------------------------------------------------- 1 | require: '@babel/register' 2 | -------------------------------------------------------------------------------- /frontend/build/messages/src/components/profile/preferences.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "preferences.title.main", 4 | "defaultMessage": "Preferences" 5 | }, 6 | { 7 | "id": "preferences.os", 8 | "defaultMessage": "OS" 9 | }, 10 | { 11 | "id": "prefences.header.title", 12 | "defaultMessage": "Preferences" 13 | }, 14 | { 15 | "id": "prefences.header.sub", 16 | "defaultMessage": "My language preferences" 17 | }, 18 | { 19 | "id": "prefences.my.skills.zero", 20 | "defaultMessage": "No skills selected" 21 | } 22 | ] -------------------------------------------------------------------------------- /frontend/public/favicon-gitpay.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/worknenjoy/gitpay/f79b91e58df47587451da08e9efe17fca76d5a82/frontend/public/favicon-gitpay.ico -------------------------------------------------------------------------------- /frontend/sitemap-builder.js: -------------------------------------------------------------------------------- 1 | require('@babel/register')({ 2 | ignore: [ 3 | 'node_modules/**/*' 4 | ], 5 | presets: ['@babel/preset-env', '@babel/preset-react'], 6 | plugins: ['@babel/plugin-proposal-object-rest-spread', '@babel/plugin-proposal-class-properties'] 7 | }) 8 | 9 | const router = require('./src/main/routes-sitemap').default 10 | const Sitemap = require('react-router-sitemap').default 11 | 12 | console.log(router); 13 | 14 | ( 15 | new Sitemap(router) 16 | .build('http://gitpay.me') 17 | .save('./public/sitemap.xml') 18 | ) 19 | -------------------------------------------------------------------------------- /frontend/src/actions/helpers/index.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import Auth from '../../modules/auth' 3 | 4 | export const validToken = () => { 5 | if (Auth.getToken()) { 6 | axios.defaults.headers.common['authorization'] = Auth.getToken() 7 | } 8 | 9 | return true 10 | } 11 | -------------------------------------------------------------------------------- /frontend/src/common/operator/if.js: -------------------------------------------------------------------------------- 1 | export default props => { 2 | if (props.test) { 3 | return props.children 4 | } 5 | else { 6 | return false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /frontend/src/common/selectors/user/getUser.js: -------------------------------------------------------------------------------- 1 | export const getUserData = (state) => state.loggedIn.data 2 | export const getCurrentUser = (state) => state.loggedIn 3 | -------------------------------------------------------------------------------- /frontend/src/components/areas/private/features/account/features/account-details/TextMaskCustom.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import MaskedInput from "react-text-mask"; 3 | 4 | function TextMaskCustom(props) { 5 | const { inputRef, ...other } = props 6 | 7 | return ( 8 | { 11 | inputRef(ref ? ref.inputElement : null) 12 | }} 13 | mask={['(', '+', /[1-9]/, /\d/, ')', ' ', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/]} 14 | placeholderChar={'\u2000'} 15 | showMask 16 | /> 17 | ) 18 | } 19 | 20 | export default TextMaskCustom; 21 | -------------------------------------------------------------------------------- /frontend/src/components/areas/private/features/account/features/account-details/account-details.css: -------------------------------------------------------------------------------- 1 | .PhoneInputInput { 2 | height: 52px; 3 | border: 2px solid #E2E5EA; 4 | border-radius: 3px; 5 | padding: 0px 12px; 6 | height: 52; 7 | } 8 | 9 | .PhoneInput.PhoneInput--focus input { 10 | border: 2px solid #353A42 !important; 11 | } -------------------------------------------------------------------------------- /frontend/src/components/areas/private/features/account/features/account-skills/my-skill.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { 3 | Avatar, 4 | Chip 5 | } from '@material-ui/core' 6 | import { withRouter } from 'react-router-dom' 7 | import { SkillIcon } from "./skill-icon" 8 | 9 | const MySkill = (props) => { 10 | const { classes, title, onDelete } = props 11 | 12 | return ( 13 | 16 | 17 | 18 | } 19 | label={title} 20 | className={classes.chipSkill} 21 | onDelete={onDelete} 22 | style={{marginRight: 5}} 23 | /> 24 | ) 25 | } 26 | 27 | export default withRouter(MySkill) 28 | -------------------------------------------------------------------------------- /frontend/src/components/areas/private/features/payments/checkout/address-section.js: -------------------------------------------------------------------------------- 1 | // CardSection.js 2 | import React from 'react' 3 | // import { PostalCodeElement } from 'react-stripe-elements'; 4 | 5 | class AddressSection extends React.Component { 6 | render () { 7 | return