# Design Principles
The framework development has several design principles that act as philosophical guidelines.
# Decoupled Components
The chart should be broken down into as many building blocks as possible. Each component should either have its own HTML (legend & titles) structure or its own CSS class (axes, datasets, etc.).
# Building a Framework
The main goal is to develop a framework for the masses, not a niche library used in specific use cases.
# Global Features
When developing components the thinking should be global. New components should work on all chart types, not just on one or two chart types.
# Naming Convention
Class names should be intuitive and self-explanatory to make it easy to implement without even reading the documentation.
# Direction-Free Classes
When naming classes we should consider right-to-left (RTL), left-to-right (LTR) and top-to-bottom (TTB) languages. Class names should not use direction names (top, bottom, right, left, vertical, horizontal etc.). Direction-free names like "start" & "end" are preferred.
# CSS Customization
Relying on CSS, the framework should be easy to customize using CSS selectors. Developers should have the option to target every element and customize it.
The core project should not use JS. If it cannot be done using CSS, it won't be part of the framework. Saying that, end users can add their own "JS Plugins".
# Learn from the Community
We highly encourage our users to customize their charts and share them with the community along with new methods, innovative techniques and advanced use cases.