{"id":23011739,"url":"https://github.com/justinkunz/react-redux-ecommerce","last_synced_at":"2025-08-14T06:32:11.517Z","repository":{"id":117756590,"uuid":"224058638","full_name":"justinkunz/react-redux-ecommerce","owner":"justinkunz","description":"A customizable templated React Redux ecommerce site","archived":false,"fork":false,"pushed_at":"2020-02-04T05:35:06.000Z","size":1840,"stargazers_count":12,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-12T14:11:18.019Z","etag":null,"topics":["ecommerce","ecommerce-application","ecommerce-platform","ecommerce-store","ecommerce-website","mern","react","react-redux","reactjs","redux"],"latest_commit_sha":null,"homepage":"https://redux.store","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/justinkunz.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":"2019-11-25T23:08:53.000Z","updated_at":"2022-11-08T21:27:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"269dd923-ae02-44cd-b781-3bb00f89a135","html_url":"https://github.com/justinkunz/react-redux-ecommerce","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/justinkunz/react-redux-ecommerce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkunz%2Freact-redux-ecommerce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkunz%2Freact-redux-ecommerce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkunz%2Freact-redux-ecommerce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkunz%2Freact-redux-ecommerce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justinkunz","download_url":"https://codeload.github.com/justinkunz/react-redux-ecommerce/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justinkunz%2Freact-redux-ecommerce/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270377433,"owners_count":24573409,"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","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ecommerce","ecommerce-application","ecommerce-platform","ecommerce-store","ecommerce-website","mern","react","react-redux","reactjs","redux"],"created_at":"2024-12-15T10:11:03.561Z","updated_at":"2025-08-14T06:32:11.484Z","avatar_url":"https://github.com/justinkunz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# React Redux Store\n\nA customizable, templated, React/Redux ecommerce site. **Stand up a working ecommerce site from scratch in under an hour.**\n\nEasily manage orders using the [React Redux Order Manager](https://github.com/justinkunz/react-redux-ecommerce-order-manager).\n\nCheck out a test demo at https://redux.store _(Cool domain right?)_\n_Note: The App on this demo is in test mode, so no real transactions will be charged or processed. To view the flow of the app, use the card number `4242 4242 4242 4242` with any future expiration date and a valid zip code on checkout._\n\n![Store example](./screenshots/storeExample.png)\n\n## How to Use\n\n### Set Up\n\n1. Register for the Stripe API [here](https://dashboard.stripe.com/register). Take note of your public and secret keys for both the test and live environments, you'll need them later.\n2. Register for the Easyship API [here](https://app.easyship.com/signup)\n3. _OPTIONAL_: Set up your custom domain with Google [here](https://gsuite.google.com/solutions/new-business/) _(this will enable sending emails from `whatever@yourdomain.com`)_.\n4. Enable `Less Secure Apps` on the Gmail account you will be using _(this is needed to run Nodemailer with Gmail)_\n5. Add the following environment variables:\n\n```\nSTRIPE_TEST_PK= \u003cYOUR STRIPE TEST PUBLIC KEY\u003e\nSTRIPE_TEST_SK= \u003cYOUR STRIPE TEST SECRET KEY\u003e\n\nSTRIPE_LIVE_PK= \u003cYOUR STRIPE LIVE PUBLIC KEY\u003e\nSTRIPE_LIVE_SK= \u003cYOUR STRIPE LIVE SECRET KEY\u003e\n\nSTRIPE_MODE= \u003ctest|live\u003e\n\nEASYSHIP_TOKEN= \u003cYOUR EASYSHIP API ACCESS TOKEN\u003e\n\nEMAIL_USER= \u003cYOUR GMAIL EMAIL ACCOUNT\u003e\nEMAIL_PW= \u003cYOUR GMAIL EMAIL PASSWORD\u003e\n\nADMIN_KEY= \u003cKEY TO AUTHENTICATE ADMIN FOR PROTECTED API CALLS\u003e\n```\n\n_NOTE: The `ADMIN_KEY` variable can be whatever you'd like, although a long alpha numeric key is recommended._\n\n6. Customize the `config.json` file at the root of the repository to your liking.\n7. Grab a beer and make some money 🍻💵\n\n### Handling Inventory\n\n#### Adding Inventory\n\nTo add inventory to your store, make a post request to the `/api/inventory` api endpoint. View an example of the request body below:\n\n**This is an admin restricted route, so you must pass in the admin key you created as the `Authorization` header.**\n\n```\n{\n    \"name\": \"Super Rad React Shirt\",\n    \"desc\": \"A cool, super rad React shirt with an ulta cool description.\",\n    \"image\": \"https://reactjs.org/static/react-50k-tshirt-dd4bfca3eacb85dc3c81fe91fb2e1c10-a6b71.jpg\",\n    \"price\": \"1995\"\n}\n\n```\n\n_NOTE: Price is listed in units of $0.01, so 1995 = $19.95_\n\n#### Updating Inventory\n\nTo update inventory, make a put request to `/api/inventory/:itemId` api endpoint. View an example of the request body below:\n\n**This is an admin restricted route, so you must pass in the admin key you created as the `Authorization` header.**\n\n```\n{\n    \"price\": \"2599\"\n}\n\n```\n\n#### Viewing Inventory\n\nTo view inventory, make a get request to `/api/inventory/`. View an example response below:\n\n```\n[\n    {\n        \"_id\": \"5ddc2a2fa9fca700445aabc1\",\n        \"name\": \"Super Rad React Shirt\",\n        \"desc\": \"A cool, super rad React shirt with an ulta cool description.\",\n        \"image\": \"https://reactjs.org/static/react-50k-tshirt-dd4bfca3eacb85dc3c81fe91fb2e1c10-a6b71.jpg\",\n        \"price\": \"1995\",\n        \"__v\": 0\n    },\n    {\n        \"_id\": \"5ddc2a3ca9fca700445aabc2\",\n        \"name\": \"Even Cooler React Shirt\",\n        \"desc\": \"This is essentially the same shirt but even cooler with an even better description.\",\n        \"image\": \"https://reactjs.org/static/react-50k-tshirt-dd4bfca3eacb85dc3c81fe91fb2e1c10-a6b71.jpg\",\n        \"price\": \"2295\",\n        \"__v\": 0\n    }\n]\n```\n\n#### Emptying Inventory\n\nTo update inventory, make a delete request to `/api/inventory/` api endpoint.\n\n**This is an admin restricted route, so you must pass in the admin key you created as the `Authorization` header.**\n\n### Handling Orders\n\n#### Get All Orders\n\nTo view all orders, make a get request to `/api/orders/status`. View an example response below:\n\n**This is an admin restricted route, so you must pass in the admin key you created as the `Authorization` header.**\n\n```\n[\n    {\n        \"cart\": [\n            {\n                \"_id\": \"5ddc2a2fa9fca700445aabc1\",\n                \"price\": \"1995\",\n                \"name\": \"Super Rad React Shirt\",\n                \"qty\": 1\n            }\n        ],\n        \"_id\": \"5ddc31fbf2e230004436ed95\",\n        \"confirmation\": \"SZFO4Y\",\n        \"orderStatus\": \"SHIPPED\",\n        \"time\": \"2019-11-25T19:56:42.293Z\",\n        \"customer\": {\n            \"email\": \"user@example.com\",\n            \"firstName\": \"Justin\",\n            \"lastName\": \"Kunz\"\n        },\n        \"total\": {\n            \"subtotal\": 400,\n            \"tax\": 28,\n            \"shippingCost\": 318,\n            \"total\": 746\n        },\n        \"address\": {\n            \"addressLine1\": \"123 Main Street\",\n            \"addressLine2\": \"\",\n            \"city\": \"Allen\",\n            \"state\": \"TX\",\n            \"zip\": \"75013\"\n        },\n        \"shipping\": {\n            \"timeframe\": {\n                \"days\": {\n                    \"min_delivery_time\": 3,\n                    \"max_delivery_time\": 5\n                },\n                \"dates\": {\n                    \"min\": \"12/02/2019\",\n                    \"max\": \"12/04/2019\"\n                }\n            },\n            \"total\": 318,\n            \"courier\": \"USPS - First Class\",\n            \"courier_id\": \"dfa5ba0d-4f91-4f6d-9622-8f1a22b23855\"\n        },\n        \"payment\": {\n            \"stripeToken\": \"tok_xxxxxxxxxxxxxxx\",\n            \"last4\": \"4242\",\n            \"cardIssuer\": \"Visa\",\n            \"cardCountry\": \"US\",\n            \"cardZip\": \"42424\",\n            \"outcome\": {\n                \"network_status\": \"approved_by_network\",\n                \"reason\": null,\n                \"risk_level\": \"normal\",\n                \"risk_score\": 60,\n                \"seller_message\": \"Payment complete.\",\n                \"type\": \"authorized\",\n                \"id\": \"ch_1FinfqG1Y9MP6uT15mIqT0qd\"\n            }\n        },\n        \"__v\": 0\n    }\n]\n```\n\n### Update Order Status\n\nTo update an orders status, make a post request to `/api/orders/status/:orderId`. View an example of the request body below:\n\n**This is an admin restricted route, so you must pass in the admin key you created as the `Authorization` header.**\n\n```\n{\n    \"status\": \"SHIPPED\"\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinkunz%2Freact-redux-ecommerce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustinkunz%2Freact-redux-ecommerce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustinkunz%2Freact-redux-ecommerce/lists"}