/goomi

A react boilerplate with redux, saga based on a feature-oriented structure

Primary LanguageJavaScriptMIT LicenseMIT

Start a React project without configuration with Redux, Redux-Saga, styled-components, intl, server side rendering

Made by Nathan Loisel & Jeremy Barthoux, supported by Apptitude

Features

Installation

npm install -g goomi

Usage

Initialize your project

goomi init myApplicationName

It will create a directory called myApplicationName.
Inside that directory, it will generate the initial project structure and install the transitive dependencies:

myApplicationName
├── README.md
├── node_modules 
├── package.json
├── package-lock.json
├── .gitignore
├── webpack
└── src
    └── client
    └── server
    └── universal
      └── asset    <-- all static assets (images, fonts, themes)
      └── features <-- contains all components, containers, reducer and sagas organized by features (generated with CLI)
      └── redux
      └── appConfig.js

When the installation is over, run npm start to start the application in dev mode and npm run dev-ssr if you want to test server-side rendering.

Generators

A couple of generators are embedded inside goomi based on plop.

  • List all generators

  • Generate a Feature folder

goomi generate feature
  • Generate a new route
goomi generate route
  • Generate a HOC
goomi generate hoc
  • Generate a Component
goomi generate component
  • Generate a Container
goomi generate container
  • Add a new language
goomi generate language
  • Extract translation files from each components to one file
goomi extract-intl

TODO

  • React Native support
  • Electron support
  • import generators locally to edit them
  • document and harmonize the --all command parameter
  • precommit linting (can be specified at the project init)
  • add offline available option workshopjs
  • add parametrization (with ssr, with redux, ...)

Support

Please open an issue for support.

Contributing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.