diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index ee49ce36..6c3a535f 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -8,7 +8,6 @@
"name": "stellarforge-frontend",
"version": "0.0.0",
"dependencies": {
- "@rolldown/binding-win32-x64-msvc": "^1.0.0-rc.11",
"@stellar/freighter-api": "^6.0.1",
"@tailwindcss/postcss": "^4.2.2",
"react": "^19.2.0",
@@ -1096,7 +1095,9 @@
"cpu": [
"x64"
],
+ "dev": true,
"license": "MIT",
+ "optional": true,
"os": [
"win32"
],
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 92f6aac8..d41243b9 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,48 +1,11 @@
-import { ToastContainer,Button,Spinner } from './components/UI';
+import { ToastContainer, Button, Spinner } from './components/UI';
import './App.css'
-import { useDarkMode } from './hooks/useDarkMode'
-
-function App() {
- const [dark, setDark] = useDarkMode()
-
- return (
-
-
-
-
-
StellarForge
-
Stellar Token Deployer
-
-
-
-
-
-
-
-
-
-
Welcome to Nova Launch
-
Deploy your custom tokens on Stellar blockchain
-
+import { Routes, Route, Navigate } from 'react-router-dom'
+import { useState } from 'react'
+import { StellarProvider } from './context/StellarContext'
import { WalletProvider } from './context/WalletContext'
import { ToastProvider, useToast } from './context/ToastContext'
-import { NetworkProvider } from './context/NetworkContext'
+import { NetworkProvider, useNetwork } from './context/NetworkContext'
import { NetworkSwitcher } from './components/NetworkSwitcher'
import { useWallet } from './hooks/useWallet'
import { truncateAddress, formatXLM } from './utils/formatting'
@@ -67,6 +30,11 @@ const ProtectedRoute: React.FC<{ children: JSX.Element }> = ({ children }) => {
function AppContent() {
const { wallet, connect, disconnect, isConnecting, error, isInstalled } = useWallet()
const { addToast } = useToast()
+ const { network } = useNetwork()
+ const [showBanner, setShowBanner] = useState(true)
+
+ const isLowBalance = wallet.isConnected && wallet.balance && parseFloat(wallet.balance) < 10
+ const showFriendbotBanner = showBanner && network === 'testnet' && isLowBalance
const handleGetStarted = () => addToast("Welcome! Let's deploy your token.", 'info')
@@ -149,6 +117,33 @@ function AppContent() {
+ {showFriendbotBanner && (
+
+
+
+ Your testnet balance is low. Get free testnet XLM from{' '}
+
+ Friendbot
+ .
+
+
+
+
+ )}
+
{error && (