diff --git a/packages/wyatt_architecture/models/class_model.png b/packages/wyatt_architecture/models/class_model.png
new file mode 100644
index 00000000..ce666665
Binary files /dev/null and b/packages/wyatt_architecture/models/class_model.png differ
diff --git a/packages/wyatt_architecture/models/class_model.puml b/packages/wyatt_architecture/models/class_model.puml
new file mode 100644
index 00000000..d8f143b6
--- /dev/null
+++ b/packages/wyatt_architecture/models/class_model.puml
@@ -0,0 +1,86 @@
+@startuml
+set namespaceSeparator ::
+
+abstract class "wyatt_architecture::src::core::exceptions::exceptions.dart::AppException" {
+  +String? message
+  +String toString()
+}
+
+"dart::core::Exception" <|-- "wyatt_architecture::src::core::exceptions::exceptions.dart::AppException"
+
+class "wyatt_architecture::src::core::exceptions::exceptions.dart::ClientException" {
+}
+
+"wyatt_architecture::src::core::exceptions::exceptions.dart::AppException" <|-- "wyatt_architecture::src::core::exceptions::exceptions.dart::ClientException"
+class "wyatt_architecture::src::core::exceptions::exceptions.dart::ServerException" {
+}
+
+"wyatt_architecture::src::core::exceptions::exceptions.dart::AppException" <|-- "wyatt_architecture::src::core::exceptions::exceptions.dart::ServerException"
+
+abstract class "wyatt_architecture::src::domain::repositories::base_repository.dart::BaseRepository" {
+}
+
+abstract class "wyatt_architecture::src::domain::data_sources::local::base_local_data_source.dart::BaseLocalDataSource" {
+}
+
+"wyatt_architecture::src::domain::data_sources::base_data_source.dart::BaseDataSource" <|-- "wyatt_architecture::src::domain::data_sources::local::base_local_data_source.dart::BaseLocalDataSource"
+
+abstract class "wyatt_architecture::src::domain::data_sources::base_data_source.dart::BaseDataSource" {
+}
+
+abstract class "wyatt_architecture::src::domain::data_sources::remote::base_remote_data_source.dart::BaseRemoteDataSource" {
+}
+
+"wyatt_architecture::src::domain::data_sources::base_data_source.dart::BaseDataSource" <|-- "wyatt_architecture::src::domain::data_sources::remote::base_remote_data_source.dart::BaseRemoteDataSource"
+
+class "wyatt_architecture::src::domain::usecases::no_param.dart::NoParam" {
+}
+
+"wyatt_architecture::src::domain::entities::entity.dart::Entity" <|-- "wyatt_architecture::src::domain::usecases::no_param.dart::NoParam"
+
+abstract class "wyatt_architecture::src::domain::usecases::observers.dart::Observer" {
+  +FutureOr<void> onStart()
+  +FutureOr<void> onError()
+}
+
+abstract class "wyatt_architecture::src::domain::usecases::observers.dart::AsyncObserver" {
+  +FutureOr<void> onComplete()
+}
+
+abstract class "wyatt_architecture::src::domain::usecases::observers.dart::StreamObserver" {
+  +void onDone()
+  +void onData()
+}
+
+abstract class "wyatt_architecture::src::domain::usecases::usecase.dart::BaseUseCase" {
+  +ReturnType execute()
+  +ReturnType call()
+}
+
+abstract class "wyatt_architecture::src::domain::usecases::usecase.dart::UseCase" {
+  -FutureOr<void> _onSuccess()
+  +FutureOr<Result<ReturnType, AppException>> execute()
+}
+
+"wyatt_architecture::src::domain::usecases::usecase.dart::BaseUseCase" <|-- "wyatt_architecture::src::domain::usecases::usecase.dart::UseCase"
+"wyatt_architecture::src::domain::usecases::observers.dart::Observer" <|-- "wyatt_architecture::src::domain::usecases::usecase.dart::UseCase"
+
+abstract class "wyatt_architecture::src::domain::usecases::usecase.dart::AsyncUseCase" {
+  -FutureOr<void> _onSuccess()
+}
+
+"wyatt_architecture::src::domain::usecases::usecase.dart::UseCase" <|-- "wyatt_architecture::src::domain::usecases::usecase.dart::AsyncUseCase"
+"wyatt_architecture::src::domain::usecases::observers.dart::AsyncObserver" <|-- "wyatt_architecture::src::domain::usecases::usecase.dart::AsyncUseCase"
+
+abstract class "wyatt_architecture::src::domain::usecases::usecase.dart::StreamUseCase" {
+  -FutureOr<void> _onSuccess()
+}
+
+"wyatt_architecture::src::domain::usecases::usecase.dart::UseCase" <|-- "wyatt_architecture::src::domain::usecases::usecase.dart::StreamUseCase"
+"wyatt_architecture::src::domain::usecases::observers.dart::StreamObserver" <|-- "wyatt_architecture::src::domain::usecases::usecase.dart::StreamUseCase"
+
+abstract class "wyatt_architecture::src::domain::entities::entity.dart::Entity" {
+}
+
+
+@enduml
\ No newline at end of file