Skip to content

neuralbroker/zeviewer

Repository files navigation

Zeviewer

AI model reviews. Public. No login required for reading. Users can write reviews after signing in.


Tech Stack

  • Framework: Next.js 14 (App Router, static export)
  • Language: TypeScript
  • Styling: TailwindCSS
  • Database: Supabase (PostgreSQL)
  • Auth: Supabase Auth (email/password)
  • Models data: Curated list + HuggingFace trending (auto-updated via script)

Features

  • 1100+ AI models (900 curated, 200 from HuggingFace)
  • Filter by company (OpenAI, Anthropic, Meta, DeepSeek, etc.)
  • Filter by category (language, multimodal, reasoning, image, video, audio, code)
  • Fuzzy search with typo tolerance
  • Star ratings (1-5) with written reviews
  • Community-submitted models
  • Open source badges on models
  • Responsive design for mobile and desktop

Prerequisites

  • Node.js 18 or later
  • Python 3.8+ (for running the model update script)
  • A Supabase project (free tier works)

Installation

git clone https://github.com/neuralbroker/zeviewer.git
cd zeviewer
npm install

Database Setup

  1. Create a project at supabase.com

  2. Go to SQL Editor and run:

CREATE TABLE reviews (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    user_id UUID REFERENCES auth.users(id) DEFAULT auth.uid(),
    model_id INTEGER NOT NULL,
    model_name TEXT NOT NULL,
    company TEXT NOT NULL,
    rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5),
    reviewer_name TEXT,
    performance_review TEXT NOT NULL,
    improvement_suggestions TEXT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

CREATE TABLE user_models (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    user_id UUID REFERENCES auth.users(id) DEFAULT auth.uid(),
    name TEXT NOT NULL,
    company TEXT NOT NULL,
    category TEXT NOT NULL,
    description TEXT NOT NULL,
    is_open_source BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

ALTER TABLE reviews ENABLE ROW LEVEL SECURITY;
ALTER TABLE user_models ENABLE ROW LEVEL SECURITY;

CREATE POLICY reviews_read ON reviews FOR SELECT USING (true);
CREATE POLICY reviews_insert ON reviews FOR INSERT WITH CHECK (auth.role() = 'authenticated');
CREATE POLICY user_models_read ON user_models FOR SELECT USING (true);
CREATE POLICY user_models_insert ON user_models FOR INSERT WITH CHECK (auth.role() = 'authenticated');
  1. Enable Email provider in Authentication -> Providers

Environment Variables

Create a .env.local file in the project root:

Variable Description Example
NEXT_PUBLIC_SUPABASE_URL Your Supabase project URL https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY Supabase anonymous (public) key eyJhbGciOi...

Find these in Supabase under Settings -> API.


Usage

Development

npm run dev

Open http://localhost:3000

Production build

npm run build

Output goes to out/ as static files. Deploy this folder to Vercel, Netlify, or any static host.

Update trending models from HuggingFace

py scripts/fetch_models.py
git add src/data/trending_models.json
git commit -m 'Update trending models'
git push

Project Structure

zeviewer/
├── public/                  # Static files served as-is
│   ├── favicon.svg          # Site icon
│   ├── robots.txt           # Search engine directives
│   └── sitemap.xml          # SEO sitemap
├── src/
│   ├── app/                 # Next.js pages and layouts
│   │   ├── page.tsx         # Main page (all components in one file)
│   │   ├── layout.tsx       # Root layout with metadata
│   │   ├── loading.tsx      # Loading skeleton
│   │   ├── globals.css      # Global styles and animations
│   │   ├── privacy-policy/  # Privacy Policy page
│   │   └── terms-of-service/# Terms of Service page
│   ├── data/                # Static model data
│   │   ├── models.ts        # 900 curated AI models
│   │   └── trending_models.json # 200 trending from HuggingFace
│   └── lib/
│       └── supabase.ts      # Supabase client setup
├── scripts/
│   └── fetch_models.py      # Fetches trending models from HuggingFace
├── next.config.js           # Next.js configuration (static export)
├── tailwind.config.js       # TailwindCSS configuration
├── tsconfig.json            # TypeScript configuration
└── package.json             # Dependencies and scripts

Contributing

  1. Fork the repository
  2. Create a branch: git checkout -b fix/something
  3. Make your changes
  4. Test with npm run build
  5. Push and open a pull request

License

MIT

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors