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

# Concept

## Concept

There are only two the most important concepts of the framework:

* `Context` - as a dependency container, it is responsible for resolving dependencies
* `Provider` - groups your domain features

### Provider

Provider is a class that defines all features from the domain. This way you can easily activate or deactivate features and group them for easier maintenance.

You can read more about `Provider` under [Packages > Framework > Providers](https://gitlab.com/pckg/docs/-/blob/main/Packages/framework/providers/README.md).

### Request timeline

Whole website or application is executed in few simple steps.

* Create context
* Create environment
  * Error reporting
  * Exception handling
  * Path definition - see `path()`
  * Load root config - see `config()`
* Create, init and run app
  * Parse app config
  * Set localization
  * Init database connections and routing
  * Register main provider
  * Init session, response, request and assets
  * Run request - **this is only thing you need to take care of :)**
  * Return response

### Context

A global context holds singletones and registers resolvers which automatically resolves an instance of the requested class or interface.

You can read more about `Context` under [Packages > Concept](https://gitlab.com/pckg/docs/-/blob/main/Packages/concept/README.md).

## Read more

Now that you're familiar with core concepts, directory structure and request timeline, proceed with the [Quick start](/documentation/start.md) section where you will learn about how to register and implement your domain features.
