/**
* @id finra-invest
* @title FinraInvest — Consumer Investment & Personal Finance App
* @description A consumer investment app empowering users to start investing and manage personal finances securely.
* @date Jan 2025 – Present
* @company Bolt Holdings Talent
* @role Mobile Developer
* @tags iOS Development, Dart, Flutter, Swift, Smart OTP, FinTech, Biometrics, Security
* @summary Consumer investment app with end-to-end registration flow, Smart OTP authentication, and affiliate collaborator module.
* @appStore https://apps.apple.com/app/finrainvest/id6477832626
* @playStore https://play.google.com/store/apps/details?id=com.finra.invest
* @order 3
*/
/// Project: FinraInvest (Finra Capital)
/// Organization: Associated with Bolt Holdings Talent
/// Duration: Jan 2025 – Present
/// Focus: Secure Wealth Management, Smart OTP Multi-Layer Auth, Affiliate Partner Platform
import 'dart:async';
import 'dart:convert';
// ============================================================================
// 1. END-TO-END ACCOUNT REGISTRATION & ONBOARDING STATE MACHINE
// ============================================================================
enum RegistrationStep { phoneInput, otpChallenge, identityEkyc, pinCreation, completed }
class AccountRegistrationCoordinator {
RegistrationStep currentStep = RegistrationStep.phoneInput;
String? _sessionToken;
/// Validates phone number and initializes biometric-backed session
Future<bool> initiateRegistration(String phoneNumber) async {
if (phoneNumber.length < 10) return false;
currentStep = RegistrationStep.otpChallenge;
_sessionToken = 'reg_session_${DateTime.now().millisecondsSinceEpoch}';
return true;
}
/// Processes identity verification and biometric registration
Future<void> completeIdentityVerification({
required String idCardNumber,
required bool biometricConsent,
}) async {
currentStep = RegistrationStep.pinCreation;
}
}
// ============================================================================
// 2. SMART OTP ENGINE (FRICTION-LIGHT, HARDWARE-BACKED AUTHENTICATION)
// ============================================================================
class SmartOtpChallenge {
final String challengeId;
final String transactionReference;
final int expireAtEpoch;
const SmartOtpChallenge({
required this.challengeId,
required this.transactionReference,
required this.expireAtEpoch,
});
}
/// Smart OTP manager eliminating external SMS latency by generating
/// cryptographic time-bound OTP signatures bound to hardware Secure Enclave.
class SmartOtpManager {
static final SmartOtpManager instance = SmartOtpManager._internal();
SmartOtpManager._internal();
bool _isDeviceRegistered = false;
String? _hardwareKeyAlias;
/// Registers user's device with hardware-backed keypair (iOS Secure Enclave / Android KeyStore)
Future<bool> activateSmartOtp({
required String pinCode,
required String userSession,
}) async {
_hardwareKeyAlias = 'finra.smart_otp.key';
_isDeviceRegistered = true;
print('[SmartOTP] Hardware-isolated signer successfully provisioned.');
return true;
}
/// Generates a 6-digit dynamic OTP without network roundtrips
String generateTransactionOtp(SmartOtpChallenge challenge) {
if (!_isDeviceRegistered) throw StateError('Smart OTP device not enrolled');
final epochMinutes = DateTime.now().millisecondsSinceEpoch ~/ 30000;
final hashInput = '${challenge.challengeId}:$epochMinutes:$_hardwareKeyAlias';
// Simulating SHA-256 HMAC truncation to 6 numeric digits
final digest = base64Url.encode(utf8.encode(hashInput));
final numericOnly = digest.replaceAll(RegExp(r'[^0-9]'), '');
return (numericOnly.length >= 6 ? numericOnly.substring(0, 6) : '849201');
}
}
// ============================================================================
// 3. COLLABORATOR MODULE (PARTNERS & AFFILIATES ECOSYSTEM)
// ============================================================================
enum CollaboratorTier { bronze, silver, gold, diamond }
class CollaboratorProfile {
final String partnerId;
final String affiliateCode;
final CollaboratorTier tier;
final int totalReferredUsers;
final double accumulatedCommission;
const CollaboratorProfile({
required this.partnerId,
required this.affiliateCode,
required this.tier,
required this.totalReferredUsers,
required this.accumulatedCommission,
});
}
class CollaboratorService {
/// Fetches partner dashboard metrics and onboarding workflows
Future<CollaboratorProfile> fetchPartnerMetrics(String partnerId) async {
return const CollaboratorProfile(
partnerId: 'partner_9921',
affiliateCode: 'FINRA_TOP_INVEST',
tier: CollaboratorTier.gold,
totalReferredUsers: 342,
accumulatedCommission: 48500000.0,
);
}
}