Skip to content

Latest commit

 

History

History
157 lines (110 loc) · 4.42 KB

File metadata and controls

157 lines (110 loc) · 4.42 KB

Storage Module Architecture

The storage.ts file has been componentized into a modular structure within the storage/ directory.

Module Structure

Core Types (types.ts)

  • User - User account information
  • Deposit - Deposit transactions
  • Stake - Staking records
  • Withdrawal - Withdrawal requests
  • Transaction - Transaction history
  • AdminUser - Admin credentials
  • Referral - Referral program records
  • DailyResult - Daily results tracking
  • BankAccount - Bank account information

Constants (constants.ts)

  • STAKE_DURATION_HOURS - Stake duration (168 hours / 7 days)
  • STAKE_INTEREST_RATE - Interest rate (0.25 = 25%)
  • STORAGE_KEYS - LocalStorage key constants
  • generateId() - Unique ID generator

User Module (user.ts)

Manages user authentication and profiles

  • getUser() - Get current user
  • setUser() - Save user data
  • clearUser() - Logout user
  • updateUserBalance() - Update balance
  • getAllUsers() - Admin: get all users
  • getUserById() - Get user by ID
  • deleteUser() - Admin: delete user

Deposits Module (deposits.ts)

Manages deposit transactions

  • getDeposits() - Get all deposits
  • addDeposit() - Create new deposit
  • getDepositsByUserId() - Get user's deposits
  • updateDepositStatus() - Update deposit status

Stakes Module (stakes.ts)

Manages staking operations

  • getStakes() - Get all stakes
  • addStake() - Create new stake
  • getStakesByUserId() - Get user's stakes
  • updateStakeStatus() - Update stake status
  • calculateExpectedReturn() - Calculate returns
  • getActiveStakes() - Get active stakes
  • getMaturedStakes() - Get matured stakes
  • getWithdrawnStakes() - Get withdrawn stakes

Withdrawals Module (withdrawals.ts)

Manages withdrawal requests

  • getWithdrawals() - Get all withdrawals
  • addWithdrawal() - Create withdrawal request
  • getWithdrawalsByUserId() - Get user's withdrawals
  • updateWithdrawalStatus() - Update status
  • getPendingWithdrawals() - Get pending requests
  • getCompletedWithdrawals() - Get completed requests

Transactions Module (transactions.ts)

Manages transaction history

  • getTransactions() - Get all transactions
  • addTransaction() - Add transaction record
  • getTransactionsByUserId() - Get user's transactions
  • getTransactionsByType() - Get transactions by type
  • clearTransactions() - Clear history

Admin Module (admin.ts)

Manages admin authentication

  • getAdminUser() - Get current admin
  • setAdminUser() - Save admin session
  • clearAdminUser() - Logout admin
  • validateAdminCredentials() - Validate credentials
  • loginAdmin() - Admin login

Referrals Module (referrals.ts)

Manages referral program

  • getReferrals() - Get all referrals
  • addReferral() - Add new referral
  • updateReferralStatus() - Update status
  • getReferralData() - Get referral stats
  • getReferralsByUserId() - Get user's referrals

Results Module (results.ts)

Manages daily results

  • getDailyResults() - Get all results
  • addDailyResult() - Add result
  • getResultsStats() - Get statistics

Utilities Module (utils.ts)

Utility functions

  • calculateTimeRemaining() - Calculate time left for stakes
  • formatCurrency() - Format currency values
  • formatDate() - Format dates
  • formatDateTime() - Format date-times
  • generateVirtualAccountNumber() - Generate account numbers

Analytics Module (analytics.ts)

Admin analytics and user details

  • getAdminStats() - Dashboard stats
  • getUserDetails() - Get detailed user info
  • updateUser() - Update user data

Mock Module (mock.ts)

Mock data initialization

  • initializeAdminMockData() - Initialize demo data

Index Module (index.ts)

Re-exports all public APIs

Benefits

Modularity - Each module handles one responsibility
Maintainability - Easier to locate and update specific functions
Testability - Individual modules can be unit tested
Scalability - Easy to extend with new features
Code Organization - Clear separation of concerns
Backward Compatibility - Old imports still work via storage.ts wrapper

Usage

All existing imports continue to work:

// Old way (still works via re-export)
import { getUser, addStake } from "@/lib/storage";

// New way (direct imports)
import { getUser } from "@/lib/storage/user";
import { addStake } from "@/lib/storage/stakes";