Sharyn is a library of packages that make your life easier and reduce your boilerplate code. Its Development packages are useful for any project, and the Web ones provide a wide range of tools and helpers for your web app projects.
The default kick-ass tech stack that Sharyn supports is: Babel 7, ESLint 5, Flow, Prettier, Jest, React with server-side rendering, Redux, Webpack with HMR, Material UI, Koa, GraphQL with Apollo, Knex, PostgreSQL, Redis, E2E tests with Puppeteer, Docker, and Heroku. These bricks are all optional and replaceable.
Sharyn will work wonders for projects that follow the upcoming major update of my JS Stack from Scratch tutorial.
- @sharyn/babel-preset β Configures all the detected and supported Babel modules
- @sharyn/eslint-config β Configures all the detected and supported ESLint modules
- @sharyn/prettier-config β Prettier configuration
- @sharyn/jest-config β Jest configuration
- @sharyn/util β Lodash-like utils
- @sharyn/env β Environment utils
- @sharyn/cli β Convenient NPM scripts
- @sharyn/webpack-config β Webpack configuration
- @sharyn/client β Client-side helpers
- @sharyn/shared β Helpers that can be used by both the client and the server
- @sharyn/server β Server-side helpers
- @sharyn/koa β A preconfigured Koa server
- @sharyn/db β Knex configuration and database utils
- @sharyn/redis β Redis setup
- @sharyn/testing β Testing helpers
- @sharyn/components β UI components using Material UI
- @sharyn/hocs β React High-Order Components
To get started, follow the setup tutorial or download the sharyn-boilerplate project.
I recommend the tutorial the first time you use Sharyn, and the boilerplate once you're familiar with the stack.
Every module is tagged with a structuring factor, which represents how easily it can be integrated into an existing codebase. In general, the more structuring and opinionated the modules are, the more they will reduce your boilerplate code, at the cost of flexibility.
π² Not structuring β You can use this module in any codebase, it is a very simple unit.
π Moderately structuring β This module has some degree of flexibility, but it serves a more specific purpose than non-structuring ones, so if your need is slightly different, it might be difficult to use it.
π’ Very structuring β This module is not flexible. It does what it does well, but you have to comply to its purpose or you won't be able to take advantage of it. These are kind of imposing a framework, which is demonstrated by sharyn-boilerplate. If these work for your case, that's a big win!
By Jonathan Verrecchia β @verekia
Rose design by tiaesther
It's a reference to one of my favorite metalcore songs, Rose of Sharyn by Killswitch Engage.
MIT