loading...
Cover image for React Redux Starter

React Redux Starter

drminnaar profile image Douglas Minnaar ・4 min read

Summary

Recently, I updated my react-starter project by adding the following notable changes:

  • accommodate multiple build configurations (dev and prod)
  • allow one to specify addons (bundleanalyzer, bundlebuddy) as part of NPM scripts
  • added webpack-dashboard as an optional NPM run script

I was undecided between whether or not to introduce more advanced libraries like Redux and React-Router for example. In the end I decided to create a new starter project called react-redux-starter that serves as more of an advanced starter project for those wanting to work with Redux and React-Router in addition to React. Therefore, in this post I will describe what is available in the react-redux-starter project.

Project Overview

The react-redux-starter project is a basic template that consists of the essential elements that are required to start building a Single Page Application (SPA) using React, React Router, Redux, Bootstrap 4, Sass, and Webpack.

Although I am calling this project a template of sorts, it is also a mini application in that it demonstrates a full vertical slice of the architecture. What this means, is that there is an example of Redux and React-Router in action. I provide a very simple component that fetches a list of zip codes. I kept the example simple by providing data via a 'Zip Code JSON file'. This simple component does however illustrate the use of Redux Actions, a Redux Container, and a Redux Store.

The following diagram illustrates how data is fetched using Redux and a Zip Code Service:

react-redux-starter-zipcodes

Features

The template consists of:

  • a typical project layout structure
  • a Babel setup and configuration
  • a Webpack setup and configuration
  • an ESLint setup and configuration
  • a SCSS setup and configuration
  • a sample React component to display a list of zip codes
  • a Redux setup to handle zip codes state
  • a React Router setup to show basic navigation

Additionally, the template provides a development and production webpack configuration.

The template also allows one to include specific plugins as part of build. Please see here for more detail


Showcase

The following animated gifs illustrate what the application looks like.

Desktop

desktop

Mobile

mobile


Developed With

  • Visual Studio Code - A source code editor developed by Microsoft for Windows, Linux and macOS. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring
  • Node.js - Javascript runtime
  • React - A javascript library for building user interfaces
  • React Router - Declarative routing for React
  • Redux - Redux is a predictable state container for JavaScript apps.
  • Redux-Promise-Middleware - Redux middleware for promises, async functions and conditional optimistic updates
  • Redux-Thunk - Thunk middleware for Redux
  • Babel - A transpiler for javascript
  • Webpack - A module bundler
  • SCSS - A css metalanguage
  • Bootstrap 4 - Bootstrap is an open source toolkit for developing with HTML, CSS, and JS

Getting Started

Find the react-redux-starter project here.

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

The following software is required to be installed on your system:

  • Node 8.x
  • Npm 3.x

Type the following commands in the terminal to verify your node and npm versions

  node -v
  npm -v

Install

Follow the following steps to get development environment running.

  • Clone 'react-redux-starter' repository from GitHub
  git clone https://github.com/drminnaar/react-redux-starter.git

OR USING SSH

  git clone git@github.com:drminnaar/react-redux-starter.git
  • Install node modules
   cd react-redux-starter
   npm install

Build

Build Application

dev prod
npm run build:dev npm run build:prod

Build Application And Watch For Changes

dev prod
npm run build:dev:watch npm run build:prod:watch

Build Application With BundleAnalayzer Plugin Included

dev prod
npm run build:dev:bundleanalyze npm run build:prod:bundleanalyze

After running the above command, a browser window will open displaying an interactive graph resembling the following image:

webpack bundle analyzer

Build Application With BundleBuddy Plugin Included

dev prod
npm run build:dev:bundlebuddy npm run build:prod:bundlebuddy

Run ESlint

Lint Project Using ESLint

  npm run lint

Lint Project Using ESLint, and autofix

  npm run lint:fix

Run

Run Start

This will run the 'serve:dev' npm task

npm start

Run Dev Server

npm run serve:dev

Run Dev Server With Dashboard

npm run serve:dev:dashboard

The above command will display a dashboard view in your console resembling the following image:

webpack-dashboard

Run Prod Server

This command will build application using production settings and start the application using live-server

npm run serve:prod

Conclusion

It's always difficult providing a starting point that's simple but has enough detail to illustrate a few important concepts. I hope this project helps achieve that goal. I will be updating and tweaking over time to try and align the project as an ideal starting point to learning how to build React applications using Redux, Webpack and React Router.

Posted on Feb 26 '18 by:

drminnaar profile

Douglas Minnaar

@drminnaar

Developer, architect and mentor with 15+ years experience building financial and sport betting systems

Discussion

markdown guide