All Projects → xavierlefevre → shared-react-components-example

xavierlefevre / shared-react-components-example

Licence: MIT license
An example of a mono-repository of shared React components libraries!

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
Smarty
1635 projects
shell
77523 projects
HTML
75241 projects

Projects that are alternatives of or similar to shared-react-components-example

fyndiq-ui
Library of reusable web frontend components for Fyndiq
Stars: ✭ 39 (-54.12%)
Mutual labels:  design-systems, react-components, lerna, storybook
moon-design
Moon Design System for React
Stars: ✭ 209 (+145.88%)
Mutual labels:  design-systems, react-components, monorepo, design-system
Vitamin Web
Decathlon Design System libraries for web applications
Stars: ✭ 70 (-17.65%)
Mutual labels:  libraries, lerna, monorepo, design-system
react-ecommerce
E-commerce monorepo application using NextJs, React, React-native, Design-System and Graphql with Typescript
Stars: ✭ 136 (+60%)
Mutual labels:  lerna, monorepo, storybook, design-system
Bolt
The Bolt Design System provides robust Twig and Web Component-powered UI components, reusable visual styles, and powerful tooling to help developers, designers, and content authors build, maintain, and scale best of class digital experiences.
Stars: ✭ 186 (+118.82%)
Mutual labels:  lerna, monorepo, design-system
Awesome Design Systems
A curated list of bookmarks, resources and articles about design systems focused on developers.
Stars: ✭ 222 (+161.18%)
Mutual labels:  design-systems, storybook, design-system
orfium-ictinus
This repo will include the building blocks to create the Orfium Parthenons to come ...
Stars: ✭ 20 (-76.47%)
Mutual labels:  react-components, storybook, design-system
lerna-starter
Simple React UI Development environment boilerplate to develop, test and publish your React components.
Stars: ✭ 55 (-35.29%)
Mutual labels:  react-components, lerna, storybook
Stardust
🎨Tiller Design System
Stars: ✭ 19 (-77.65%)
Mutual labels:  react-components, storybook, design-system
neptune-web
Wise Web Design System
Stars: ✭ 55 (-35.29%)
Mutual labels:  react-components, monorepo, design-system
Matchbox
🔥 A react UI component library
Stars: ✭ 58 (-31.76%)
Mutual labels:  react-components, storybook, design-system
storybook-addon-blabbr
Component reviewer for React Storybook
Stars: ✭ 13 (-84.71%)
Mutual labels:  design-systems, storybook, atomic-design
elements
Lovingly crafted ui components based on web components. Works well with all Frameworks - including Angular, React and Vue.
Stars: ✭ 42 (-50.59%)
Mutual labels:  lerna, storybook, design-system
Lerna Yarn Workspaces Monorepo
🐉 A Monorepo with multiple packages and a shared build, test, and release process.
Stars: ✭ 201 (+136.47%)
Mutual labels:  lerna, monorepo, storybook
mod-uk-design-system
Build web applications that meet the Defence Digital service standards
Stars: ✭ 78 (-8.24%)
Mutual labels:  monorepo, storybook, design-system
smores-react
🍭 Marshmallow React components
Stars: ✭ 34 (-60%)
Mutual labels:  react-components, storybook, design-system
pebble
Pebble Design System
Stars: ✭ 14 (-83.53%)
Mutual labels:  design-systems, storybook, design-system
React
Modern and minimalist React UI library.
Stars: ✭ 2,546 (+2895.29%)
Mutual labels:  design-systems, react-components, design-system
Storybook
📓 The UI component explorer. Develop, document, & test React, Vue, Angular, Web Components, Ember, Svelte & more!
Stars: ✭ 67,445 (+79247.06%)
Mutual labels:  design-systems, storybook
Material Ui
MUI (formerly Material-UI) is the React UI library you always wanted. Follow your own design system, or start with Material Design.
Stars: ✭ 73,739 (+86651.76%)
Mutual labels:  design-systems, react-components

Shared Components: Project example of shared React components

⚠️ This repository is a pure example, not a boilerplate (as we did not update its dependencies in a while)

🔍 Here you'll discover:


Key learnings!

0. ⁉️ Should you develop such a project?

From our experience, we proved in which condition it is valuable to share components between apps: find out more with this article.

1. 🧐 Use a mono-repository

Split your responsibilities and domains in different packages, but have them all in one place for a smoother developer experience. We use Lerna for managing our mono-repo.

2. ⚛️ Follow "Atomic Design" principles

An atom is a very small dumb and highly reusable component, while an organism is a full grown one-page business connected feature. It all comes from Brad Frost Atomic Design principles. You can find diagrams of the project architecture here.

3. 🎪 Display it all in one unique showroom: Storybook

We use Storybook to develop and showcase our components! One central and unbiased place, forcing any contributor to always think reusability. To try it, install the project and run yarn start.

4. 🔨 Simplify your packages versioning and beware of breaking changes

Use automatic versionning (commitizen), changelogs and type systems (Flow or TypeScript) to prevent messy bugs because of unanticipated breaking changes.

5. 🏭 Create new components/libraries with a "generator"

Make sure that any new component follow the same design choices by using a "generator" like Yeoman.

6. 💄 Define your customisation strategy

We used Styled Components themes and an additionnal service of ours to define how our components can be customised. Find here more details.

7. 🌬 Make your packages light

By building your packages as ES6 modules, your users will just bundle what they need. You can find out how we did here

8. 👮‍ Control what components and features enter the repo

Developing on "Shared components" is heavier than on a normal project, hence taking the decision to create a new component should be well thought. We recommend to plan at least 3 reuses of the component to make it worthwile. Here is our decision tree to help us make that decision.

9. 🛣 Define a strict feature branch Git flow

For us, all feature branches start from Master. PRs are first merged on Develop. Then on Master. Regularly, we automatically merge Master in Develop to keep them aligned.

10. ♻️ Regularly update your dependencies

More than any other project, "Shared components" has to be aligned with the latest standards, as new projects might launch and need to be compatible with it.

11. 👩‍💻👨‍💻 Dedicate a core team

Just as an open source project, have a dedicated tech and business team focused on making "Shared components" a success. Without a core team, you won't have the focus and ownership necessary to handle such a project, hence the complexity and debt will accumulate and your developers will end up losing more time than winning, in the long run. We will be more specific in a dedicated article later on.

12. 🔗 Ease the Yarn Link pain

If you want to locally test your component on your host project, you'll have to use "Yarn Link", we learned how to deal with it.

Locally start the project

If you want to try the project out and at first launch the local Storybook: follow the installation steps here!

The stack

stack flow stack list

Roadmap

  • Finish the MVP: main readme + global article + basic Storybook running locally
  • Share online to see if it interests people
  • Have an up and running project with working CI and hosted Storybook
  • Deep dive on key learnings with further articles and project improvement
  • Update of the repository basis to make it a boilerplate

Contributors


Aurélien Le Masson


Michel Parreno


Hugo Lime


Justine Mignot


Surya Ambrose


Ivan Poiraudeau


Xavier Lefèvre


Albéric Trancart


Darya Talanina

Powered by


Theodo

License

Shared Components is MIT licensed.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].