High Level Architecture
The system is designed with a layered approach, ensuring separation of concerns and maintainability.
Zoom to inspect
1. Client Layer
Web Application: This is the browser-based interface for users to interact with the platform.
Mobile Application: A mobile client for users to access the platform's functionalities on their devices.
2. API Gateway
HTTPS/TLS: All client requests first pass through an API Gateway, which secures communication using HTTPS/TLS, providing a single entry point to the backend services.
3. Spring Boot Application (Backend)
This is the core of the application, structured into several internal layers:
Web Layer (Controllers)
AuthController: Handles user authentication and authorization requests.
UserController: Manages user-specific operations.
AdminController: Provides endpoints for administrative tasks.
Security Layer
JwtAuthenticationFilter: Intercepts requests to validate JWT tokens.
AuthenticationManager: Manages the authentication process.
JwtTokenProvider: Responsible for generating and validating JWT tokens.
Service Layer
AuthService: Manages user authentication, registration, OTP verification, and token refreshing.
KycService: Handles Know Your Customer (KYC) processes, including document submission and status updates.
MintService: Manages minting requests for digital assets.
UserService: Manages user profiles and whitelisted wallets.
WalletService: Deals with user wallets.
OtpService: Manages One-Time Password generation and verification.
Integration Layer
EmailNotificationService: Handles sending email notifications (e.g., OTPs, KYC status changes).
DocumentStorageService: Manages the storage of documents (e.g., KYC documents).
Repository Layer
UserRepository, KycDocumentRepository, MintRepository, RefreshTokenRepository, OtpRepository, WalletRepository.
These interfaces abstract the data access logic, interacting with the underlying database.
4. Azure Services (West Europe)
The application leverages several Azure cloud services for core functionalities:
PostgreSQL Flexible Server: The primary relational database for storing all application data (users, KYC documents, mint requests, tokens, OTPs, wallets).
Azure Blob Storage (kyc container): Used for secure and scalable storage of KYC documents.
SMTP Server (Spring Mail): Utilized by EmailNotificationService for sending emails.
5. Configuration
Environment Variables (App Service Settings): Critical application configurations, such as API URLs, database credentials, and JWT secrets, are managed securely through environment variables.
Last updated
Was this helpful?