Proof of Stake is a playful web application showcasing a steak leaderboard for Devconnect 2025 Buenos Aires. The project was initially built with v0.dev and is a Next.js application featuring a visually striking design with steak-themed crypto terminology.
- Project Name: PROOF OF STAKE
- Purpose: Interactive steak leaderboard and submission platform for Devconnect 2025 Buenos Aires
- Initial Build: Generated with v0.dev
- v0 Chat: https://v0.app/chat/ofpcxOjYB4S
- Deployment: Vercel (auto-sync with v0.dev)
- Next.js 16.0.3 (App Router)
- React 19.2.0
- TypeScript 5.x
- Node.js: 24.10.0 (see
.nvmrc)
- Tailwind CSS 4.1.9 (latest version with oxide compiler)
- PostCSS with Tailwind CSS
- Custom animations via
tailwindcss-animate - CSS-in-JS for advanced effects (background-clip text effects)
- Radix UI: Comprehensive set of unstyled, accessible components
- Lucide React: Icon library
- shadcn/ui pattern: Components in
components/ui/ - Custom components for specific features
- React Hook Form with Zod resolvers
- Type-safe form validation
- next-themes: Theme management
- sonner: Toast notifications
- date-fns: Date manipulation
- recharts: Data visualization (if needed)
- Vercel Analytics: Analytics tracking
``` proofofstake-home/ ├── app/ │ ├── layout.tsx # Root layout with metadata │ ├── page.tsx # Homepage (main entry point) │ ├── globals.css # Global styles │ └── veggies/ │ └── page.tsx # Vegetarian alternative page ├── components/ │ ├── hero-section.tsx # Full-screen hero with image-text effect │ ├── steak-grid.tsx # Main steak leaderboard grid │ ├── veggie-section.tsx # CTA to veggie page │ ├── floating-actions.tsx # Fixed floating action buttons │ ├── footer.tsx # Site footer │ └── ui/ # Reusable UI components (shadcn/ui pattern) │ ├── button.tsx │ ├── card.tsx │ └── ... ├── public/ │ └── *.jpg # Steak and hero images ├── package.json ├── tsconfig.json ├── components.json # shadcn/ui configuration └── README.md ```
- Full-screen hero with animated text
- Key Effect: Uses
background-clip: textto create steak-image filled text - Background image:
/hero-steak-hd.jpg - Responsive typography using viewport units (
12vwto20vw) - Scroll indicator with bounce animation
- Displays 9 steak submissions in a 3-column grid
- Hover Interaction: Shows detailed info overlay on hover
- Each card includes:
- Rank badge (top-left)
- Vote count (top-right)
- Steak image with hover zoom
- Info overlay: name, location, submitter, timestamp
- State Management: Uses local
hoveredIdstate
```typescript interface SteakSubmission { id: number image: string name: string // e.g., "The Ethereal Ribeye" location: string // e.g., "Don Julio, Palermo" votes: number submittedBy: string // e.g., "vitalik.eth" timestamp: string // ISO date string } ```
- Fixed position floating buttons (bottom-right)
- Two buttons: Upload and Help
- Custom SVG icons
- Hover scale animation
- CTA section linking to
/veggiespage - Green gradient text effect
- Underline animation on hover
- Background: Black (
bg-black) - Accent Colors: Amber/orange tones (oklch color space)
- Green: For veggie section (gradient from
green-600togreen-400) - Theme: Dark mode focused
- Steak Shine: Class
steak-shine(likely defined inglobals.css) - Text Clipping: Using steak images as text fill via
background-clip: text - Drop Shadows: Multi-layer glows with amber tones
- Hover Animations: Scale transforms, opacity transitions
- Font: Geist Sans (primary), Geist Mono (monospace)
- Sizes: Extremely large responsive text (
text-6xltotext-8xl) - Weight: Heavy use of
font-black(900 weight) - Tracking: Tighter tracking with
tracking-tighter
```bash nvm use 24.10.0 # Use correct Node version pnpm install # Install dependencies pnpm dev # Start development server pnpm build # Production build ```
- Project auto-syncs with v0.dev deployments
- Changes from v0.dev are automatically pushed to repository
- Vercel deploys from repository updates
- Current: Local component state with
useState - No global state: Each component manages its own state
- Future consideration: If adding voting/submissions, consider state management library
- Static Data: Hardcoded steak submissions in
steak-grid.tsx - Images: Referenced from
/publicdirectory - No Backend: Currently no API calls or database
- PascalCase for component files:
HeroSection.tsx - Same name for export:
export function HeroSection()
- Crypto-themed puns: "Ethereal Ribeye", "Consensus Asado", "Proof of Wagyu"
- Byzantine/blockchain references: "Byzantine Strip", "Merkle Mignon"
- Format:
name.tld(e.g.,vitalik.eth,satoshi.btc,staker.sol)
- Uses
'use client'directive for interactive components - Image optimization could be improved (currently using
<img>instead of<Image>) - Responsive design with mobile-first approach
- ARIA labels on floating action buttons
- Semantic HTML structure
- Radix UI components provide accessible primitives
- Backend Integration: Add actual voting and submission functionality
- Image Optimization: Replace
<img>with Next.js<Image>component - Authentication: Web3 wallet integration for submissions
- Real-time Updates: WebSocket for live vote counts
- Upload Modal: Implement the floating upload button functionality
- Filtering/Sorting: Add controls for leaderboard view
app/layout.tsx: Global metadata and SEO configurationapp/globals.css: Global styles and custom CSS classescomponents.json: shadcn/ui configuration for component generationtsconfig.json: TypeScript configuration with path aliases (@/*).nvmrc: Node version specification (24.10.0)
- Bold and Playful: Large text, vibrant interactions
- Crypto Culture: Blockchain terminology mixed with steak culture
- Buenos Aires Vibes: Highlighting famous parrillas and locations
- Community-Driven: Focus on voting and user submissions
When making changes:
- Maintain the playful crypto + steak theme
- Keep the bold, high-contrast visual style
- Ensure responsive design (mobile to desktop)
- Test hover states and animations
- Consider accessibility in interactive elements
- Follow existing component patterns from shadcn/ui
Edit components/steak-grid.tsx and add to the steakSubmissions array.
```bash
npx shadcn@latest add [component-name] ```
- Global styles:
app/globals.css - Component styles: Inline Tailwind classes
- Custom animations: Define in Tailwind config or globals.css
Last Updated: 2025-11-17 Project Status: Active development Original Generator: v0.dev