Scrutin is a web application designed to perform comprehensive Website SEO and Auditing, generating detailed insights using the Google Generative AI (Gemini). It features user authentication, a dashboard to manage audits, real-time website scraping using Puppeteer, and PDF report generation.
- Website Auditing: Perform in-depth SEO, accessibility, and performance audits.
- AI-Powered Insights: Integrates
@google/generative-aito generate actionable recommendations based on website audits. - Web Scraping: Built-in website fetching and parsing utilizing
puppeteerandnode-html-parser. - User Authentication: Secure signup and login workflows utilizing NextAuth v5 (Beta) and
bcryptjswith Prisma Adapaters. - PDF Generation: Export robust audit reports to PDF using
@react-pdf/renderer. - Modern Dashboard: Manage previous website audits comfortably in an authenticated dashboard area.
- Form Management & Validation: Type-safe forms built with
react-hook-formandzod. - Dark Mode Support: Themed with
next-themesand styled beautifully using Tailwind CSS and Radix UI primitives.
- Framework: Next.js 14 (App Router)
- UI Library: React 18
- Styling: Tailwind CSS, class-variance-authority, clsx, tailwind-merge
- Components: Radix UI (Accordion, Progress, Slot, Switch) + Lucide Icons
- Database & ORM: Prisma
- Authentication: NextAuth.js v5 Beta
- AI Engine: Google Gemini API (
@google/generative-ai) - Web Parsing/Scraping: Puppeteer, node-html-parser
- PDF Generation: @react-pdf/renderer
scrutin/
├── app/ # Next.js App Router Next.js pages
│ ├── (auth)/ # Authentication routes (login, register)
│ ├── (dashboard)/ # Dashboard & history
│ ├── api/ # API endpoints (Gemini, fetching, etc)
│ ├── audit/ # Core auditing logic and UI
│ ├── reset-password/ # Password reset flow
│ └── ...
├── components/ # Reusable UI React components
├── lib/ # Utility functions
├── prisma/ # Prisma ORM schema and migrations
├── public/ # Static assets
└── types/ # TypeScript definitionsMake sure you have Node.js (v20+) and your preferred package manager (npm, yarn, or pnpm) installed.
git clone git@github.com:UserAkku/scrutin.git
cd scrutinnpm install
# or
yarn installCopy the .env.example file to .env in the root of the project and update the variables (Database URL, NextAuth secrets, Google Gemini API Key):
cp .env.example .envDATABASE_URL="your_database_connection_string"
AUTH_SECRET="your_nextauth_secret"
GOOGLE_GEMINI_API_KEY="your_api_key_here"Generate the Prisma client and push the schema to your database. Note: A postinstall script automatically runs prisma generate, but pushing the schema is necessary for the first run:
npx prisma db pushStart the Next.js development server:
npm run dev
# or
yarn devOpen http://localhost:3000 in your browser to view the application.
To create an optimized production build:
npm run build
npm start