# Customizing Umbraco

Looking to create a website with custom styling and tools? As a backend developer, you can follow our instructions to create a fully customizable website. You will learn things like how to set up your environments and how to implement your custom templates. You will find all the tools that you're going to need to install Umbraco and start developing immediately.

There are tutorials on how to inject dependencies, information about how the Umbraco pipeline works, and how you can customize it to fit your needs.

## Using MVC with Umbraco

You can implement your own MVC controllers to work alongside Umbraco.

* [Working with generated Models](https://docs.umbraco.com/umbraco-cms/reference/templating/modelsbuilder)
* [Concerns when working with Views](https://docs.umbraco.com/umbraco-cms/reference/templating/mvc)
* [Different types of Controllers](https://docs.umbraco.com/umbraco-cms/implementation/controllers)

## Umbraco-specific MVC concepts

There are two concepts that are Umbraco-specific, which might prove useful to learn about:

* [Surface Controllers](https://docs.umbraco.com/umbraco-cms/reference/routing/surface-controllers)
* [Default routing](https://docs.umbraco.com/umbraco-cms/implementation/default-routing/controller-selection)

## Dependency Injection and Umbraco's Composition

Umbraco is composed of components. Programmatically, you can add your own components and customize Umbraco at application startup.

Learn more about composing and components in the [Composing](https://docs.umbraco.com/umbraco-cms/implementation/composing) article.

## Debugging

When you're developing with Umbraco, you might sometimes run into some errors and issues. Here are some guides to help you with the debugging:

* [General debugging](https://docs.umbraco.com/umbraco-cms/fundamentals/code/debugging)
* [Debugging with SourceLink](https://docs.umbraco.com/umbraco-cms/reference/debugging)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.umbraco.com/getting-started/developing-websites-with-umbraco/customizing-umbraco-sites.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
