Lumina is a powerful, beautiful, and brutally honest multi-chain crypto portfolio tracker. Track your assets, view analytics, and monitor your transaction history across major blockchainsโall in one place.
- Unlimited wallet tracking
- Real-time price feeds
- Advanced portfolio analytics
- Multi-chain support (Solana, Bitcoin, Ethereum, Polygon, Sui, Arbitrum, and more)
- Mobile-friendly responsive design
- Smart notifications (coming soon)
- Export capabilities
frontend/
app/ # Next.js pages/routes
components/ # Reusable React components
hooks/ # Custom React hooks for data fetching
pages/api/ # API routes (e.g., price fetchers)
public/ # Static assets (images, icons)
Below is a high-level overview of how data flows through Lumina:
flowchart TD
A[User Connects Wallet] --> B[WalletContextProvider]
B --> C[Wallet State: publicKey, connection]
C --> D[useTokenBalances]
D -->|Solana RPC| E[Token Balances]
C --> F[useTransactionHistory]
F -->|Helius API| G[Transaction History]
D --> H[useTokenPrices]
H -->|/api/cmc-prices| I[Token Prices]
D --> J[useTokenPriceHistory]
J -->|Coingecko API| K[Token Price History]
D --> L[useTokenList]
L -->|Solana Token List CDN| M[Token Metadata]
E --> N[TokenBalances Component]
I --> N
M --> N
E --> O[PortfolioAnalytics Component]
I --> O
K --> O
M --> O
G --> P[TransactionHistory Component]
M --> P
N --> Q[Portfolio Page]
O --> Q
P --> R[History Page]
A -.->|If not connected| S[LandingPage]
style S fill:#ffe066,stroke:#000,stroke-width:2px
style Q fill:#f6f6f6,stroke:#000,stroke-width:2px
style R fill:#f6f6f6,stroke:#000,stroke-width:2px
- Wallet Connection: User connects their wallet. The app stores wallet state (publicKey, connection) using
WalletContextProvider. - Data Fetching: Custom hooks fetch token balances, prices, price history, and transaction history using the wallet state.
- Data Consumption: Components like
TokenBalances,PortfolioAnalytics, andTransactionHistoryconsume this data and render the UI. - Reactive Updates: If the wallet changes, all dependent data updates automatically.
- Install dependencies:
cd frontend npm install - Set up environment variables:
- Create a
.env.localfile infrontend/with your API keys (e.g.,NEXT_PUBLIC_HELIUS_API_KEY,NEXT_PUBLIC_HELIUS_RPC_URL).
- Create a
- Run the development server:
npm run dev
- Open http://localhost:3000 in your browser.
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
MIT