Giter VIP home page Giter VIP logo

nugget's Introduction

cra-boilerplate

This project is an Create React App - v1.1.4 boilerplate with integration of Redux, React Router, Redux observable & Reactstrap(Bootstrap v4) and Scss for quick start enterprise level applications.

Build Status Dependency Status

Before starting with project, please headover to CRA documentation.

Supported Integrations

Features

Getting Started

  1. Clone this repo

https://github.com/mohandere/cra-boilerplate.git

  1. To run, go to project folder and run

$ npm install or $ yarn install (if you are using yarn)

  1. Now start dev server by running -

$ npm run start or $ yarn start

  1. visit - http://localhost:3000/

To create production ready codes -

$ npm run build

  1. Analyze source code / bundle size

$ npm run analyze

for more commands refer package.json

Roadmap

Before starting development please go through -

Code structure

Refer src/home/ module for an ideal directory structure

Project uses Domain-style for code structure-

Domain-style : separate folders per feature or domain, possibly with sub-folders per file type

For more details refer /src/home folder.

Reference -

Common components

Place all common components such as Header/Footer in src/common/components folder.

Adding new Module/Feature

  • Create a Module/Feature folder at src/ like - - src/home Feature folder must contain booststrap file named index.js and css file 'style.css' at root

Like -

  • src/home/index.js
  • src/home/style.css

Next as per need, add sub folders like -

  • src/home/actions/
  • src/home/reducers/
  • src/home/epics/
  • src/home/containers/
  • src/home/components/

Actions

  • Create folder named actions inside Feature folder like - src/home/actions
  • Place actionTypes.js which contains all actions to be exported

Reducers

  • Create folder named reducers inside Feature folder like - src/home/reducers
  • Place index.js which combines all reducers using combineReducers

Epics

  • Create folder named epics inside feature/domain folder like - src/home/epics
  • Place index.js which combines all epics using combineEpics

Ajax Handling

This boierplate comes with rxjs to handle ajax. Additionally as per need we can use other libs like axios.

Using Rxjs DOM api for ajax see file - rxjs/observable/dom/ajax AjaxObservable

Styling

we are using scss Preprocessor. Create a feature/domain specfic scss file, example - src/home/style.scss

After compilation the new corresponding CSS file next to it. example - src/home/style.css

Finally you can import that css file in index.js file example - src/home/index.js will import src/home/style.css

Analyzing the Bundle Size

We can Analyze and debug JavaScript (or Sass or LESS) code bloat through source maps and source-map-explorer great tool for this.

The source map explorer determines which file each byte in your minified code came from. It shows you a treemap visualization to help you debug where all the code is coming from.

To analyzing bundle, run command -

$ npm run analyze / $ yarn analyze

Code splitting

Create React App(CRA) by default bundle out entire app into single main.*.js file with Webpack. As our app grows, bundle grows. So instead of downloading the entire app(This hurts the initial load time of our app.) before users can use it, We can split code into small chunks which we can then load on demand and Code splitting is really helpful for larger React apps.

Check out this. example for how to implementation Code splitting and how it helps to load application faster.

This boilerplate using react-loadable for code splitting.

Open src/App.js and edit this line to -

import routes from './routes';

To

import routes from './asyncRoutes';

Deployment

Refer deployment section from CRA doc.

Something Missing?

File an issue here.

License

MIT

nugget's People

Contributors

s4birli avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.