# Eiffel

## Eiffel

- [About](https://docs.eiffel.dev/overview/about.md): Learn to use Eiffel framework to create modern API's that are sustainable, robust, efficient and cloud based.
- [Cross cutting concerns](https://docs.eiffel.dev/features/cross-cutting-concerns.md)
- [API response consistency](https://docs.eiffel.dev/features/cross-cutting-concerns/api-response-consistency.md)
- [Global exception handling](https://docs.eiffel.dev/features/cross-cutting-concerns/global-exception-handling.md)
- [Idempotency](https://docs.eiffel.dev/features/cross-cutting-concerns/idempotency.md): IdempotentRequest Action Filter Attribute
- [Audit logging](https://docs.eiffel.dev/features/cross-cutting-concerns/audit-logging.md)
- [Caching](https://docs.eiffel.dev/features/caching.md)
- [Configuration](https://docs.eiffel.dev/features/caching/configuration.md)
- [In-Memory](https://docs.eiffel.dev/features/caching/configuration/in-memory.md)
- [Redis](https://docs.eiffel.dev/features/caching/configuration/redis.md)
- [Usage](https://docs.eiffel.dev/features/caching/usage.md)
- [API](https://docs.eiffel.dev/features/caching/api.md)
- [CacheSource](https://docs.eiffel.dev/features/caching/api/cachesource.md): CacheSource enum provides a list of supported cache sources
- [InMemoryCacheOptions](https://docs.eiffel.dev/features/caching/api/inmemorycacheoptions.md): In-Memory cache options
- [RedisCacheOptions](https://docs.eiffel.dev/features/caching/api/rediscacheoptions.md): Redis cache options
- [ICacheService](https://docs.eiffel.dev/features/caching/api/icacheservice.md)
- [ICacheServiceFactory](https://docs.eiffel.dev/features/caching/api/icacheservicefactory.md): Cache factory resolves cache service with given index. You can use this method for both cache source but only useful when used with Redis.
- [Localization](https://docs.eiffel.dev/features/localization.md)
- [Job Processing](https://docs.eiffel.dev/features/job-processing.md): Distributed, scalable, loosely coupled job processing
- [Multi-Tenancy](https://docs.eiffel.dev/features/multi-tenancy.md)
- [Metrics & monitoring](https://docs.eiffel.dev/features/metrics-and-monitoring.md)
- [Transactional outbox](https://docs.eiffel.dev/features/transactional-outbox.md)
- [PostgreSQL](https://docs.eiffel.dev/features/transactional-outbox/postgresql.md)
- [MongoDB (cluster only)](https://docs.eiffel.dev/features/transactional-outbox/mongodb-cluster-only.md)
- [Messaging](https://docs.eiffel.dev/features/messaging.md)
- [Kafka](https://docs.eiffel.dev/features/messaging/kafka.md)
- [Rabbit MQ](https://docs.eiffel.dev/features/messaging/rabbit-mq.md)
- [Azure Service Bus](https://docs.eiffel.dev/features/messaging/azure-service-bus.md)
- [Awaitable socket client](https://docs.eiffel.dev/features/awaitable-socket-client.md)
- [Graceful shutdown](https://docs.eiffel.dev/features/graceful-shutdown.md)
- [Persistence](https://docs.eiffel.dev/fundamentals/persistence.md): Repository base class and other requirements.
- [Modelling](https://docs.eiffel.dev/fundamentals/modelling.md)
- [Domain-Driven Design](https://docs.eiffel.dev/principles/domain-driven-design.md)
- [Aggregates](https://docs.eiffel.dev/principles/domain-driven-design/aggregates.md): An Aggregate is a cluster of domain objects that are treated as a single unit with regards to data changes.
- [Entities](https://docs.eiffel.dev/principles/domain-driven-design/entities.md): Entities are uniquely identifiable by a combination of one or more attributes or properties
- [Value Objects](https://docs.eiffel.dev/principles/domain-driven-design/value-objects.md)
- [Domain Events](https://docs.eiffel.dev/principles/domain-driven-design/domain-events.md): Domain Events are an integral part of Domain-Driven Design and are used to communicate changes and trigger side-effects within the domain model.
- [Factories](https://docs.eiffel.dev/principles/domain-driven-design/factories.md)
- [Domain Services](https://docs.eiffel.dev/principles/domain-driven-design/domain-services.md)
- [Business Identifiers](https://docs.eiffel.dev/principles/domain-driven-design/business-identifiers.md)
- [Shared Kernel](https://docs.eiffel.dev/principles/domain-driven-design/shared-kernel.md)
- [Onion Architecture](https://docs.eiffel.dev/principles/onion-architecture.md)
- [Application Layer](https://docs.eiffel.dev/principles/onion-architecture/application-layer.md)
- [Domain Layer](https://docs.eiffel.dev/principles/onion-architecture/domain-layer.md)
- [Infrastructure Layer](https://docs.eiffel.dev/principles/onion-architecture/infrastructure-layer.md)
- [Anti-Corruption Layer](https://docs.eiffel.dev/principles/onion-architecture/anti-corruption-layer.md)
- [Modular Monolith Architecture](https://docs.eiffel.dev/principles/modular-monolith-architecture.md)
- [Modules](https://docs.eiffel.dev/principles/modular-monolith-architecture/modules.md)
- [Shared Infrastructure](https://docs.eiffel.dev/principles/modular-monolith-architecture/shared-infrastructure.md)
- [Microservice Architecture](https://docs.eiffel.dev/principles/microservice-architecture.md)
- [API Gateway](https://docs.eiffel.dev/principles/microservice-architecture/api-gateway.md)
- [View Model Composition](https://docs.eiffel.dev/principles/microservice-architecture/view-model-composition.md)
- [Contracts](https://docs.eiffel.dev/principles/microservice-architecture/contracts.md)
- [Domain Storytelling](https://docs.eiffel.dev/business-aligment/domain-storytelling.md)
- [User stories](https://docs.eiffel.dev/business-aligment/user-stories.md)
- [Modular Monolith](https://docs.eiffel.dev/implementation/modular-monolith.md)
- [Microservices](https://docs.eiffel.dev/implementation/microservices.md)
- [Unit Testing](https://docs.eiffel.dev/testing/unit-testing.md)
- [Integration Testing](https://docs.eiffel.dev/testing/integration-testing.md)
- [Contract Testing](https://docs.eiffel.dev/testing/contract-testing.md)
- [CI/CD Pipelines](https://docs.eiffel.dev/cloud-infrastructure/ci-cd-pipelines.md)
- [Docker](https://docs.eiffel.dev/cloud-infrastructure/docker.md)
- [Kubernates](https://docs.eiffel.dev/cloud-infrastructure/kubernates.md)
- [Infrastructure as Code](https://docs.eiffel.dev/cloud-infrastructure/infrastructure-as-code.md)
