Own the Pixel. Steer the Future. - A modern, responsive web portal for the Nouns DAO ecosystem, built with cutting-edge web technologies and blockchain integration.
NounsNet Portal is a comprehensive decentralized application (dApp) that serves as the primary interface for interacting with the Nouns DAO ecosystem. The application provides seamless access to:
- Live Auction System: Real-time bidding on unique Nouns NFTs
- Governance Portal: Proposal creation, voting, and DAO management
- Wallet Integration: Secure MetaMask connection and transaction handling
- Network Configuration: Customizable RPC and Graph API endpoints
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend Layer β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β React β β TypeScript β β Tailwind CSSβ β
β β Components β β Types β β Styling β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β State Management β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β React Hooks β β LocalStorageβ β Context β β
β β Custom β β Persistence β β Providers β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Blockchain Integration β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Ethers.js β β MetaMask β β Graph API β β
β β Web3 Client β β Wallet β β Indexing β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β External Services β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Ethereum β β Nouns API β β IPFS/CDN β β
β β Network β β Endpoints β β Assets β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- React 18+: Modern React with Concurrent Features, Suspense, and latest hooks
- TypeScript 5.0+: Full type safety, enhanced developer experience, and robust error handling
- Vite 5.0+: Lightning-fast build tool with HMR and optimized production builds
- Tailwind CSS 3.4+: Utility-first CSS framework with custom Nouns theme
- Framer Motion: Smooth animations and micro-interactions
- Lucide React: Beautiful, customizable icon library
- Custom Design System: Nouns-branded color palette and typography
- Ethers.js 6.0+: Ethereum blockchain interaction and smart contract integration
- MetaMask Provider: Secure wallet connection and transaction signing
- The Graph Protocol: Decentralized indexing for blockchain data
- Custom RPC Support: Configurable network endpoints
- React Context: Global application state management
- Custom Hooks: Reusable business logic and data fetching
- LocalStorage: Persistent user preferences and wallet state
- Real-time Updates: Live data synchronization with blockchain
- ESLint: Code quality and consistency enforcement
- PostCSS: CSS processing and optimization
- TypeScript Compiler: Type checking and compilation
- Vite DevServer: Hot module replacement and fast development
Nouniverse/
βββ π public/ # Static assets and metadata
β βββ vite.svg # Default Vite favicon
β βββ index.html # Main HTML template
βββ π src/ # Source code directory
β βββ π assets/ # Static assets and images
β β βββ head-earth.png # Favicon and logo assets
β β βββ noun-*.png # Noun character images
β β βββ π Noggles/ # Noggles glasses collection
β β βββ 0-glasses-hip-rose.png
β β βββ 1-glasses-square-black.svg
β β βββ ... (40+ variations)
β βββ π components/ # Reusable React components
β β βββ Navigation.tsx # Header navigation with mobile menu
β β βββ NounDisplay.tsx # 3D Noun showcase component
β β βββ ThemeToogle.tsx
β βββ π pages/ # Main application pages
β β βββ HomePage.tsx # Landing page with hero section
β β βββ AuctionPage.tsx # Live auction interface
β β βββ ProposalsPage.tsx # DAO governance portal
β β βββ SettingsPage.tsx # User configuration panel
β β βββNotFoundPage.tsx
β βββ π hooks/ # Custom React hooks
β β βββ useAuctionBids.ts # Auction data management
β β βββ useNounData.ts # Noun metadata fetching
β β βββ useNounTraits.ts # Trait data processing
β β βββ useGraph.ts # Graph API integration
β β βββ ...
β βββ π lib/ # Utility libraries
β β βββ ether.ts # Ethereum provider setup
β β βββ graph.ts # GraphQL query handling
β β βββ contracts #Logical Functions form Nouns
β βββ π config/ # Configuration files
β β βββ endpoint.tsx # RPC and API endpoint management
β βββ App.tsx # Main application component
β βββ main.tsx # Application entry point
β βββ index.css # Global styles and Tailwind imports
βββ π configuration files # Build and development configuration
β βββ package.json # Dependencies and scripts
β βββ tsconfig.json # TypeScript configuration
β βββ tailwind.config.js # Tailwind CSS customization
β βββ vite.config.ts # Vite build configuration
β βββ eslint.config.js # ESLint rules and settings
β βββ postcss.config.js # PostCSS plugin configuration
βββ README.md # This documentation file
- Node.js: Version 18+ (LTS recommended)
- npm: Version 9+ (comes with Node.js)
- MetaMask: Browser extension for wallet integration
- Git: For version control and cloning
-
Clone the repository
git clone https://github.com/your-username/nounsnet-portal.git cd nounsnet-portal -
Install dependencies
npm install
-
Environment Setup
# Copy environment template cp .env.example .env.local # Configure your environment variables nano .env.local
-
Start development server
npm run dev
-
Open application
Navigate to: http://localhost:5173
# Development
npm run dev # Start development server with HMR
npm run build # Build for production
npm run preview # Preview production build locally
# Code Quality
npm run lint # Run ESLint for code quality check
npm run type-check # Run TypeScript type checking
# Utilities
npm run clean # Clean build artifacts
npm run analyze # Analyze bundle sizeCreate a .env.local file with the following configuration:
# Ethereum Network Configuration
VITE_ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID
VITE_ETHEREUM_CHAIN_ID=1
# The Graph API Configuration
VITE_GRAPH_API_URL=https://api.thegraph.com/subgraphs/name/nounsdao/nouns-subgraph
# Nouns Contract Addresses
VITE_NOUNS_TOKEN_ADDRESS=0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03
VITE_NOUNS_AUCTION_ADDRESS=0x830BD73E4184ceF73443C15111a1DF14e495C706
VITE_NOUNS_DAO_ADDRESS=0x6f3E6272A167e8AcCb32072d08E0957F9c79223d
# Application Configuration
VITE_APP_NAME=NounsNet Portal
VITE_APP_VERSION=1.0.0The application supports custom RPC and Graph API endpoints through the Settings page:
- Ethereum RPC: Configure custom Ethereum node endpoints
- Graph API: Set custom subgraph endpoints for data indexing
- Connection Testing: Real-time endpoint validation and status indicators
Custom Nouns-themed design system defined in tailwind.config.js:
module.exports = {
theme: {
extend: {
colors: {
'nouns-red': '#E1282E',
'nouns-blue': '#4C82FB',
'nouns-green': '#00D395',
'nouns-yellow': '#FFCC02',
'nouns-grey': '#F3F4F6',
'nouns-dark-grey': '#6B7280',
'nouns-text': '#1F2937',
'nouns-bg': '#FFFFFF'
},
fontFamily: {
'londrina': ['Londrina Solid', 'cursive'],
'pixel': ['Press Start 2P', 'monospace'],
'inter': ['Inter', 'sans-serif']
}
}
}
}- Real-time Bidding: Live auction interface with countdown timers
- Bid History: Complete bidding history with bidder identification
- Wallet Integration: Secure MetaMask connection for placing bids
- Noun Visualization: 3D Sketchfab integration for Noun display
- Trait Analysis: Detailed breakdown of Noun characteristics
- Proposal Viewing: Browse all DAO proposals with filtering
- Voting Interface: Cast votes on active proposals
- Proposal Creation: Submit new proposals to the DAO
- Delegation: Manage voting power delegation
- Execution Tracking: Monitor proposal execution status
- MetaMask Integration: Seamless wallet connection
- Multi-network Support: Switch between Ethereum networks
- Balance Tracking: Real-time ETH and token balance display
- Transaction History: View past interactions
- Security Features: Secure transaction signing
- Network Configuration: Custom RPC and Graph API endpoints
- Connection Testing: Real-time endpoint validation
- Profile Management: User preferences and display settings
- Notification Settings: Customize alert preferences
- Theme Customization: Appearance and accessibility options
The application interacts with several key Nouns DAO smart contracts:
// Contract Addresses (Mainnet)
const CONTRACTS = {
NounsToken: '0x9C8fF314C9Bc7F6e59A9d9225Fb22946427eDC03',
NounsAuctionHouse: '0x830BD73E4184ceF73443C15111a1DF14e495C706',
NounsDAOProxy: '0x6f3E6272A167e8AcCb32072d08E0957F9c79223d',
NounsDescriptor: '0x0Cfdb3Ba1694c2bb2CFACB0339ad7b1Ae5932B63'
};- Auction House: Real-time bidding and auction management
- DAO Governance: Proposal creation, voting, and execution
- Token Contract: Noun ownership and transfer tracking
- Descriptor: Trait generation and metadata retrieval
Efficient blockchain data indexing using The Graph:
query AuctionData($nounId: String!) {
auction(id: $nounId) {
id
nounId
amount
startTime
endTime
bidder
settled
bids(orderBy: amount, orderDirection: desc) {
id
bidder {
id
tokenBalance
}
amount
blockTimestamp
}
}
}- Mobile-First Approach: Optimized for mobile devices first
- Touch-Friendly Interface: Minimum 44px touch targets
- Responsive Navigation: Hamburger menu with smooth animations
- Adaptive Typography: Scales from mobile to desktop
- Performance Optimized: Reduced animations on mobile devices
- Mobile: 320px - 767px (sm breakpoint)
- Tablet: 768px - 1023px (md breakpoint)
- Desktop: 1024px+ (lg breakpoint)
- Large Desktop: 1280px+ (xl breakpoint)
- TypeScript: 100% type coverage for enhanced reliability
- ESLint: Consistent code style and error prevention
- Prettier: Automated code formatting
- Husky: Pre-commit hooks for quality assurance
- Bundle Analysis: Vite bundle analyzer for optimization
- Lighthouse Scores: Web performance monitoring
- Core Web Vitals: User experience metrics tracking
- Memory Usage: React DevTools profiling
- Modern Browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Mobile Browsers: iOS Safari 14+, Android Chrome 90+
- Web3 Support: MetaMask, WalletConnect
# Build for production
npm run build
# Preview production build
npm run preview
# Analyze bundle size
npm run analyze
#Then uploaded to
pinme upload dist/The application is optimized for deployment on:
- IPFS: Decentralized hosting for Web3 applications
- PinMe Used as tool for IPFS hosting and ENS binding
Production deployment requires:
- Environment Variables: Configure all required API keys
- Build Optimization: Enable production optimizations
- HTTPS: Secure connection for MetaMask integration
- CDN: Asset optimization and global distribution
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open Pull Request
- TypeScript: Strict type checking enabled
- ESLint: Follow project linting rules
- Prettier: Use automated formatting
- Conventional Commits: Follow commit message standards
- Update documentation for new features
- Add tests for new functionality
- Ensure all tests pass
- Update CHANGELOG.md
- Request review from maintainers
This project is licensed under the MIT License - see the LICENSE file for details.
- Nouns DAO: For creating the innovative NFT and governance ecosystem
- Ethereum Foundation: For the robust blockchain infrastructure
- React Team: For the powerful component framework
- Vite Team: For the blazing-fast build tool
- Tailwind CSS: For the utility-first styling approach
Built with β€οΈ for the Nouns community