{"id":27037176,"url":"https://github.com/shibbir/gadget-catalog","last_synced_at":"2025-04-05T01:16:56.965Z","repository":{"id":13842808,"uuid":"75104324","full_name":"shibbir/gadget-catalog","owner":"shibbir","description":"A react application for cataloging gadgets","archived":false,"fork":false,"pushed_at":"2023-10-22T00:24:39.000Z","size":65145,"stargazers_count":7,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-10-22T02:22:08.355Z","etag":null,"topics":["cloudinary","express","jest","mongodb","nodejs","passport","reactjs","redux","semantic-ui-react","webpack"],"latest_commit_sha":null,"homepage":"https://gadget-catalog.onrender.com","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/shibbir.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}},"created_at":"2016-11-29T17:16:18.000Z","updated_at":"2023-10-11T02:19:26.000Z","dependencies_parsed_at":"2023-10-16T02:53:57.653Z","dependency_job_id":null,"html_url":"https://github.com/shibbir/gadget-catalog","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibbir%2Fgadget-catalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibbir%2Fgadget-catalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibbir%2Fgadget-catalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shibbir%2Fgadget-catalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shibbir","download_url":"https://codeload.github.com/shibbir/gadget-catalog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271497,"owners_count":20911587,"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":["cloudinary","express","jest","mongodb","nodejs","passport","reactjs","redux","semantic-ui-react","webpack"],"created_at":"2025-04-05T01:16:56.399Z","updated_at":"2025-04-05T01:16:56.951Z","avatar_url":"https://github.com/shibbir.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    :loudspeaker: Gadget Catalog\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eA single page application for cataloging gadgets. Built with react, node.js, mongodb and much more.\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/shibbir/gadget-catalog/actions/workflows/node.js.yml\"\u003e\n        \u003cimg src=\"https://github.com/shibbir/gadget-catalog/actions/workflows/node.js.yml/badge.svg\" alt=\"Node.js CI\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://dl.circleci.com/status-badge/redirect/gh/shibbir/gadget-catalog/tree/master\"\u003e\n        \u003cimg src=\"https://dl.circleci.com/status-badge/img/gh/shibbir/gadget-catalog/tree/master.svg?style=shield\" alt=\"Circle CI\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://coveralls.io/github/shibbir/gadget-catalog?branch=master\"\u003e\n        \u003cimg src=\"https://coveralls.io/repos/github/shibbir/gadget-catalog/badge.svg?branch=master\" alt=\"Coverage Status\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://sonarcloud.io/summary/overall?id=shibbir_gadget-catalog\"\u003e\n        \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=shibbir_gadget-catalog\u0026metric=reliability_rating\" alt=\"Reliability Rating\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"/\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003csub\u003eYet another \u003ca href=\"https://reactjs.org/\"\u003ereact.js\u003c/a\u003e application. Built with ❤︎ by\n    \u003ca href=\"https://github.com/shibbir\"\u003eShibbir Ahmed\u003c/a\u003e and\n    \u003ca href=\"https://github.com/shibbir/gadget-catalog/graphs/contributors\"\u003e\n        contributors.\n    \u003c/a\u003e\n\u003c/div\u003e\n\n## :bookmark: Table of Contents\n- [Built with](#hammer-built-with)\n- [Configuring Cloudinary](#cloud-configuring-cloudinary)\n- [Configuring environment variables](#key-configuring-environment-variables)\n- [Installation and bootstrapping](#rocket-installation-and-bootstrapping)\n- [Running tests](#heavy_check_mark-running-tests)\n- [Demo](#flashlight-demo)\n- [Bugs or Feature Requests](#beetle-bugs-or-feature-requests)\n- [License](#memo-License)\n\n## :wrench: Built with\n- [Cloudinary](https://cloudinary.com/)\n- [Express](https://expressjs.com/)\n- [Formik](https://jaredpalmer.com/formik/)\n- [Highcharts](https://www.highcharts.com/)\n- [Jest](https://jestjs.io/)\n- [MongoDB](https://www.mongodb.com/)\n- [Nodemailer](https://nodemailer.com/)\n- [Passport](https://www.passportjs.org/)\n- [React](https://reactjs.org/)\n- [React Redux](https://react-redux.js.org/)\n- [Semantic UI React](https://react.semantic-ui.com/)\n- [Tiny Cloud](https://www.tiny.cloud/)\n- [Webpack](https://webpack.js.org/)\n\n## :cloud: Configuring Cloudinary\nThis application requires [Cloudinary](https://cloudinary.com/), which is a Software-as-a-Service (SaaS) solution for managing media assets in the cloud. Just signup for a free account. After signing up you will find your configuration parameters in cloudinary management [console.](https://cloudinary.com/console)\n\n## :pencil2: Configuring Tiny Cloud\nThis application requires [Tiny Cloud](https://www.tiny.cloud/) for managing richtext contents. To register for a Tiny Cloud API key, visit the [Tiny Account sign-up page](https://www.tiny.cloud/auth/signup/). To retrieve the API key for an existing Tiny Account, login and visit the [Tiny Account Dashboard](https://www.tiny.cloud/my-account).\n\n## :key: Configuring environment variables\n\u003e Rename .env.example file to .env and adjust your environment variables. Details for each environment variables are given below:\n\nName | Mandatory | Description\n------------ | ------------- | -------------\nPORT | Yes | On which port the web server will be listen to.\nMONGODB_URI | Yes | MongoDB connection string URI. For more details visit [here](https://docs.mongodb.com/manual/reference/connection-string/).\nTOKEN_SECRET | Yes | A secret string to generate an access token. Learn more from [here](https://jwt.io/introduction/).\nREFRESH_SECRET | Yes | A secret string to generate a refresh token. Learn more from [here](https://jwt.io/introduction/).\nGOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET | No | Your OAuth 2.0 client credentials from google. Learn more from [here](https://developers.google.com/identity/protocols/OAuth2).\nFACEBOOK_CLIENT_ID and FACEBOOK_CLIENT_SECRET | No | Your OAuth 2.0 client credentials from facebook. Learn more from [here](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow).\nCLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, and CLOUDINARY_API_SECRET | Yes | After signing up for a free account in [Cloudinary](https://cloudinary.com/), go to your [dashboard](https://cloudinary.com/console) to obtain the required credentials to access their api. Learn more from [here](https://cloudinary.com/documentation).\nTINYCLOUD_API_KEY | Yes | Your TinyMCE API Key. For more details visit [here](https://www.tiny.cloud/docs/tinymce/6/).\nSMTP_HOST, MAILER_ADDRESS, and MAILER_PASSWORD | Yes | Your mail server's smtp address and your email credentials. Learn more from [here](https://nodemailer.com/smtp/). If you want to use gmail to send emails you have to allow non secure apps to access gmail. You can do this by going to your gmail settings [here](https://myaccount.google.com/lesssecureapps).\nSENTRY_DSN | No | Data Source Name(DSN) value for enabling [Sentry](https://sentry.io).\n\n## :rocket: Installation and bootstrapping\n\u003e You need to have [Node.js](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/lang/en/) installed on your machine before running the followings:\n\n```bash\n$ yarn install     # install dependencies\n\n$ yarn start       # development build\n\n$ yarn production  # production build\n```\n\n## :heavy_check_mark: Running Tests\n```bash\n$ yarn test       # run unit tests\n\n$ yarn coverage   # generate coverage report\n```\n\n## :flashlight: Demo\nHere is a working live demo :  https://gadget-catalog.onrender.com/\n\n## :beetle: Bugs or Feature Requests\nIf you find a bug, kindly open an issue [here](https://github.com/shibbir/gadget-catalog/issues/new) by including your step by step to reproduce the issue.\n\nIf you'd like to request a new feature, feel free to do so by opening an issue [here](https://github.com/shibbir/gadget-catalog/issues/new).\n\n## :memo: License\n\u003ca href=\"https://opensource.org/licenses/MIT\"\u003eThe MIT License.\u003c/a\u003e Copyright \u0026copy; 2023 [Shibbir Ahmed.](https://shibbir.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshibbir%2Fgadget-catalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshibbir%2Fgadget-catalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshibbir%2Fgadget-catalog/lists"}