A minimal, evidence-driven directory of AI video-ad tools and promo deals, where every claim is backed by a YouTube timestamp "receipt".
- Next.js 14 (App Router)
- React 18
- TypeScript
- Tailwind CSS
- Radix UI (for accessible components)
ai-video-ads-hub/
├── app/ # Next.js App Router pages
│ ├── layout.tsx # Root layout with Header/Footer
│ ├── page.tsx # Homepage
│ ├── tools/ # Tools list pages
│ ├── deals/ # Deals list pages
│ ├── tool/[id]/ # Dynamic tool detail pages
│ └── methodology/ # Methodology page
├── components/
│ ├── ui/ # Base UI components (Button, Badge, etc.)
│ └── features/ # Feature-specific components (Header, Footer)
├── lib/
│ ├── data/ # Mock data (will connect to Supabase later)
│ ├── types/ # TypeScript type definitions
│ └── utils.ts # Utility functions
└── public/ # Static assets
- Node.js 18+ installed
- Git installed
- (Optional) Vercel account for deployment
npm installnpm run devOpen http://localhost:3000 in your browser.
npm run build
npm start# Initialize git repository (if not already done)
git init
# Add all files
git add .
# Commit with descriptive message
git commit -m "Initial Next.js implementation with design system
- Set up Next.js 14 with App Router
- Implement design system (Button, Badge, Container, Tabs)
- Create homepage with tools/deals preview and categories
- Add tools list page
- Add deals list page
- Add tool detail page with Reviews/Deals tabs
- Implement Header/Footer with consistent layout
- Add mock data structure
- Configure TypeScript and Tailwind CSS"
# Add remote repository (replace with your repo URL)
git remote add origin https://github.com/yourusername/AI-tools.git
# Push to main branch
git push -u origin mainFor future development, use feature branches:
# Create a new feature branch
git checkout -b feature/add-filters
# Make changes, then commit
git add .
git commit -m "Add filter functionality to tools page"
# Push to remote
git push origin feature/add-filters
# Create pull request on GitHub- Go to vercel.com
- Click "Add New Project"
- Import your GitHub repository
- Vercel will auto-detect Next.js settings
- Click "Deploy"
That's it! Vercel will automatically deploy on every push to main.
# Install Vercel CLI
npm install -g vercel
# Login to Vercel
vercel login
# Deploy (follow prompts)
vercel
# Deploy to production
vercel --prod- Design system foundation (tokens, components)
- Next.js App Router structure
- Root layout with Header/Footer
- Homepage with tools/deals preview
- Tools list page
- Deals list page
- Tool detail page (Reviews/Deals tabs)
- Methodology page
- Responsive design
- Mock data structure
- TypeScript types
- Filters and search functionality
- Category-specific pages (SEO)
- Report modal functionality
- Copy code button
- Loading states and skeletons
- Empty states
- Sort functionality
- Supabase integration
- Contact, Privacy, Terms pages
- Container width: Fixed at 1200px max-width across all pages
- Padding: 24px (desktop), 16px (mobile)
- Header: Consistent sticky header on all pages
- Primary blue:
#2563eb(blue-600) - Grays: System grays (50-900)
- Semantic colors: Green (Pro), Red (Con), Blue (neutral emphasis)
- Font: Inter (system font stack)
- Headings: Bold, gray-900
- Body: Regular, gray-600/900
- Button variants: primary, secondary, ghost
- Badge variants: neutral, blue, pro, con
- Responsive: Mobile-first approach
-
Test the current implementation
- Run
npm run dev - Check all pages render correctly
- Test responsive behavior
- Run
-
Deploy to Vercel
- Connect GitHub repository
- Verify production build works
-
Phase 2 Development
- Add filters and search
- Implement category pages
- Add Report modal
- Connect to Supabase
-
Iterative Improvements
- Gather feedback
- Refine mobile layouts
- Add animations
- Optimize performance
If you encounter build errors:
# Clear cache and reinstall
rm -rf .next node_modules
npm install
npm run buildEnsure TypeScript is properly configured:
# Check TypeScript
npx tsc --noEmitNext.js requires image domains to be configured. If using external images, add to next.config.js:
images: {
remotePatterns: [
{
protocol: 'https',
hostname: '**',
},
],
}For questions or issues, refer to the project documentation in /docs or create an issue in the GitHub repository.