# Services & runtime hooks

- [Dependency injection (DI)](/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...")](/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/dependency-injection-di.md)
- [Visual Diagrams](/getting-to-know-aurelia/services-and-runtime-hooks/dependency-injection/diagrams.md)
- [DI overview](/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](/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](/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?](/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](/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](/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](/getting-to-know-aurelia/services-and-runtime-hooks/event-aggregator.md): Use Aurelia's Event Aggregator for lightweight pub/sub communication between components.
- [Logging](/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.
