simpler stack is a universal javascript full-stack framework built on the best of the latest web technologies like React, Redux, GraphQL, RethinkDB, Apollo, Express, and Webpack
The goal when creating this universal javascript stack was to greatly decrease the size of the boilerplate on a new project, but also include the best of the newest technologies available. It can be a lot to digest at first, but you'll be amazed at how simple and quick the development process is when using this stack.
special thanks to mattkrick for this comparison table, which is borrowed from his meatier repo
Problem | Meteor's solution | simpler's solution | Motivation |
---|---|---|---|
Database | MongoDB | RethinkDB | pub/sub, nice web GUI, easy clustering |
Database schema | Simple Schema | GraphQL / ApolloServer | ApolloServer allows us to use shorthand schema language |
Client validation | Simple Schema | validator.js | extremely simple client-side validation |
Database hooks | Collections2 | GraphQL | who isn't using GraphQL anymore? |
Forms | AutoForm | redux-form | automatic form validation, nice form state management |
Client-side cache | Minimongo | redux | time travel, redo/undo, unidirectional data-flow |
Socket server | DDP-server | socket.io | socket.io v1.0 is out, so that's cool |
Authentication | Meteor accounts | JWTs | simple and efficient |
Auth-transport | DDP | ApolloClient (via HTTP fetch) | ApolloClient gives some relay-like features without all the bloat |
Front-end | Blaze | React | React is the future of UI development |
Build system | meteor | webpack | Webpack to simplify building all the things |
CSS | magically bundle & serve | aphrodite | inline styles, all the features of sass, works with server rendering |
Optimistic UI | latency compensation | ApolloClient | optimistic ui with automatic rollback |
Testing | Velocity (or nothing at all) | karma / mocha / chai / enzyme | JQuery-like selectors, automatic test re-run on code change, simple assertions |
Linting | Your choice | eslint | the industry standard, live linting with atom plugin 'linter-eslint' |
Routing | FlowRouter | react-router-redux | ssr capable react router, async routes |
Server | Node 0.10.41 | Node 5 | ... |
brew install rethinkdb
rethinkdb
(in second terminal window)git clone
this repocd simpler-stack
npm install
npm run dev
(hot reloaded dev server)
npm run build
npm run start
- https://github.com/erikras/react-redux-universal-hot-example (Huge motivation for the architecture of this stack, this was the original boilerplate forked to create this stack)
- https://github.com/mattkrick/meatier (Another big motivation, but over complex. I also borrowed the table above from this repo)
- https://github.com/kriasoft/react-starter-kit
- https://github.com/GordyD/3ree
- This project is massively outdated and could do with an overhaul, but unfortunately I am too busy with other projects at this time to update it myself. I am willing to review/accept any pull requests!
MIT