├── .gitignore ├── LICENSE ├── README.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── http-tests ├── auth-webservices.http └── http-client.env.json ├── settings.gradle └── src ├── main ├── java │ └── com │ │ └── charity_hub │ │ ├── CharityHubApplication.java │ │ ├── api │ │ ├── AuthController.java │ │ ├── authconfig │ │ │ ├── JWTPayload.java │ │ │ ├── JwtAuthFilter.java │ │ │ ├── JwtVerifier.java │ │ │ └── SecurityConfig.java │ │ └── common │ │ │ ├── AccessTokenPayload.java │ │ │ ├── DeferredResults.java │ │ │ ├── GlobalExceptionHandler.java │ │ │ └── RefreshTokenPayload.java │ │ ├── application │ │ ├── Authenticate.java │ │ ├── AuthenticateHandler.java │ │ └── AuthenticateResponse.java │ │ ├── domain │ │ ├── contracts │ │ │ ├── IAccountRepo.java │ │ │ ├── IAuthProvider.java │ │ │ ├── IInvitationRepo.java │ │ │ ├── IJWTGenerator.java │ │ │ └── ILogger.java │ │ ├── exceptions │ │ │ ├── AppException.java │ │ │ ├── DomainException.java │ │ │ └── InvalidAmountException.java │ │ ├── models │ │ │ ├── account │ │ │ │ ├── Account.java │ │ │ │ ├── AccountId.java │ │ │ │ ├── FullName.java │ │ │ │ ├── MobileNumber.java │ │ │ │ ├── Permission.java │ │ │ │ ├── PhotoUrl.java │ │ │ │ └── Tokens.java │ │ │ ├── device │ │ │ │ ├── Device.java │ │ │ │ ├── DeviceId.java │ │ │ │ ├── DeviceType.java │ │ │ │ ├── FCMToken.java │ │ │ │ └── RefreshToken.java │ │ │ └── invitation │ │ │ │ └── Invitation.java │ │ └── validators │ │ │ └── ValueValidator.java │ │ └── infrastructure │ │ ├── Logger.java │ │ ├── db │ │ ├── AccountEntity.java │ │ ├── DeviceEntity.java │ │ ├── InvitationEntity.java │ │ ├── MemberEntity.java │ │ ├── MongoDBConfig.java │ │ └── RevokedAccountEntity.java │ │ ├── mappers │ │ └── TokenMapper.java │ │ ├── repositories │ │ ├── AccountRepo.java │ │ └── InvitationRepo.java │ │ └── services │ │ ├── JwtGenerator.java │ │ └── firebase │ │ ├── FirebaseAuthProvider.java │ │ ├── FirebaseAuthProviderStub.java │ │ └── FirebaseConfig.java └── resources │ ├── application.properties │ └── logback-spring.xml └── test └── kotlin └── com └── charity_hub └── CharityHubApplicationTests.kt /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/README.md -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | coroutinesVersion=1.6.0 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/gradlew.bat -------------------------------------------------------------------------------- /http-tests/auth-webservices.http: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/http-tests/auth-webservices.http -------------------------------------------------------------------------------- /http-tests/http-client.env.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/http-tests/http-client.env.json -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'charity_hub' -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/CharityHubApplication.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/CharityHubApplication.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/AuthController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/AuthController.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/authconfig/JWTPayload.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/authconfig/JWTPayload.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/authconfig/JwtAuthFilter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/authconfig/JwtAuthFilter.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/authconfig/JwtVerifier.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/authconfig/JwtVerifier.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/authconfig/SecurityConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/authconfig/SecurityConfig.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/common/AccessTokenPayload.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/common/AccessTokenPayload.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/common/DeferredResults.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/common/DeferredResults.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/common/GlobalExceptionHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/common/GlobalExceptionHandler.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/api/common/RefreshTokenPayload.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/api/common/RefreshTokenPayload.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/application/Authenticate.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/application/Authenticate.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/application/AuthenticateHandler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/application/AuthenticateHandler.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/application/AuthenticateResponse.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/application/AuthenticateResponse.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/contracts/IAccountRepo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/contracts/IAccountRepo.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/contracts/IAuthProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/contracts/IAuthProvider.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/contracts/IInvitationRepo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/contracts/IInvitationRepo.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/contracts/IJWTGenerator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/contracts/IJWTGenerator.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/contracts/ILogger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/contracts/ILogger.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/exceptions/AppException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/exceptions/AppException.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/exceptions/DomainException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/exceptions/DomainException.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/exceptions/InvalidAmountException.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/exceptions/InvalidAmountException.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/Account.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/Account.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/AccountId.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/AccountId.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/FullName.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/FullName.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/MobileNumber.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/MobileNumber.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/Permission.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/Permission.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/PhotoUrl.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/PhotoUrl.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/account/Tokens.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/account/Tokens.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/device/Device.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/device/Device.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/device/DeviceId.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/device/DeviceId.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/device/DeviceType.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/device/DeviceType.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/device/FCMToken.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/device/FCMToken.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/device/RefreshToken.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/device/RefreshToken.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/models/invitation/Invitation.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/models/invitation/Invitation.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/domain/validators/ValueValidator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/domain/validators/ValueValidator.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/Logger.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/Logger.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/db/AccountEntity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/db/AccountEntity.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/db/DeviceEntity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/db/DeviceEntity.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/db/InvitationEntity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/db/InvitationEntity.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/db/MemberEntity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/db/MemberEntity.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/db/MongoDBConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/db/MongoDBConfig.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/db/RevokedAccountEntity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/db/RevokedAccountEntity.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/mappers/TokenMapper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/mappers/TokenMapper.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/repositories/AccountRepo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/repositories/AccountRepo.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/repositories/InvitationRepo.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/repositories/InvitationRepo.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/services/JwtGenerator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/services/JwtGenerator.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/services/firebase/FirebaseAuthProvider.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/services/firebase/FirebaseAuthProvider.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/services/firebase/FirebaseAuthProviderStub.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/services/firebase/FirebaseAuthProviderStub.java -------------------------------------------------------------------------------- /src/main/java/com/charity_hub/infrastructure/services/firebase/FirebaseConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/java/com/charity_hub/infrastructure/services/firebase/FirebaseConfig.java -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/resources/application.properties -------------------------------------------------------------------------------- /src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/main/resources/logback-spring.xml -------------------------------------------------------------------------------- /src/test/kotlin/com/charity_hub/CharityHubApplicationTests.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hibrahem/architecture_patterns_example/HEAD/src/test/kotlin/com/charity_hub/CharityHubApplicationTests.kt --------------------------------------------------------------------------------