Objective
Create a production-ready web application that allows users to interact with deployed SplitStream contracts through an intuitive, user-friendly interface. This frontend will serve as the primary way non-technical users manage their payment splitters.
Problem Statement
Currently, users must interact with SplitStream contracts via:
- Command-line scripts (technical barrier)
- Direct Etherscan interaction (poor UX)
- Custom integration code (requires development skills)
This limits adoption to technical users and developers. We need a consumer-facing interface that makes SplitStream accessible to DAOs, teams, and creators without blockchain development expertise.
Proposed Solution
Technology Stack
- Framework: Next.js 14 (App Router) with TypeScript
- Styling: Tailwind CSS + shadcn/ui components
- Web3 Integration: wagmi v2 + viem
- Wallet Connection: RainbowKit or ConnectKit
- State Management: React Context + Zustand (for complex state)
- Charts/Visualization: Recharts or Chart.js
- Deployment: Vercel
Core Features
. Contract Discovery & Connection
- Connect wallet (Coinbase Wallet, MetaMask, WalletConnect)
- Auto-detect user's deployed SplitStream contracts
- Manual contract address input with validation
- Network switching (Base mainnet/testnet)
- Contract verification status display
. Dashboard Overview
- Total contract balance (ETH)
- Total shares distribution (pie chart)
- Total released vs pending amounts
- Recent payment activity timeline
- Quick action buttons (Send, Release, Monitor)
. Payee Management View
- List all payees with:
- Address (with ENS resolution)
- Share percentage
- Total released amount
- Pending releasable amount
- Last withdrawal timestamp
- Individual payee detail pages
- Payee contact information (off-chain, optional)
. Payment Operations
. Analytics & Reporting
- Payment history table (filterable, exportable)
- Distribution charts over time
- Average time to withdrawal metrics
- Gas cost analytics
- Export to CSV/JSON for accounting
. Contract Deployment Wizard
- Step-by-step deployment flow:
- Enter payee addresses (with validation)
- Set share percentages (real-time pie chart)
- Review and confirm
- Deploy transaction
- Verification and setup
- Save deployment configurations
- Share deployment link with team
Design Requirements
- Mobile-responsive (works on all screen sizes)
- Accessibility (WCAG 2.1 AA compliant)
- Dark/Light mode toggle
- Real-time updates via WebSocket or polling
- Loading states for all async operations
- Error handling with user-friendly messages
- Transaction notifications (success, pending, failed)
User Flows
New User Flow:
- Land on homepage → Connect wallet
- No contracts detected → "Deploy New Contract" CTA
- Deployment wizard → Contract created
- Redirected to dashboard → See contract details
Existing User Flow:
- Connect wallet → Auto-detect contracts
- Select contract from list
- Dashboard shows current state
- Perform operations (send, release, monitor)
Payee Flow:
- Receive link to contract dashboard
- Connect wallet
- See personal share and pending amount
- One-click release funds
Technical Implementation Details
Project Structure
frontend/
├── app/
│ ├── (dashboard)/
│ │ ├── layout.tsx
│ │ ├── page.tsx # Main dashboard
│ │ ├── deploy/page.tsx # Deployment wizard
│ │ ├── [address]/ # Contract-specific pages
│ │ │ ├── page.tsx # Contract overview
│ │ │ ├── payees/page.tsx # Payee management
│ │ │ ├── analytics/page.tsx # Analytics
│ │ │ └── settings/page.tsx # Contract settings
│ ├── api/ # API routes (if needed)
│ ├── layout.tsx # Root layout
│ └── page.tsx # Landing page
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── contract/ # Contract-specific components
│ ├── wallet/ # Wallet connection
│ └── shared/ # Shared components
├── hooks/
│ ├── useContract.ts # Contract interaction hooks
│ ├── useBalance.ts
│ └── useEvents.ts
├── lib/
│ ├── wagmi.ts # wagmi configuration
│ ├── contracts.ts # Contract ABIs and addresses
│ └── utils.ts # Utilities
└── styles/
└── globals.css # Global styles
Integration with Existing Codebase
- Import contract ABIs from
artifacts/
- Use deployment addresses from scripts
- Link to documentation from UI
- Integrate with existing monitoring scripts
Acceptance Criteria
Phase 1: MVP (Essential Features)
Phase 2: Enhanced UX
Phase 3: Advanced Features
Testing Requirements
Documentation
Success Metrics
- Dashboard loads in < 2 seconds
- Transaction confirmation in < 5 seconds (Base network)
- 95%+ uptime when deployed
- Mobile responsive (works on screens 320px+)
- Lighthouse score: 90+ for Performance, Accessibility, Best Practices
Out of Scope (Future Enhancements)
- Multi-contract management dashboard
- Notifications (email/push)
- Advanced analytics (AI-powered insights)
- Integration with accounting software
- Mobile native app
Objective
Create a production-ready web application that allows users to interact with deployed SplitStream contracts through an intuitive, user-friendly interface. This frontend will serve as the primary way non-technical users manage their payment splitters.
Problem Statement
Currently, users must interact with SplitStream contracts via:
This limits adoption to technical users and developers. We need a consumer-facing interface that makes SplitStream accessible to DAOs, teams, and creators without blockchain development expertise.
Proposed Solution
Technology Stack
Core Features
. Contract Discovery & Connection
. Dashboard Overview
. Payee Management View
. Payment Operations
Send Payment Interface:
Release Payment Interface:
. Analytics & Reporting
. Contract Deployment Wizard
Design Requirements
User Flows
New User Flow:
Existing User Flow:
Payee Flow:
Technical Implementation Details
Project Structure
frontend/
├── app/
│ ├── (dashboard)/
│ │ ├── layout.tsx
│ │ ├── page.tsx # Main dashboard
│ │ ├── deploy/page.tsx # Deployment wizard
│ │ ├── [address]/ # Contract-specific pages
│ │ │ ├── page.tsx # Contract overview
│ │ │ ├── payees/page.tsx # Payee management
│ │ │ ├── analytics/page.tsx # Analytics
│ │ │ └── settings/page.tsx # Contract settings
│ ├── api/ # API routes (if needed)
│ ├── layout.tsx # Root layout
│ └── page.tsx # Landing page
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── contract/ # Contract-specific components
│ ├── wallet/ # Wallet connection
│ └── shared/ # Shared components
├── hooks/
│ ├── useContract.ts # Contract interaction hooks
│ ├── useBalance.ts
│ └── useEvents.ts
├── lib/
│ ├── wagmi.ts # wagmi configuration
│ ├── contracts.ts # Contract ABIs and addresses
│ └── utils.ts # Utilities
└── styles/
└── globals.css # Global styles
Integration with Existing Codebase
artifacts/Acceptance Criteria
Phase 1: MVP (Essential Features)
Phase 2: Enhanced UX
Phase 3: Advanced Features
Testing Requirements
Documentation
Success Metrics
Out of Scope (Future Enhancements)