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?