# 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 new components the thinking needs to 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 "plugins" using JS.
# Learn from the Community
We are highly encourage our users to customize their charts and share new methods, innovative techniques and advance use cases with the community.