# Getting to know Aurelia

- [Overview](https://docs.aurelia.io/getting-to-know-aurelia/getting-to-know-aurelia.md): A guided tour of Aurelia fundamentals; start here before diving into the deeper topic guides.
- [Introduction](https://docs.aurelia.io/getting-to-know-aurelia/introduction.md)
- [Built-in template features](https://docs.aurelia.io/getting-to-know-aurelia/introduction/built-in-template-features.md): Use Aurelia's built-in template commands such as if, show, repeat, and switch to control markup dynamically.
- [Class & style binding](https://docs.aurelia.io/getting-to-know-aurelia/introduction/class-and-style-binding.md): Bind CSS classes and inline styles in Aurelia templates using expressive syntax.
- [Attribute transferring](https://docs.aurelia.io/getting-to-know-aurelia/introduction/attribute-transferring.md): Forward bindings from a custom element to its inner template using Aurelia's spread operators.
- [Startup & enhancement](https://docs.aurelia.io/getting-to-know-aurelia/startup-and-enhancement.md)
- [App configuration and startup](https://docs.aurelia.io/getting-to-know-aurelia/startup-and-enhancement/app-configuration-and-startup.md): Configure Aurelia applications, register global resources, and choose the startup pattern that fits your project.
- [Enhance](https://docs.aurelia.io/getting-to-know-aurelia/startup-and-enhancement/enhance.md): Learn how to use Aurelia's enhance feature to add interactivity to existing HTML, integrate with other frameworks, hydrate server-rendered content, and create multiple Aurelia instances in your applic
- [Routing](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router.md): Understand the @aurelia/router package, its core concepts, and how to navigate the rest of the routing documentation.
- [Quick Reference ("How Do I...")](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/router.md)
- [Visual Diagrams](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/diagrams.md)
- [Fundamentals](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals.md)
- [Getting started](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals/getting-started.md)
- [Router configuration](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals/router-configuration.md): Learn about configuring the Router.
- [Defining routes](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals/configuring-routes.md): Learn about configuring routes in Router.
- [Child routing playbook](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals/child-routing.md): Build deeply nested navigation trees with Aurelia's router, including layouts, sibling viewports, and relative navigation.
- [Route parameters](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals/route-parameters.md): Declare, read, and validate route parameters in Aurelia's router, including required, optional, wildcard, and constrained segments.
- [Viewports](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/fundamentals/viewports.md): Learn about viewports in Aurelia router and how to create complex layouts with hierarchical and sibling viewports.
- [Navigation](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/navigation.md)
- [Navigating](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/navigation/navigating.md): Learn to navigate from one view to another using the Aurelia router, including declarative and programmatic navigation patterns.
- [Navigation model](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/navigation/navigation-model.md): Create a navigation menu using navigation model in Router.
- [Current route](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/navigation/current-route.md): Access information about the active route via ICurrentRoute.
- [Lifecycle & Events](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/lifecycle-and-events.md)
- [Routing lifecycle](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/lifecycle-and-events/routing-lifecycle.md): Learn about the different routing hooks and how to leverage those in terms of dis/allow loading or unloading as well as performing setup and teardown of a view.
- [Router hooks](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/lifecycle-and-events/router-hooks.md): How to implement router hooks into your applications to protect routes, control navigation, and implement cross-cutting concerns like authentication and authorization.
- [Router events](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/lifecycle-and-events/router-events.md): Learn about how to subscribe to and handle router events for advanced navigation monitoring and application state management.
- [Advanced](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/advanced.md)
- [Router state management](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/advanced/router-state-management.md): Track current route details and persist per-entry UI state with @aurelia/router.
- [Transition plans](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/advanced/transition-plans.md): Learn how Router handles the re-entrance of the same component and how to override the default behavior.
- [Error handling](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/advanced/error-handling.md): Learn how to handle navigation errors, implement error recovery patterns, and create robust routing experiences.
- [Advanced API reference](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/advanced/advanced-api-reference.md): Low-level and advanced APIs for @aurelia/router (router-lite).
- [Outcome Recipes](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/advanced/outcome-recipes.md): Advanced routing patterns for authentication, data preloading, guards, and complex navigation scenarios using @aurelia/router.
- [Support](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/support.md)
- [Testing guide](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/support/testing-guide.md): Learn how to test routed components, navigation flows, and router events in Aurelia applications.
- [Troubleshooting](https://docs.aurelia.io/getting-to-know-aurelia/aurelia-router/support/troubleshooting.md): Common router issues, debugging techniques, and solutions for troubleshooting Aurelia router problems.
- [Composition patterns](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns.md)
- [Components](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns/components.md): Understand Aurelia components, custom elements, bindables, and how they relate to view composition.
- [Creating components](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns/components/consuming-a-custom-element.md): Register and import custom elements so they can be used across Aurelia applications.
- [Bindable setter patterns](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns/components/bindable-setter.md): Use bindable property setters to transform incoming values before Aurelia applies them.
- [Template controllers](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns/template-controllers.md): Encapsulate templating logic in reusable controllers that coordinate rendering in Aurelia views.
- [Dynamic composition](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns/dynamic-composition.md): Render components and templates dynamically with Aurelia's au-compose element.
- [Portalling elements](https://docs.aurelia.io/getting-to-know-aurelia/composition-patterns/portalling-elements.md): An element in two places at once.
- [State & observation](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation.md)
- [Understanding the binding system](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/synchronous-binding-system.md): Learn how Aurelia's binding system balances synchronous notifications with async computed updates and how to manage state safely.
- [Observation](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/observation.md): Observe changes in your applications.
- [Observing property changes with @observable](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/observation/observing-property-changes-with-observable.md): Learn how to work with Aurelia's observable decorator to create reactive properties inside your component view models that have change callbacks.
- [Effect observation](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/observation/effect-observation.md): React to derived state changes with Aurelia's effect observation APIs.
- [HTML observation](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/observation/html-observation.md): Observe changes to native HTML element properties and attributes in Aurelia.
- [Using observerLocator](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/observation/using-observerlocator.md): Tap into Aurelia's observerLocator to watch low-level property changes manually.
- [Watching data](https://docs.aurelia.io/getting-to-know-aurelia/state-and-observation/watching-data.md): Watch data changes reactively with the @watch decorator. Support for properties,  expressions, and computed values with automatic dependency tracking.
- [Services & runtime hooks](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks.md)
- [Dependency injection (DI)](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection.md): Learn the fundamentals of Aurelia's dependency injection container and how to register, resolve, and organize services.
- [Quick Reference ("How Do I...")](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/dependency-injection-di.md)
- [Visual Diagrams](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/diagrams.md)
- [DI overview](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/overview.md): Understand Aurelia's dependency injection concepts and why containers simplify application structure.
- [Creating services](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/creating-services.md): Learn how to define and register services with Aurelia's dependency injection container.
- [Resolvers](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/resolvers.md): Control how dependencies are resolved in Aurelia using resolver helpers like optional, lazy, and all.
- [What is dependency injection?](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/what-is-dependency-injection.md): Learn about why Dependency Injection (DI) is so important and what role it plays in Aurelia.
- [App Tasks](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/app-tasks.md): App tasks provide injection points to run code at certain points in the compiler lifecycle, allowing you to interface with different parts of the framework and execute code.
- [Task Queue](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/task-queue.md): Manage Aurelia's scheduler and task utilities to coordinate asynchronous work, rendering, and tests.
- [Event Aggregator](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/event-aggregator.md): Use Aurelia's Event Aggregator for lightweight pub/sub communication between components.
- [Logging](https://docs.aurelia.io/getting-to-know-aurelia/services-and-runtime-hooks/logging.md): Aurelia provides a powerful logging API that allows you to display debug and error messages in your applications in a controlled manner.
- [Advanced](https://docs.aurelia.io/getting-to-know-aurelia/advanced.md)
- [Framework internals](https://docs.aurelia.io/getting-to-know-aurelia/advanced/framework-internals.md): Explore how Aurelia's compiler turns templates into instructions and how the runtime executes them.


---

# 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.aurelia.io/getting-to-know-aurelia.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.
