# Introduction

BlueBase is a framework built on top of React & React Native. It provides an opinionated application structure to create cross-platform native and web apps using the same code base.&#x20;

Apart from this, BlueBase comes with a lot of features that are essential to all modern apps:

### 🔌 Plug-ins&#x20;

Create modular applications by breaking different features into independent plug-ins. Plug-ins are powerful enough to enhance or modify any part of the application and can be hosted in their own repositories. This also allows code reuse across applications.&#x20;

### **🎁 Components**

Create pluggable components that can be dynamically replaced or modified through third-party plugins, without needing to change the original code. This makes it extremely easy to enhance existing views or screens in the app by writing your own plugin.

### **🚏 Routes**&#x20;

Create cross-platform routes to navigate between screens by using a simple JSON syntax.&#x20;

### **⚙️ Configurations**&#x20;

BlueBase provides API to get or set application-level configurations. This allows developers or even end-users to change app settings.

### **🎨 Themes**

A _theme_ is a collection of styles that's applied to an entire app or component. When you apply a theme, every component in the app applies each of the theme's attributes that it supports. Developers can create their own themes as well as allow end-users to select one to their own liking.&#x20;

### 🎡 Lifecycle events

Your application can use lifecycle hook methods to tap into key events in the lifecycle of an application to initialize new instances, initiate change detection when needed, respond to updates during change detection, and clean up before reboot.

### 💬 Localization&#x20;

Use the localization feature to translate and adapt your app into multiple languages and regions. Create multi-lingual and even right to left apps by using the simple to use API.&#x20;

### **🌚 Dark mode**

The Dark Mode is a first-class citizen in BlueBase and the feature comes out of the box 😎.&#x20;

### 🖼 Asset management&#x20;

Add dynamic Images and assets (i.e fonts, sounds, etc), to your app that may be replaceable through plugins. Moreover use dynamic images that render different versions on mobile, desktop, light, and dark modes.
