A premium, highly interactive Crypto Exchange / Wallet Dashboard for Telegram Mini Apps.
Stunning glassmorphism UI, fluid animations, and Web3-ready design — perfect for portfolio showcase.
- Glowing Balance Display — Large $24,532.89 total with animated gradient text
- Quick Action Buttons — Send, Receive, Buy, History with tap scale animations
- Portfolio Growth Chart — SVG area chart with gradient fill and animated path drawing
- Real-time Stats — 24h volume and active positions cards
- Animated Asset List — Staggered entrance animations for each coin row
- Live Price Simulation — Updates every 3 seconds with color flash effects
- Price Change Indicators — Green/red flash animations on value changes
- Supported Assets — TON, BTC, ETH, SOL, USDT
- Dual Input Cards — "You Pay" and "You Receive" with smooth transitions
- Rotating Swap Button — 180° rotation animation on click
- Three-State Confirm Button — Idle → Loading (2s) → Success with checkmark
- Exchange Rate Display — Real-time conversion calculation
- Send Flow — Two-step: Input → Confirm → Success with animations
- Receive Screen — QR code placeholder with copy-to-clipboard address
- Buy Calculator — USD to TON conversion with live preview
- Transaction History — Scrollable list with type indicators (sent/received/swap)
| Token | Value | Usage |
|---|---|---|
| Background | #020617 (slate-950) |
Main screen backgrounds |
| Primary | #22d3ee (cyan-400) |
Active states, accents, glows |
| Secondary | #a855f7 (purple-500) |
Gradients, secondary actions |
| Positive | #10b981 (emerald-400) |
Profit, success states |
| Negative | #f43f5e (rose-500) |
Loss, error states |
| Surface | white/5 |
Glassmorphism cards |
- Headlines: Bold, Slate-50
- Body: Normal weight, Slate-400
- Numbers: Tight tracking, tabular figures
- Easing:
easeInOutfor smooth motion - Durations: 300ms (transitions), 500ms (modals), 1500ms (charts)
- Spring:
type: 'spring', stiffness: 400, damping: 10for nav items - Micro-interactions: Scale pulses, color transitions, path drawing
nova-crypto-twa/
├── src/
│ ├── App.tsx # Main container with navigation state
│ ├── index.css # Global styles & Tailwind config
│ ├── main.tsx # React entry point
│ └── components/
│ ├── BottomNav.tsx # Animated tab bar with spring effects
│ ├── Dashboard.tsx # Home screen with balance & modals
│ ├── AssetList.tsx # Market with live price simulation
│ ├── SwapInterface.tsx # Token swap with 3-state button
│ └── ProfileScreen.tsx # User profile & settings
| Technology | Purpose |
|---|---|
| React 18 | UI framework with hooks |
| TypeScript | Type-safe development |
| Vite 6 | Fast build tooling |
| Tailwind CSS 3.4 | Utility-first styling |
| Framer Motion 12 | Complex animations & gestures |
| Lucide React | Icon library |
| pnpm | Fast package manager |
- Node.js 18+
- pnpm (recommended)
# Clone the repository
git clone https://github.com/yourusername/nova-crypto-twa.git
cd nova-crypto-twa
# Install dependencies
pnpm install
# Start development server
pnpm devpnpm buildThe built files will be in the dist/ directory.
<motion.div
animate={isActive ? { scale: [1, 1.2, 1] } : { scale: 1 }}
transition={{
duration: 0.3,
ease: 'easeInOut',
}}
>
<Icon size={24} strokeWidth={isActive ? 2.5 : 2} />
</motion.div><motion.span
key={coin.id + coin.change24h}
initial={{
backgroundColor: flashColor === 'up' ? 'rgba(16, 185, 129, 0.3)' : 'rgba(244, 63, 94, 0.3)',
color: flashColor === 'up' ? '#10b981' : '#f43f5e',
}}
animate={{
backgroundColor: 'transparent',
color: isPositive ? '#10b981' : '#f43f5e',
}}
transition={{ duration: 0.3 }}
>
{isPositive ? '+' : ''}{coin.change24h.toFixed(2)}%
</motion.span><AnimatePresence mode="wait">
{isSwapping ? (
<motion.div key="loading" initial={{ opacity: 0 }} animate={{ opacity: 1 }}>
<Loader2 className="animate-spin" />
</motion.div>
) : swapSuccess ? (
<motion.div key="success" initial={{ scale: 0 }} animate={{ scale: 1 }}>
<Check size={24} />
<span>Transaction Successful</span>
</motion.div>
) : (
<motion.span key="idle">Confirm Swap</motion.span>
)}
</AnimatePresence><motion.path
d={areaPath}
fill="url(#chartGradient)"
initial={{ pathLength: 0 }}
animate={{ pathLength: 1 }}
transition={{ duration: 1.5, ease: 'easeInOut' }}
/>| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm preview |
Preview production build |
pnpm lint |
Run ESLint |
The app is optimized for Telegram Mini App deployment:
- Build the project:
pnpm build - Upload the
dist/folder to your hosting - Configure Telegram Bot Web App URL in BotFather
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License
Copyright (c) 2024 Nova Crypto TWA
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Built with 💎 using React, Tailwind CSS, and Framer Motion
Showcase-ready crypto wallet for Telegram Mini Apps

