From e4fe77a005f1e4a2a680f491f39555641a4897e8 Mon Sep 17 00:00:00 2001 From: Jhmeel Date: Sat, 14 Sep 2024 12:27:40 +0100 Subject: [PATCH] updates --- .firebase/hosting.ZGlzdA.cache | 42 +++++++------- .gitignore | 3 +- README.md | 101 ++++++++++++++++++++++++++++++++- firebase.json | 16 ++++++ src/App.tsx | 2 +- src/firebase.ts | 22 +++++++ src/main.tsx | 3 +- vite.config.ts | 8 +++ 8 files changed, 171 insertions(+), 26 deletions(-) create mode 100644 firebase.json create mode 100644 src/firebase.ts diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index e495ea3..a245a72 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,22 +1,22 @@ logo_maskable-icon.png,1725030732625,10d23dc1083785f1bb23e650ec8dcd0d9f6463fa756585b128d0b2ad27b1effc -index.html,1726237917536,ca3fc7a2d67ae62e272cd68bac2cadc53b122eb7526f52dbe2a0e2797f45dbcd -assets/Verification-D8CoHclr.js,1726237917365,e45a204a723db6e9d4bfccb2ecea12575fa1bd9139fe36a21326a31c4a901985 -assets/TableRow-DEUE_Tf6.js,1726237917396,baf152de8571e93204afb2ebb85a0d085eb475400ec267bb98ad2772fcf67b97 -assets/Setting-nmBW9m9j.js,1726237917396,13b3b36363b1f106b445cf8cd0f7ef44fcfc78a783c1eff96f9d065acc2024a3 -assets/Security-DBuFflNP.js,1726237917396,a263fbca19ba0ab97a2e748669208eac48427a1db048ff4c03221857b45382da -assets/Receiver-CGqIVnI6.js,1726237917443,c6566013118aad97dfacc0285519d33b822a2025d29fc71448f4e65dbfdbbf16 -assets/Portfolio-Cbx0xrwO.js,1726237917411,48de80e2e2ef9d8272c171e40b9e4992030ce2443b43cded531ee5164786fe5a -assets/newss-BPrtsdIz.jpeg,1726237917365,12d06351a0723b859b4ce31efdfee4d544d5372282ec94f0b88f50f83b4dae93 -assets/NotificationsOff-_7WTPHG5.js,1726237917411,b24fc572d1517e6670505da6c55e667e1df07ff9f4dd3ff670804a6ca510cefa -assets/news-jNoN3COY.jpeg,1726237917365,127edf84eba2e9a951514d00040502f8bc208ed950b036fc7c1b20876f9103ce -assets/index-BSXT5Esq.js,1726237917411,8f1251d2b0a74497fdbd8e79979566eac2cb970a0edc6de425c57289524030e6 -assets/Converter-BCC67Opq.js,1726237917365,8baf9500b90f67a904d886c062f18ed70677734e0e753ff889ac54b9504a2437 -assets/CardContent-C0LOkHmh.js,1726237917396,653849acbd0dc056b1cc693dbcbab7183e27164e39ffd9e0f2a5156fe85b0d35 -assets/Card-Dm_e_Dzt.js,1726237917396,7cd72ebc26f6f3c7202bfa379d485b431a16a76bbc8828147017501422030b42 -assets/index-COco_BLs.css,1726237917365,2c9fc015fe643bcd528a251085e6e334d6dbe80538d9d91c27b820e2ba8c5927 -assets/Landing-DV4mFfTx.js,1726237917396,50b1098913d033a93de4a2e861acc9c654e6e8d181a0a62bb78b5d37ac71ae78 -assets/apore-banner-D2AVtlJ7.png,1726237916692,417c4fc25034f9ccac404dd13226e5c9d8c5c7996ae27168077254a5cad53476 -assets/Txhistory-I9au6UtP.js,1726237917396,56f629ddaac4998a19eb3021a5bfbdb946dd7a5334c1767c8c642949dc32f6e5 -assets/logo-Z9JJLbAl.png,1726237917365,04be37756fa718cc203cbce3dcc1350b58b192fdf87f4d4762b01c4aed80c7b9 -assets/Dashboard-Iq_n-h7f.js,1726237917474,23fee57b1c4b445ee3abf4b7c660a3d353ebf603497f3a5e2c52a598310ce79b -assets/index-BnDtwSr0.js,1726237917490,1ed6929f4a41db1bc7f3eab53bd5539bed9f0565e7bb35851aab4e529cb911df +assets/Setting-CnkcvIl7.js,1726307856388,ac14ccefc33cc3cd367ed350797387faffd983307493707b0f23cb0d573631d1 +assets/Verification-CrDn482X.js,1726307856346,f486703a377dfc081bbb3aa0339b0220791e187a6fc3e0d0c657485fb96782ec +assets/Security-CRB-OOX7.js,1726307856346,199170609e6dc58d3ef09750ab651bc8fc639fcc9240f8f6456122cbf97ea461 +index.html,1726308121558,0c3f841005283ff03ac1db76026f5d1011cbdd4747a0e54972eb3e4e4f9e4105 +assets/TableRow-DGKomJK7.js,1726307856346,115f4d72d106ad54d5c9a33a64281012e77309eadae25d24a5652bb7552698b3 +assets/Portfolio-B6tV46q8.js,1726307856346,5629d3e85184ebe1336d324f81f18b9881c4388a0bf3ea849ef48dd75a7fa684 +assets/Receiver-Bpl0h1ix.js,1726307856346,f8a181bc8132dceda17b1fb9fdb937788776eb2e85693fa0828adaad4f032010 +assets/news-jNoN3COY.jpeg,1726307856346,127edf84eba2e9a951514d00040502f8bc208ed950b036fc7c1b20876f9103ce +assets/newss-BPrtsdIz.jpeg,1726307856346,12d06351a0723b859b4ce31efdfee4d544d5372282ec94f0b88f50f83b4dae93 +assets/index-D2IZpLpO.js,1726307856346,5a3d2e96e1e45fb54878d09408df6337c6340d94ae53c0fa09902d66b2e86c1c +assets/Converter-Dnhioh7d.js,1726307856346,41c88959d715e60a2ed8a36c20898c375d82efd5d7b22d689f9b011dbafe97d9 +assets/Card-BxXQw8qD.js,1726307856346,b83c80af6862dceac3c8bda4b83d8300c9df2cc626b39315c618c9956eb38de9 +assets/CardContent-BoTlHh_i.js,1726307856346,7da2efd4a2328797ea1efb5f4461b0bdb276674b070295a8db9c88a27f2eff30 +assets/NotificationsOff-BFeYi-13.js,1726307856346,1af06b75ab91fd6b67784b33b5b0a437346aee264d549150f146e54f4b31a1e8 +assets/index-COco_BLs.css,1726307856346,2c9fc015fe643bcd528a251085e6e334d6dbe80538d9d91c27b820e2ba8c5927 +assets/Txhistory-BFlFqaFf.js,1726307856346,32f3ebf08cd2c5bb44a3e0b040f109c506cec0b925d6e00e87d2da5280d979e0 +assets/apore-banner-D2AVtlJ7.png,1726307856346,417c4fc25034f9ccac404dd13226e5c9d8c5c7996ae27168077254a5cad53476 +assets/Landing-tS8hXluO.js,1726307856346,e338cda511d8b2b792c108d758d3a59cacb314f4de9f8acb4acffdabc2289c0d +assets/logo-Z9JJLbAl.png,1726307856239,04be37756fa718cc203cbce3dcc1350b58b192fdf87f4d4762b01c4aed80c7b9 +assets/Dashboard-Bz8-uRAC.js,1726307857221,c9aafe249977847b60468777ecef75e1230a02dafa114f1dbaf792444bfde328 +assets/index-qHidFfuC.js,1726307857445,2925e63ab11f20b6e03b15055f5576eb45e1f216381a7d522ab173255e3e7395 diff --git a/.gitignore b/.gitignore index b2903c2..cc8ed43 100644 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,7 @@ node_modules dist dist-ssr *.local -firebase.json -firebase.ts + # Editor directories and files .vscode/* diff --git a/README.md b/README.md index d708131..a9d652f 100644 --- a/README.md +++ b/README.md @@ -1 +1,100 @@ -# Apore \ No newline at end of file +# Apore Vault - Multi-Currency Wallet +[šŸŒLive Link](https://apore-vault.web.app) +**Apore Vault** is a secure, multi-currency wallet that simplifies the management of both traditional and digital assets. It offers seamless currency exchanges, easy transfers, and top-notch security features like two-factor authentication (2FA). Designed for efficiency, Apore Vault integrates with two Public Financial Institutions (PFIs) to provide users with a trusted solution for cross-border money transfers, along with ratings to help users select the best option. + +## Key Features + +- **Secure Storage**: State-of-the-art encryption for protecting your digital assets. +- **Multi-Currency Support**: Manage and store a wide range of cryptocurrencies. +- **Currency Exchange**: Easily swap between cryptocurrencies directly within the app. +- **Seamless Transfers**: Send and receive funds quickly, whether across borders or between wallets. +- **Integrated Exchange**: Perform currency swaps without leaving the app, with real-time rates. +- **Two-Factor Authentication (2FA)**: Enhanced security via SMS, email, or authentication apps to verify transactions. +- **Advanced Security**: Includes biometric login and cold storage for added safety. +- **Fiat and Crypto Integration**: Manage both traditional currencies and cryptocurrencies in a single app. +- **User-Friendly Interface**: Simple, intuitive design for users of all experience levels. + +## Liquidity Providers + +Apore Vault integrates with two key Liquidity Providers to facilitate seamless currency exchange and cross-border money transfers. Each Liquidity Provider supports different offerings: + +- **AquaFinance Capital**: + - DID: `did:dht:3fkz5ssfxbriwks3iy5nwys3q5kyx64ettp9wfn1yfekfkiguj1y` + - Offerings: + - GHS to USDC + - NGN to KES + - KES to USD + - USD to KES + +- **Flowback Financial**: + - DID: `did:dht:zkp5gbsqgzn69b3y5dtt5nnpjtdq6sxyukpzo68npsf79bmtb9zy` + - Offerings: + - USD to EUR + - EUR to USD + - USD to GBP + - USD to BTC + +Users can select a Liquidity Provider based on their transaction needs and available offerings, ensuring flexible and efficient transfers. + +## Profitability + +Apore Vault generates profit through **transaction fees** on every transfer and currency exchange. Whether users send money across borders or exchange currencies within the app, a small fee is applied to ensure the sustainability of the platform while keeping fees competitive. + +## Optionality + +Apore Vault integrates with two PFIs and the above-mentioned Liquidity Providers to give users the best cross-border money transfer options. Users are guided by **user ratings** on transaction speed, fees, and overall service quality, ensuring they choose the best provider for their needs. + +## Customer Management + Apore Vault ensures that users' personal information is kept private and secure. + +## Customer Satisfaction + +To maintain a high level of service, Apore Vault tracks **customer satisfaction** with each PFI and Liquidity Provider through post-transaction ratings. After each transfer or currency exchange, users are prompted to rate the provider based on transaction speed, fees, and customer service. These ratings help other users make informed decisions about which provider to use. + +## Security + +- **Two-Factor Authentication (2FA)**: For added security, we require 2FA for all major transactions, ensuring an additional layer of protection. +- **Auto Logout**: To further enhance security, the application automatically logs the user out after 5 seconds of inactivity or no interaction, ensuring sensitive information is not left exposed in case of inactivity. + + +## Why Choose Apore Vault? + +- **Built on TBDEX Protocol**: We harness the power of decentralized exchanges for secure, efficient operations. +- **Seamless Fiat and Crypto Integration**: Manage all your assetsā€”both traditional and digitalā€”in one place. +- **User-Friendly Design**: A clean, intuitive interface that makes managing your finances simple. +- **Advanced Security Features**: With 2FA. +- **Continuous Updates**: We regularly enhance the app to keep up with user feedback and technology trends. + +## Tech Stack + +- **React (TypeScript)** +- **Firebase** +- **tbDex SDK** +- **Material-UI** +- **Ether.js** +- **Styled-Components** +- **@coinbase/wallet-sdk** +- **WalletConnect** +- **Recharts** + +## Installation + +1. Clone the repository: + ```bash + git clone https://github.com/jhmeel/apore-vault.git + ``` +2. Navigate to the project directory: + ```bash + cd apore-vault + ``` +3. Install dependencies: + ```bash + npm install + ``` +4. Run the application: + ```bash + npm run dev + ``` + + + diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..2c33c29 --- /dev/null +++ b/firebase.json @@ -0,0 +1,16 @@ +{ + "hosting": { + "public": "dist", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + } +} diff --git a/src/App.tsx b/src/App.tsx index 70fbac4..9dab942 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -80,7 +80,7 @@ function App() { <> - + {/* */} }> diff --git a/src/firebase.ts b/src/firebase.ts new file mode 100644 index 0000000..649268c --- /dev/null +++ b/src/firebase.ts @@ -0,0 +1,22 @@ +import { initializeApp } from "firebase/app"; +import { getAnalytics } from "firebase/analytics"; +import { getAuth } from "firebase/auth"; +import { getFirestore } from "firebase/firestore"; +import { getStorage } from "firebase/storage"; + +const firebaseConfig = { + apiKey: "AIzaSyAtgLfUsqHeYlHfqITsFOpWUtHV2jr45jc", + authDomain: "apore-vault.firebaseapp.com", + projectId: "apore-vault", + storageBucket: "apore-vault.appspot.com", + messagingSenderId: "612796850763", + appId: "1:612796850763:web:eb0e5c7d5495e2c14123ce", + measurementId: "G-K50MSGGB8N" +}; + + +export const app = initializeApp(firebaseConfig); +export const analytics = getAnalytics(app); +export const auth = getAuth(app); +export const db = getFirestore(app); +export const storage = getStorage(app); \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx index 1a1e0f2..6af09c7 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -6,7 +6,8 @@ import { Toaster } from "react-hot-toast"; import "./index.css"; import { Buffer } from 'buffer'; import process from 'process'; -import 'string.prototype.matchall'; +import 'string.prototype.matchall/auto'; + window.Buffer = Buffer; diff --git a/vite.config.ts b/vite.config.ts index 78c4f5c..82d2953 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -13,6 +13,14 @@ export default defineConfig({ define: { 'process.env': {}, global: 'globalThis', + }, + optimizeDeps: { + include: ['string.prototype.matchall'] + }, + build: { + rollupOptions: { + external: ['string.prototype.matchall'] + } }, resolve: { alias: {