VideoShopper is a complete single-page e-commerce site that uses a single Express server in Node to serve up both the frontend resources and the database data. It includes Sequelize database models that are currently set up to work with a Postgres SQL server running on the default port of localhost:5432. It uses React and Redux (and React-Redux) on the front-end, all the JavaScript for which is bundled using Webpack.
The VideoShopper site includes the following views:
- A home view with a welcome banner and product category cards
- A products view displaying animated products cards that can be sorted by category.
- A product view that offers details and reviews for a specific product.
- An admin panel that displays order information (located at '/admin' , log in as 'god@example.com' with the password '1234' to take a look)
- A cart view that provides the user with a form to place an order
- A cart implemented in window.localStorage that works regardless of sign-in/registration and persists after the window has closed.
git clone https://github.com/ahookom/videoShopper.git
Short and sweet:
npm install
npm run devThe dev script sets NODE_ENV to "development", runs the build script in watch mode, and
starts the server with nodemon. Build vs server logs are separated by a prefix. If you prefer
to run the server and build processes separately, you can instead do:
npm run start-devnpm run build-devIn two separate terminals.
You can also use the vanilla npm start, but it is meant for production.
/app has the React/Redux setup. main.jsx is the entry point.
/db has Sequelize models and database setup. It'll create the database for you if it doesn't exist,
assuming you have postgres already installed and running.
/server has the Express server and routes. start.js is the entry point.
/bin has a few scripts, including a heroku deployment script.
/public is where you'll find various front-end resources
- Set up the Heroku command line tools and install Yarn if you haven't already (
npm install -g yarn) heroku login- Add a git remote for heroku:
-
If you're creating a new app...
heroku createorheroku create your-app-nameif you have a name in mind.heroku addons:create heroku-postgresql:hobby-devto add postgresnpm run deploy-heroku. This will create a new branch and compile and commit your frontend JS to it, then push that branch to Heroku.heroku run npm run seedto seed the database
-
If you already have a Heroku app...
heroku git:remote your-app-nameYou'll need to be a collaborator on the app.
Afterwards,
- To deploy:
npm run deploy-heroku - To re-seed:
heroku run npm run seed