Giter Club home page Giter Club logo

gluestick's Introduction

GlueStick - Beyond the Boilerplate

npm Build Status

GlueStick is a command line interface for quickly developing universal web applications using React and Redux.

Why is your project or boilerplate not enough?

  1. You need integrated updates. Without integrated updates, you are forced to manually merge in new features/fixes.
  2. Isomorphic rendering. Server-side and client-side rendering are identical. No more worries about SEO, loading spinners, or users with javascript disabled
  3. Integrated dockerization. Go from development to production as simply as gluestick dockerize MyApp
  4. Automatic babel and webpack loader support. Use the latest JavaScript features
  5. Automatic test framework setup. Preloaded with Jest and Enzyme right out of the box
  6. Built in best practices. Things like code splitting, hot module replacement, react-router, etc
  7. Rails-like generators for common needs like components/reducers/containers/etc, with all necessary hooks and tests

Why GlueStick?

GlueStick allows users to quickly create new applications with its bootstrap generator, along with generators for components, containers, and reducers. In addition, GlueStick contains a fully functional test environment, server-side rendering, and an asset bundler. However, GlueStick sidesteps the hassle of any configuration files.

The goal is not to be another boilerplate for building universal web applications. Instead, the goal is to abstract all of the boilerplate code into one location that the developer doesn't have to worry about. Not only does this make your application code cleaner but it makes it easier to update the boilerplate code as new improvements are discovered.

Gluestick is actively worked on, supported and used in production by TrueCar.

What about Create React App?

Create React App is an excellent command line interface for creating React applications. Gluestick is a much more opinionated tool, which offers several features out-of-the-box (pre-configured) that Create React App does not (and in some cases would require ejection from Create React App), such as:

  • Code splitting
  • Server rendering
  • React Router and Redux implementation
  • Generators for standard development needs

Requirements

Node 6.3.0+

Quick Start

npm install gluestick-cli -g
gluestick new SampleProject
cd SampleProject
gluestick start

Docs & Help

Guides

Terms & Definitions

  • Gluestick is a monorepo. It is published to npm with Lerna and contains depdent modules or "packages" for building Gluestick apps. The Gluestick repo uses Lerna 1,2 to help break what would otherwise be a potentially large code base in to smaller, versioned packages.
  • gluestick-cli - A package in the Gluestick monorepo that acts as a thin wrapper for managing Gluestick apps from the command-line. With it you can create an app, destroy it, auto upgrade all of its dependent packages, etc... It has a few commands of its own, but several are proxied to your local Gluestick package.
  • gluestick - A package in the Gluestick monorepo that provides additional command line functionality for building for universal-React apps as well as the internals (guts) for driving the Gluestickm Universal React apps themselves.
  • Lerna - "A tool for managing JavaScript projects with multiple packages", or put another way: "Lerna is a tool that optimizes the workflow around managing multi-package repositories with git and npm." Packages are independent codebases that can be versioned and published to npm.

F.A.Q.s

Q: The main project is called "Gluestick", but the binary is called "gluestick-cli", but there's a package in the main project called "gluestick". What's up with that?

A: Gluestick is a monorepo. gluestick-cli is a sub-package in that repo that is deployed to npm and is used to manage Gluestick apps. gluestick (little 'g') is also a sub-package and contains the guts of Gluestick applications.

Contributing

For contributing instructions please see contributon guide.

gluestick's People

Contributors

andrewdushane avatar andrewwatts avatar bearmountain avatar chefnobody avatar christinebrass avatar cjeich avatar dratwas avatar eitheror avatar ferrannp avatar grabbou avatar greenkeeperio-bot avatar hhtran avatar jacobmoretti avatar jcortopassitruecar avatar jer-k avatar joecortopassi avatar lukewalczak avatar mattdeboard avatar michalchudziak avatar mishkinf avatar noahmatisoff avatar saltycrane avatar sawan avatar sethbattin avatar straley avatar supergibbs avatar threehams avatar toddw avatar wesolyryjek avatar zamotany 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.