A React application showcasing NounsDAO real-time auctions and historical data, fully meeting the project requirements.
Implementing the core functionality required by the project:
Mission: Display today's live auction countdown AND render a gallery of 5 past Nouns with their winning bid history.
- Real-time Countdown: Precise display of remaining auction time
- Dynamic Bid Updates: Simulated real-time bid stream
- Auction Status Monitoring: Automatic detection of auction end
- Urgency Indicators: Red warning for final 5 minutes
- 5 Recent Auctions: Display of most recently completed Noun auctions
- Winning Bid History: Complete bidding records for each Noun
- Participant Statistics: Bid counts, participant numbers, and other data
- Transaction Price Display: Final transaction amounts and winners
- Seed-driven Generation: SVG image generation based on 5 traits
- Pixel Art Style: Maintains Nouns' unique visual style
- Responsive Sizing: Supports small/medium/large three sizes
- Trait Information Display: Shows background, body, accessory, and other traits
- React 18 + TypeScript - Modern frontend framework
- Vite - Fast build tool
- Tailwind CSS - Utility-first CSS framework
- Apollo Client - GraphQL data management (architecture support)
- Date-fns - Date manipulation library
npm install
# or
yarn install
# or
pnpm installnpm run dev
# or
yarn dev
# or
pnpm devnpm run build
# or
yarn build
# or
pnpm buildsrc/
βββ components/ # React components
β βββ NounImage.tsx # Noun image component
β βββ AuctionCountdown.tsx # Auction countdown
β βββ CurrentAuction.tsx # Current auction display
β βββ HistoricalGallery.tsx # Historical gallery
β βββ AuctionCard.tsx # Auction card
β βββ BidHistory.tsx # Bid history
β βββ LoadingSpinner.tsx # Loading states
βββ hooks/ # Custom hooks
β βββ useAuctionData.ts # Auction data hooks
βββ lib/ # Utility libraries
β βββ constants.ts # Constants configuration
β βββ graphql.ts # GraphQL queries
β βββ utils.ts # Utility functions
βββ types/ # Type definitions
β βββ index.ts # Core types
βββ App.tsx # Main application component
- Nouns Brand Colors: Using official yellow, red, blue, green
- Gradient Background: Cool/Warm dual-color gradient background
- Card-based Layout: Modern card design
- Pixel Art Support: Dedicated CSS classes for pixel art rendering
- Real-time Updates: Simulated WebSocket real-time data updates
- Animation Effects: Card hover, loading animations, etc.
- Responsive Design: Perfect adaptation for mobile and desktop
- Loading States: Graceful skeleton loading effects
Since this is a demonstration project, it uses simulated data:
- Dynamically generated active auction
- Simulated real-time bid updates
- Real countdown logic
- 5 simulated historical auctions
- Randomly generated bid records
- Real timestamps and block information
- Seed-based SVG generation
- 5 traits: background, body, accessory, head, glasses
- Simplified pixel art rendering
export const CURRENT_NETWORK = NETWORKS.MAINNET; // Currently using mainnetexport const UI = {
GALLERY_SIZE: 5, // Gallery display count
COUNTDOWN_UPDATE_INTERVAL: 1000, // Countdown update interval
AUCTION_QUERY_INTERVAL: 30000, // Data query interval
};- β Display today's live auction countdown
- β Render gallery of 5 historical Nouns
- β Show winning bid history
- β Real-time data updates
- TypeScript Support: Complete type safety
- Modular Design: Reusable component architecture
- Performance Optimization: Reasonable state management and update strategies
- Error Handling: Complete error boundaries and fallback strategies
- Intuitive Interface: Clear information hierarchy
- Real-time Feedback: Dynamic status updates
- Mobile Friendly: Responsive design
- Loading Optimization: Graceful loading states
- Connect to official NounsDAO subgraph
- Implement WebSocket real-time updates
- Add Web3 wallet connectivity
- Auction participation functionality
- Advanced filtering and search
- Data export features
- Price trend charts
This project is a practical application for Course 3, demonstrating all technologies learned from Units 3.1-3.5:
- API Architecture - Modular data query design
- Indexing System - Simulating Ponder.sh data structures
- Real-time Queries - WebSocket simulation and state management
- Historical Queries - Pagination and batch data processing
- Image System - Noun SVG generation and caching
This is an educational project. Suggestions for improvements and feature extensions are welcome!
MIT License - Feel free to use this project for learning and development purposes.