{"id":18388284,"url":"https://github.com/async-labs/harbor","last_synced_at":"2025-08-09T04:06:17.878Z","repository":{"id":110828881,"uuid":"119297438","full_name":"async-labs/harbor","owner":"async-labs","description":"open source web app built with React/Material-UI/Next/Express/Mongoose/MongoDB","archived":false,"fork":false,"pushed_at":"2021-03-12T14:41:22.000Z","size":169,"stargazers_count":66,"open_issues_count":0,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-22T10:42:26.296Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/async-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-28T21:01:07.000Z","updated_at":"2024-07-01T21:37:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"4381af72-3f55-4a0a-956e-56e281ee43bb","html_url":"https://github.com/async-labs/harbor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-labs%2Fharbor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-labs%2Fharbor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-labs%2Fharbor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-labs%2Fharbor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/async-labs","download_url":"https://codeload.github.com/async-labs/harbor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247583106,"owners_count":20961969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T01:33:30.225Z","updated_at":"2025-04-07T02:33:20.497Z","avatar_url":"https://github.com/async-labs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Harbor\nOpen source web app built with React/Material-UI/Next/Express/Mongoose/MongoDB.\n\nThis app allows anyone with a Gmail account to receive payments for sending advice via email.\n\n\n## How can I use this app?\n\nYou can learn:\n- React/Material-UI/Next/Express/Mongoose/MongoDB boilerplate ([up-to-date boilerplate](https://github.com/builderbook/builderbook))\n- Google OAuth API, \n- Stripe connected accounts, Stripe payments, Stripe invoices API,\n- Gmail API\n\n\n## Screenshots\n\nMentor settings page\n![harbor-mentor-page](https://user-images.githubusercontent.com/10218864/35487210-e5c3dd44-042d-11e8-8e6c-2e4673fac929.png)\n\nMentor contact page\n![harbor-settings-page](https://user-images.githubusercontent.com/10218864/35487211-e5dcb77e-042d-11e8-9fa7-1fe6eb151ef4.png)\n\nCustomer checkout\n![habor-checkout](https://user-images.githubusercontent.com/10218864/35487337-3bbb9006-042f-11e8-80da-4cfab3a17fbb.png)\n\n\n## Run locally\n- Clone the project and run `yarn` to add packages.\n- Before you start the app, create a `.env` file at the app's root. This file must have _at least three env variables_: `MONGO_URL_TEST`, `Google_clientID`, `Google_clientSecret`. We recommend free MongoDB at mLab.\n\n  To use all features and third-party integrations (such as Stripe, Google OAuth), add values to all env variables in `.env` file:\n  `.env` :\n  ```\n  MONGO_URL=\"XXXXXX\"\n  MONGO_URL_TEST=\"XXXXXX\"\n\n  Google_clientID=\"XXXXXX\"\n  Google_clientSecret=\"XXXXXX\"\n\n  Amazon_accessKeyId=\"XXXXXX\"\n  Amazon_secretAccessKey=\"XXXXXX\"\n  \n  Stripe_Test_ClientID=\"ca_XXXXXX\"\n  Stripe_Live_ClientID=\"ca_XXXXXX\"\n  Stripe_Test_SecretKey=\"sk_test_XXXXXX\"\n  Stripe_Live_SecretKey=\"sk_live_XXXXXX\"\n  Stripe_Live_PublishableKey=\"pk_live_XXXXXX\"\n  Stripe_Test_PublishableKey=\"pk_test_XXXXXX\"\n  ```\n\n- Before you start the app, create a `env-config.js` file at the app's root. This file makes Stripe's public keys (keys that start with `pk`) available on client. Content of this file:\n  `env-config.js` :\n  ```\n  const dev = process.env.NODE_ENV !== 'production';\n\n  module.exports = {\n    StripePublishableKey: dev\n      ? 'pk_test_XXXXXX'\n      : 'pk_live_XXXXXX',\n  };\n  ```\n\n- Start the app with `yarn dev`.\n\n\n## Deploy\nFollow these steps to deploy Harbor app with Zeit's [now](https://zeit.co/now).\n\n1. Install now: `npm install -g now`\n\n2. Point your domain to Zeit world nameservers: [three steps](https://zeit.co/world#get-started)\n\n3. Check the `now.json` file. If you are using `dotenv` and `.env` for env variables, no need to change `now.json`. If you make changes to the app, check up how to [configure now](https://zeit.co/docs/features/configuration).\n\n4. Make sure you updated `ROOT_URL` in `package.json` and `lib/getRootURL.js` files.\n\n5. Check that you have all production-level env variable in `.env`. \n\n6. In your terminal, deploy the app by running `now`.\n\n7. Now outputs your deployment's URL, for example: `harbor-zomcvzgtvc.now.sh`.\n\n8. Point successful deployment to your domain, for example: `now ln harbor-zomcvzgtvc.now.sh builderbook.org`.\n\nYou are done.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasync-labs%2Fharbor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasync-labs%2Fharbor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasync-labs%2Fharbor/lists"}