# Villanova Local Hub
The Villanova Local Hub is a repository for modular components directly accessible from an Villanova App Builder. Villanova Bundles catalogued in the Local Hub can be deployed, installed, and updated with a few clicks of a button, to be employed in any application.
Details of the Local Hub are examined below.
# Villanova Component
Villanova defines a component as an identifiable resource, a block of code or a grouping of related code blocks that can be used independently in an Villanova Application. Examples of components are widgets, plugins, micro frontends, microservices, packaged business capabilitities, content types, labels, plugins, and static resources.
# Villanova Bundle
An Villanova Bundle is a package containing one or more components, the required descriptor files, and bundle metadata.
A git-based bundle requires a descriptor.yaml and is published in a Git registry. A docker-based bundle requires an Villanova.json and is published to Docker. Both docker-based and git-based bundles can be utilized in an Villanova Application with the VillanovaDeBundle custom resource, but docker-based bundles are recommended.
# VillanovaDeBundle Custom Resource
The VillanovaDeBundle custom resource is a Kubernetes resource read by the Villanova Operator. It provides information about the bundle and makes it available to the Villanova Component Manager in Kubernetes, making it accessible from the App Builder.
# Villanova Component Manager
The Villanova Component Manager is responsible for the installation and removal of components from the Villanova-core. It creates the connection between the VillanovaApp
and the Kubernetes integration service, interacting with both the Villanova-core and the Kubernetes cluster and managing the communication between an application and the installed microservices.
# Villanova Kubernetes Integration Service
The Villanova Kubernetes integration service, or Villanova-k8S-service, is part of the Platform infrastructure and responsible for the low-level communication with the K8s cluster API. It reads the bundles in an Villanova Cluster and serves them with an API accessible from the App Builder.
# Architecture

The following flow describes how the App Builder, Villanova Kubernetes integration service and Component Manager interact to populate the Local Hub with bundles.
# Example Flow
The user navigates to the Hub page in the App Builder to view the bundles shared with the VillanovaApp
The App Builder requests a list of bundles available to the VillanovaApp from the Villanova Component Manager
The Component Manager queries the
Villanova-k8S-serviceto retrieve the list of bundlesThe
Villanova-k8s-servicequeries the cluster/namespace(s) and returns the list of available bundles to the Component ManagerThe Villanova Component Manager sends the list to the App Builder
The available bundles appear in the Hub page of the App Builder, where they can be installed and managed by the user