Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Outline #20

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .storybook/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

const path = require('path');

// LOOK IM RECORDING MYSELF CODE
module.exports = {
"stories": [
"../src/**/*.stories.mdx",
Expand Down
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,63 @@

# design-system
A collection of reusable components, guided by clear standards, that can be assembled to build an application.

Storybook is a UI component development environment that allows developers to build and showcase components in an isolated manner. If you'd like to create a clone of Storybook, you'll need to understand its core functionality and then develop your version of it.

Here's a broad outline of how you might create your own Storybook-like tool:

1. Define the Purpose
First, understand what you're aiming for:

Do you want a 1:1 clone or just a simplified version?
Which features are essential, and which can you omit?
What's the unique selling proposition of your version?
2. Plan the Architecture
Determine how you will handle:

Component rendering: Should it work for React, Vue, Angular, or other frameworks?
Plugins or extensions: Storybook is known for its extensibility. Will your tool support plugins?
UI/UX: Decide on the layout, theming, and interaction design.
3. Start with the Basics
Component Rendering: Create an environment where components can be rendered in isolation.

Load components dynamically.
Provide an interface to define and control props.
Navigation: Develop a sidebar or navigation mechanism to switch between components or "stories."

Viewport: Allow users to view components in different device sizes or frame contexts.

4. Add Advanced Features
Documentation: Offer a way to add notes or documentation alongside components.

Interactivity: Implement a system for users to interact with props dynamically.

Addons/Plugins: If you want extensibility, design a system where developers can add plugins or extensions to enhance functionality.

Theme-ability: Allow users to adjust the look and feel or provide predefined themes.

5. Build for Multiple Frameworks
If you're targeting multiple UI libraries (like React, Vue, and Angular), you'll need to handle:

Framework-specific configurations.
Component loading mechanisms.
Documentation standards for each library.
6. Implement a CLI
Storybook comes with a command-line interface that helps in setting up and launching the environment. Consider building a CLI tool for your project to make it more user-friendly.

7. Testing
Ensure your tool is robust:

Unit tests for the underlying functionality.
Integration tests for plugins or extensions.
UI tests for the interface.
8. Deployment and Distribution
Package your tool as an NPM module or similar so that developers can easily integrate it into their projects.
Create comprehensive documentation and tutorials to guide users.
9. Feedback and Iteration
Release a beta version to gather feedback from developers. This will help you identify pain points, bugs, or areas for improvement.

10. Stay Updated
Stay abreast of changes in the front-end development landscape to ensure your tool remains relevant.

Remember that building a project like Storybook requires significant time, expertise, and resources. It might be beneficial to gather a team, especially if you aim to cover multiple frameworks and offer advanced features.
2 changes: 1 addition & 1 deletion build/project.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"generatedAt":1661634835350,"builder":{"name":"@storybook/builder-webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":false,"refCount":0,"metaFramework":{"name":"CRA","packageName":"react-scripts","version":"5.0.1"},"packageManager":{"type":"yarn","version":"1.22.19"},"features":{"previewMdx2":true},"storybookVersion":"6.5.10","language":"javascript","storybookPackages":{"@storybook/addon-actions":{"version":"6.5.10"},"@storybook/addon-docs":{"version":"6.5.10"},"@storybook/builder-webpack5":{"version":"6.5.10"},"@storybook/manager-webpack5":{"version":"6.5.10"},"@storybook/mdx2-csf":{"version":"0.0.3"},"@storybook/node-logger":{"version":"6.5.10"},"@storybook/preset-create-react-app":{"version":"4.1.2"},"@storybook/react":{"version":"6.5.10"},"@storybook/testing-library":{"version":"0.0.13"},"storybook-xstate-addon":{"version":"2.3.1"}},"framework":{"name":"react"},"addons":{"@storybook/addon-links":{"version":"6.5.10"},"@storybook/addon-essentials":{"version":"6.5.10"},"@storybook/addon-interactions":{"version":"6.5.10"},"@storybook-create-react-app":{"version":null}}}
{"generatedAt":1661750984446,"builder":{"name":"@storybook/builder-webpack5"},"hasCustomBabel":false,"hasCustomWebpack":true,"hasStaticDirs":false,"hasStorybookEslint":false,"refCount":0,"metaFramework":{"name":"CRA","packageName":"react-scripts","version":"5.0.1"},"packageManager":{"type":"yarn","version":"1.22.19"},"features":{"previewMdx2":true},"storybookVersion":"6.5.10","language":"javascript","storybookPackages":{"@storybook/addon-actions":{"version":"6.5.10"},"@storybook/addon-docs":{"version":"6.5.10"},"@storybook/builder-webpack5":{"version":"6.5.10"},"@storybook/manager-webpack5":{"version":"6.5.10"},"@storybook/mdx2-csf":{"version":"0.0.3"},"@storybook/node-logger":{"version":"6.5.10"},"@storybook/preset-create-react-app":{"version":"4.1.2"},"@storybook/react":{"version":"6.5.10"},"@storybook/testing-library":{"version":"0.0.13"},"storybook-addon-meta":{"version":"1.0.3"},"storybook-xstate-addon":{"version":"2.3.1"}},"framework":{"name":"react"},"addons":{"@storybook/addon-links":{"version":"6.5.10"},"@storybook/addon-essentials":{"version":"6.5.10"},"@storybook/addon-interactions":{"version":"6.5.10"},"@storybook-create-react-app":{"version":null}}}
Loading
Loading