Skip to content

Krishcodes-awesomestuff/ezhumi

Repository files navigation

🌱 Ezhumi - Agriculture Hackathon Platform

Hack. Seek. Cultivate. - A modern, responsive landing page for agriculture hackathon events built with Next.js 14 and cutting-edge web technologies.

Ezhumi Hero

✨ Features

🎨 Modern Design & UX

  • Full-screen hero video with smooth autoplay and fallback handling
  • Responsive typography using CSS clamp() for optimal scaling
  • Smooth animations powered by Framer Motion with reduced-motion support
  • Vertical guide lines with subtle parallax effects
  • Dark overlay gradients ensuring WCAG color contrast compliance

🧭 Advanced Navigation

  • Active section detection with IntersectionObserver API
  • Smooth scrolling between sections with offset handling
  • Accessible side navigation with visual active indicators
  • Mobile-friendly drawer menu with focus trapping
  • Keyboard navigation throughout the entire interface

β™Ώ Accessibility First

  • WCAG 2.1 AA compliant color contrast ratios
  • Semantic HTML structure with proper heading hierarchy
  • ARIA labels and attributes for screen readers
  • Focus management with visible focus indicators
  • Reduced motion support for users with vestibular disorders

⚑ Performance Optimized

  • Next.js 14 with App Router for optimal performance
  • Static generation ready for fast deployment
  • Tailwind CSS v4 with minimal CSS bundle size
  • Optimized video loading with poster images and error handling
  • Lighthouse score: 95+ across all metrics

πŸš€ Quick Start

Prerequisites

  • Node.js 18.17 or later
  • npm, yarn, or pnpm package manager

Installation

# Clone the repository
git clone https://github.com/yourusername/ezhumi.git
cd ezhumi

# Install dependencies
npm install
# or
yarn install
# or
pnpm install

Development

# Start development server
npm run dev
# or
yarn dev
# or
pnpm dev

Open http://localhost:3000 in your browser to see the result.

Production Build

# Build for production
npm run build
npm start

# or
yarn build
yarn start

πŸ“ Project Structure

ezhumi/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ layout.tsx          # Root layout with Inter font
β”‚   β”‚   β”œβ”€β”€ page.tsx            # Main landing page
β”‚   β”‚   └── globals.css         # Tailwind v4 + custom CSS variables
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Hero.tsx            # Hero section with video background
β”‚   β”‚   β”œβ”€β”€ Navbar.tsx          # Top navigation bar
β”‚   β”‚   β”œβ”€β”€ SideNav.tsx         # Left navigation with active detection
β”‚   β”‚   β”œβ”€β”€ MenuDrawer.tsx      # Mobile menu drawer
β”‚   β”‚   β”œβ”€β”€ VerticalLines.tsx   # Grid overlay with parallax
β”‚   β”‚   └── Section.tsx         # Reusable section wrapper
β”‚   └── hooks/
β”‚       β”œβ”€β”€ useActiveSection.ts # IntersectionObserver hook
β”‚       └── useLockBody.ts      # Body scroll lock for modals
β”œβ”€β”€ public/
β”‚   └── media/
β”‚       β”œβ”€β”€ hero.mp4            # Main hero background video
β”‚       └── hero-poster.jpg     # Video poster/fallback image
β”œβ”€β”€ package.json
β”œβ”€β”€ tailwind.config.ts          # Tailwind CSS configuration
β”œβ”€β”€ tsconfig.json              # TypeScript configuration
└── next.config.js             # Next.js configuration

🎬 Video Assets

Required Files

Place your video assets in the public/media/ directory:

public/media/
β”œβ”€β”€ hero.mp4          # Main background video (required)
β”œβ”€β”€ hero-poster.jpg   # Poster image for video (recommended)
└── hero-poster.webp  # Optional WebP version for better compression

Video Specifications

  • Format: MP4 (H.264 codec) for maximum browser compatibility
  • Resolution: 1920Γ—1080 (Full HD) or higher for crisp display
  • Duration: 10-30 seconds for seamless looping
  • File Size: 2-5MB optimized for fast loading
  • Audio: Remove audio track (videos are muted by default)

Video Optimization Tips

# Using FFmpeg to optimize your video
ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow -vf "scale=1920:1080" -an hero.mp4

# Extract poster frame
ffmpeg -i hero.mp4 -ss 00:00:02 -vframes 1 hero-poster.jpg

🎨 Customization

CSS Variables

Edit src/app/globals.css to customize the design system:

@theme inline {
  /* Typography */
  --font-size-hero: clamp(2.75rem, 6vw, 7rem);
  --line-height-hero: 0.95;
  --font-size-tagline: clamp(1rem, 2vw, 1.5rem);
  --line-height-tagline: 1.4;
  
  /* Colors */
  --color-overlay: rgba(0, 0, 0, 0.35);
  --color-overlay-strong: rgba(0, 0, 0, 0.6);
}

Content Updates

Update the main content in src/app/page.tsx:

  • Event details in the About section
  • Challenge themes in the Themes section
  • Timeline dates in the Timeline section
  • FAQs in the FAQ section

Branding

  • Logo: Update Ezhumi text in src/components/Navbar.tsx
  • Colors: Modify Tailwind theme in tailwind.config.ts
  • Fonts: Change font family in src/app/layout.tsx

πŸ› οΈ Tech Stack

Technology Purpose Version
Next.js React framework with App Router 14.x
TypeScript Type-safe JavaScript 5.x
Tailwind CSS Utility-first CSS framework 4.x
Framer Motion Animation library 11.x
Lucide React Icon library Latest
Inter Font Typography via Google Fonts Latest

πŸ“± Responsive Breakpoints

Breakpoint Width Layout Changes
Mobile < 768px Stacked layout, drawer navigation
Tablet 768px - 1024px Hybrid layout, visible side nav
Desktop > 1024px Full grid layout, all elements visible

β™Ώ Accessibility Features

  • βœ… Keyboard Navigation: Tab through all interactive elements
  • βœ… Screen Reader Support: Semantic HTML and ARIA labels
  • βœ… Color Contrast: WCAG AA compliant text/background ratios
  • βœ… Focus Management: Visible focus indicators and logical tab order
  • βœ… Motion Reduction: Respects prefers-reduced-motion setting
  • βœ… Alternative Text: Descriptive alt text for images and videos

πŸš€ Deployment

Vercel (Recommended)

# Install Vercel CLI
npm i -g vercel

# Deploy to Vercel
vercel

# For production deployment
vercel --prod

Netlify

# Build the project
npm run build

# Deploy the 'out' folder to Netlify
# Enable static export in next.config.js if needed

Self-Hosted

# Build for production
npm run build

# Start production server
npm start

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use semantic commit messages
  • Ensure accessibility compliance
  • Test on multiple devices and browsers
  • Maintain performance scores above 90

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Design Inspiration: Modern agriculture and farming communities
  • Typography: Inter font family by Rasmus Andersson
  • Icons: Lucide icon library
  • Animations: Framer Motion animation library

πŸ“ž Support


Built with ❀️ for agriculture innovation

View Demo β€’ Report Bug β€’ Request Feature

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •