# Design Principles
The framework development has several design principles act as philosophical guidelines.
# Decoupled Components
The chart should be broken down into as many building blocks as possible. Each components should either have its own HTML (legend & titles) structure or its own CSS classes (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 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 RTL, LTR and BTT 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 selector. 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 are highly encourage our users to customize their charts and share with the community new methods, innovative techniques and advance use cases.