⚠️ Hi :) Don't use the library yet. The documentation is not up-to-date at all.
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/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
- @sharyn/css – Styles
- @sharyn/redux – Redux helpers
🌹 Getting Started
I recommend the tutorial the first time you use Sharyn, and the boilerplate once you're familiar with the stack.
🌹 Structuring Factor
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
🌹 Why Sharyn?
It's a reference to one of my favorite metalcore songs, Rose of Sharyn by Killswitch Engage.