> For the complete documentation index, see [llms.txt](https://bayside.gitbook.io/mv-components/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bayside.gitbook.io/mv-components/overview.md).

# Overview

<figure><img src="https://899495277-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYIMrbgzCs5XpTxb8cRwV%2Fuploads%2FaqvcpF0bOKfXanWjKOuJ%2Fbrand.svg?alt=media&amp;token=3b124aa6-5cb3-497d-a84a-5155ec6e5b19" alt="MV-Components Logo"><figcaption></figcaption></figure>

A MV-Component is a powerful way to write reusable components for your Masonite applications. It provides code reusability and also testability in ways native views just does not allow. A MV-Component is typically comprised of a view file and a python class file.&#x20;

### Why use MV-Components

#### Reusability

The same MV-Component can be used in various parts of an application without needing to rewrite the same code.&#x20;

#### Single Responsibility

Allows complex logic to be stored along with the component that it belongs to instead of scattered across your codebase.

#### Readability

Makes it easier to reason about the behavior in your templates.&#x20;

### Inspirations

This project is inspired by several projects&#x20;

* ViewComponent (Ruby on Rails)
* Blade Components (Laravel)
