Athena Framework was created with the intention of providing various high quality, reusable, and independent components that can be used for things such as serialization, validation, dependency injection, etc. These components can be used on their own within a standalone application, or as a means to "build" a framework. The design principles of the Athena Framework take heavy inspiration from various other frameworks including Symfony, and Spring. Athena is the result of integrating these components into one cohesive framework.
In regards to other Crystal web frameworks, Athena employs some unique concepts, features, and design principles:
- Annotations, including user-defined ones, are used to define & configure routes among other things
- Adheres to the SOLID design principles; basing its dependencies on interfaces, and providing a Dependency Injection Service Container to help manage dependencies/ease testing
- Event based; allows tapping into various events during the life-cycle of a request
- Flexible foundation; can make an application as simple or complex as needed, using only the features/components that are needed