Skip to content

Repository files navigation

Next.js 16 TypeScript Tailwind CSS Grok AI

GROKIFY

Transform any X timeline into bespoke AI artwork, savage roasts, and intelligence dossiers.

Live DemoGitHubFeaturesInstallationAPI ReferencePrivacy Policy


Overview

Grokify analyzes public X (Twitter) accounts using xAI's Grok model with real-time search capabilities, then generates unique AI-powered content including satirical artwork, comedy roasts, FBI-style profiles, comprehensive OSINT dossiers, and street-style caricatures.

No login required. No API keys needed from users. Just enter a username and go...


Features

Feature Description
🎨 AI Artwork Generates satirical cartoon illustrations based on posting personality
🔥 Roast Letter Comedy Central-style therapy notes from the fictional "Dr. Burn Notice"
🕵️ FBI Profile Satirical FBI behavioral analysis that diagnoses leftist psychological traits
🔍 OSINT Dossier Comprehensive intelligence-style analysis with viral content deep dive (POST /api/osint-profile; dossier UI in OsintSection / OsintReport)
✏️ Caricature Upload a photo and get a Times Square street artist-style caricature
Grokify Prompt Transform any idea into a polished AI prompt with Grok
🧾 X Post Fact Checker Paste an X post URL for a structured fact check with quick/deep research modes and optional sources
Grok Imagine Feature-flagged xAI image & video generation from the home page (/api/imagine, /api/imagine-video, /api/imagine-video/extend)
👥 Joint Picture Generate artwork combining two X accounts together
🖼️ 44 Art Styles 5 categories: Classic, Anime, Modern, Artistic, and Fun (see full list)
📜 Prompt History Local storage-based history with copy/delete functionality
🔗 Shareable Links Generate shareable URLs for created artwork
📱 Responsive Design Beautiful mobile-first UI with iPhone-style interface

Art Styles

Grokify offers 44 unique art styles organized into 5 categories:

Classic (8 styles)

Style ID Description
MAD Magazine default Bold satirical cartoon style with vibrant colors and exaggerated expressions
Oil Painting oil Classical oil painting with rich textures and dramatic chiaroscuro lighting
Watercolor watercolor Soft, dreamy painting with flowing colors and gentle gradients
Charcoal Sketch charcoal Dramatic drawing with bold strokes, deep blacks, and expressive lines
Renaissance renaissance Classical Leonardo/Raphael style portrait with sfumato technique
Baroque baroque Ornate dramatic lighting in the style of Caravaggio or Rembrandt
Pencil Sketch pencil Detailed pencil drawing with fine linework and crosshatching
Art Deco artdeco 1920s geometric elegance with luxurious gold and black colors

Anime (7 styles)

Style ID Description
Studio Ghibli ghibli Whimsical Miyazaki fantasy style with soft pastels and warm nostalgia
Anime anime Dynamic Japanese anime with bold lines and expressive eyes
Manga B&W manga Black & white manga panels with dramatic ink work and screentone shading
Chibi chibi Super-cute kawaii style with oversized head and tiny body
Ukiyo-e ukiyo Japanese woodblock prints in elegant Hokusai aesthetic
Shonen Action shonen Epic battle manga style like Dragon Ball or Naruto
Manhwa manhwa Korean webtoon style with clean digital linework

Modern (9 styles)

Style ID Description
Pixar 3D pixar 3D animated movie style with expressive characters and vibrant colors
Cyberpunk cyberpunk Neon-lit futuristic style with holographic elements and pink/cyan palette
Vaporwave vaporwave 80s/90s aesthetic nostalgia with glitchy effects and gradient sunsets
Low Poly lowpoly Geometric 3D faceted style with clean angular shapes
Neon Glow neon Glowing neon light art with bright luminous outlines on dark background
Minimalist minimalist Clean minimal illustration with simple shapes and lots of white space
Glitch Art glitch Digital corruption aesthetic with RGB splitting and scan lines
Synthwave synthwave Retro-futuristic 80s with neon grids and sunset gradients
Hyperrealistic hyperreal Ultra-detailed photorealism with perfect textures

Artistic (9 styles)

Style ID Description
MAD Roast mad-roast Chaotic MAD Magazine-style parody roast
Comic Book comic Bold Marvel/DC style with thick outlines, halftone dots, and action lines
Retro Pop Art retro 80s/90s pop art with neon colors, pixel elements, and synthwave vibes
Impressionist impressionist Monet/Renoir style with visible brushstrokes and dappled light
Surrealism surreal Dreamlike Salvador Dal�� style with impossible imagery
Warhol Pop warhol Andy Warhol screen print aesthetic with bold flat colors
Film Noir noir Moody black & white 1940s cinema aesthetic
Expressionist expressionist Bold emotional distortion like Edvard Munch
Psychedelic psychedelic Trippy 60s colorful swirls and optical illusions

Fun (11 styles)

Style ID Description
Sticker Art sticker Die-cut sticker aesthetic with bold outlines and flat vibrant colors
Claymation claymation Stop-motion clay style like Wallace & Gromit with charming handmade quality
Street Graffiti graffiti Urban spray paint art with dripping effects and raw street energy
Pixel Art pixel 8-bit retro game style with chunky pixels
LEGO lego Brick-built minifigure style with plastic sheen
Paper Cut papercut Layered paper craft art with visible shadows
Balloon Animal balloon Twisted balloon sculpture style
Plushie plushie Cute stuffed toy style with fuzzy textures
Vintage Photo vintage Old timey sepia portrait with Victorian styling
Steampunk steampunk Victorian brass & gears retro-futuristic aesthetic
Fantasy RPG fantasy Epic D&D character art with magical effects

Tech Stack

Category Technology
Framework Next.js 16 (App Router)
Language TypeScript
Styling Tailwind CSS
UI Components shadcn/ui + Radix UI
Database Neon (Serverless Postgres)
ORM Drizzle ORM
AI Analysis xAI Grok (grok-4.3)
Prompt Generation xAI Grok 4.3 direct API
Image Generation xAI Grok Imagine + Google Gemini via OpenRouter
Video Generation xAI Grok Imagine Video
Image Storage Vercel Blob
Deployment Vercel
Tests Node.js test runner (tsx for TypeScript)

Installation

Prerequisites

  • Node.js 18.17+
  • npm, yarn, or pnpm
  • API keys for xAI and OpenRouter
  • Neon database (free tier available)

Quick Start

# Clone the repository
git clone https://github.com/AppleLamps/grokify.git
cd grokify

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env.local

# Push database schema
npm run db:push

# Start development server
npm run dev

# Run unit tests (API routes, rate limits, prompt helpers, fact-check, uploads)
npm test

Environment Variables

Create a .env.local file with the following:

# Public site (metadata, Open Graph, OpenRouter HTTP-Referer). Use https://www.grokify.com in production.
NEXT_PUBLIC_BASE_URL="https://www.grokify.com"
NEXT_PUBLIC_APP_URL="https://www.grokify.com"

# Database (Neon Postgres)
DATABASE_URL="postgresql://user:password@host/database?sslmode=require"

# xAI API (Grok analysis + X search)
XAI_API_KEY="xai-..."

# Grok Imagine feature flags (disabled unless explicitly true)
NEXT_PUBLIC_GROK_IMAGE_GENERATION_ENABLED="false"
NEXT_PUBLIC_GROK_VIDEO_GENERATION_ENABLED="false"

# OpenRouter API (Gemini/Nano Banana image generation)
OPENROUTER_API_KEY="sk-or-..."

# Vercel Blob (image/video upload storage and abuse controls)
BLOB_READ_WRITE_TOKEN="vercel_blob_..."
UPLOAD_INTENT_SECRET="a-long-random-secret"
UPLOAD_IMAGE_DAILY_LIMIT="20"
UPLOAD_VIDEO_DAILY_LIMIT="10"
UPLOAD_VIDEO_INTENT_DAILY_LIMIT="20"
UPLOAD_VIDEO_TOKEN_DAILY_LIMIT="20"

# Anonymous AI endpoint rate limits (requests per 24 hours per IP + user-agent hash)
AI_ANALYZE_ACCOUNT_DAILY_LIMIT="10"
AI_ANALYZE_ACCOUNT_VIDEO_DAILY_LIMIT="5"
AI_ROAST_ACCOUNT_DAILY_LIMIT="10"
AI_FBI_PROFILE_DAILY_LIMIT="5"
AI_OSINT_PROFILE_DAILY_LIMIT="5"
AI_GENERATE_IMAGE_DAILY_LIMIT="5"
AI_FACT_CHECK_DAILY_LIMIT="15"
AI_PROMPT_GENERATE_DAILY_LIMIT="30"
AI_IMAGINE_DAILY_LIMIT="5"
AI_IMAGINE_VIDEO_DAILY_LIMIT="3"
AI_IMAGINE_VIDEO_EXTEND_DAILY_LIMIT="3"
AI_CARICATURE_DAILY_LIMIT="5"
AI_JOINT_PIC_DAILY_LIMIT="10"

# Comma-separated browser origins allowed to call API routes (defaults to https://www.grokify.com)
ALLOWED_ORIGINS="https://www.grokify.com"

# Optional: only logs AI payload metadata outside production
DEBUG_AI_PAYLOADS="false"

Rate Limiting

Anonymous AI and upload endpoints are rate-limited per IP + user-agent hash over a 24-hour window. Limits are configurable via the AI_*_DAILY_LIMIT and UPLOAD_*_DAILY_LIMIT variables above. Exceeded limits return HTTP 429.


API Reference

Generate Artwork

POST /api/analyze-account
Content-Type: application/json

{ "handle": "username" }
POST /api/generate-image
Content-Type: application/json

{ "prompt": "...", "handle": "username", "style": "ghibli" }

Analyze Account (Video Prompt)

POST /api/analyze-account-video
Content-Type: application/json

{ "handle": "username" }

Returns a video prompt from the account profile. Requires NEXT_PUBLIC_GROK_VIDEO_GENERATION_ENABLED=true.

Roast Letter

POST /api/roast-account
Content-Type: application/json

{ "handle": "username" }

FBI Profile

POST /api/fbi-profile
Content-Type: application/json

{ "handle": "username" }

OSINT Dossier

POST /api/osint-profile
Content-Type: application/json

{ "handle": "username", "timeRange": "90" }

Caricature

POST /api/caricature
Content-Type: application/json

{ "imageDataUrl": "data:image/jpeg;base64,..." }

Grokify Prompt

POST /api/prompt-generate
Content-Type: application/json

{ "idea": "A dragon fighting a robot", "directions": "cinematic lighting" }

Uses grok-4.5-latest via the direct xAI API with strict structured output parsing.

X Post Fact Checker

POST /api/fact-check-x
Content-Type: application/json

{ "url": "https://x.com/handle/status/1234567890", "mode": "quick" }

Modes (both use grok-4.3 via lib/grok-config.ts):

  • quick — standard timeout
  • deep — extended research timeout (240s)

Grok Imagine (Image)

POST /api/imagine
Content-Type: application/json

{ "prompt": "...", "n": 2, "aspect_ratio": "16:9", "response_format": "b64_json" }

Requires NEXT_PUBLIC_GROK_IMAGE_GENERATION_ENABLED=true. Returns 503 when disabled.

Grok Imagine (Video)

POST /api/imagine-video
Content-Type: application/json

{ "prompt": "...", "aspect_ratio": "16:9", "duration": 5 }

Requires NEXT_PUBLIC_GROK_VIDEO_GENERATION_ENABLED=true.

Grok Imagine (Video Extend)

POST /api/imagine-video/extend
Content-Type: application/json

{ "prompt": "...", "videoUrl": "https://...", "duration": 5 }

Extends an existing Grok Imagine video. Requires NEXT_PUBLIC_GROK_VIDEO_GENERATION_ENABLED=true.

Joint Picture

POST /api/joint-pic
Content-Type: application/json

{ "handle1": "username1", "handle2": "username2" }

Project Structure

Single Next.js application at the repo root. The older nested grok-4-prompt reference project has been removed; Grokify Prompt lives under app/prompt/ and components/prompt/. The standalone /imagine gallery page was removed; Grok Imagine APIs remain and are used from the home flow when feature flags are enabled.

.
├── .agents/skills/             # Optional AI assistant skill docs (Cursor); not required to run the app
├── .claude/skills/             # Claude Code skill docs (mirror of .agents/skills/)
├── app/
│   ├── api/
│   │   ├── analyze-account/        # Profile analysis → image prompt
│   │   ├── analyze-account-video/  # Profile analysis → video prompt
│   │   ├── generate-image/         # Prompt → Gemini image
│   │   ├── imagine/                # Grok Imagine image generation
│   │   ├── imagine-video/          # Grok Imagine video generation
│   │   │   └── extend/             # Extend an existing Grok Imagine video
│   │   ├── joint-pic/              # Joint picture for two accounts
│   │   ├── roast-account/          # Comedy roast generator
│   │   ├── fbi-profile/            # Satirical FBI report
│   │   ├── osint-profile/          # Intelligence dossier
│   │   ├── caricature/             # Photo → caricature
│   │   ├── fact-check-x/           # X post fact-check API
│   │   ├── prompt-generate/        # Grokify Prompt generator
│   │   ├── proxy-image/            # CORS-safe image fetch
│   │   ├── upload-image/           # Vercel Blob storage
│   │   └── upload-video/           # Video upload (token route for client uploads)
│   ├── fact-check/             # X post fact-check page
│   ├── prompt/                 # Grokify Prompt page
│   ├── privacy-policy/         # Privacy policy page
│   ├── share/[id]/             # Shareable artwork pages
│   ├── globals.css
│   ├── layout.tsx
│   ├── page.tsx
│   ├── robots.ts               # robots.txt (sitemap URL on grokify.com)
│   └── sitemap.ts              # sitemap.xml for main routes
├── components/
│   ├── home/
│   │   ├── HomeClient.tsx      # Shell: sidebar, overlays, results, dynamic sections
│   │   ├── HomeHeroColumn.tsx  # Landing hero, CTAs, modals (memoized)
│   │   ├── HomePhoneColumn.tsx # iPhone-style form; local @username state (memoized)
│   │   └── sections/           # ResultSection, RoastSection, etc.
│   ├── fact-check/             # Fact-check UI
│   ├── prompt/                 # Grokify Prompt components
│   ├── ui/                     # shadcn/ui components
│   ├── LoadingOverlay.tsx      # Animated loading states
│   ├── OsintReport.tsx         # OSINT dossier renderer
│   ├── PromptHistorySidebar.tsx
│   ├── ShareButton.tsx
│   └── StyleSelectorModal.tsx  # Art style selector
├── db/
│   ├── index.ts                # Neon connection
│   └── schema.ts               # Drizzle schema
├── hooks/
│   ├── usePromptHistory.ts     # Prompt history hook
│   └── use-mobile.tsx          # Responsive breakpoint helper (sidebar/UI)
├── tests/                      # 25+ unit/route tests (tsx + Node test runner)
└── lib/
    ├── site.ts                 # SITE_URL / SITE_NAME (grokify.com) for SEO & APIs
    ├── ai-rate-limit.ts        # Anonymous per-IP AI endpoint rate limits
    ├── grok-config.ts          # Pinned Grok model IDs (grok-4.3)
    ├── grok-image-availability.ts  # Grok Imagine feature flags
    ├── fact-check-x.ts         # X post fact-check logic
    ├── prompt-client-utils.ts  # Grokify Prompt: image compression & preview URL helpers
    ├── prompt-route-utils.ts   # Grokify Prompt API: retryable status / backoff helpers
    ├── circuit-breaker.ts      # API resilience
    ├── fetchWithTimeout.ts     # API timeout handling
    ├── upload-security.ts      # Upload intent tokens & rate limits
    └── schemas.ts              # Zod validation schemas

Scripts

Command Description
npm run dev Start development server
npm run build Build for production
npm run start Start production server
npm test Run unit tests (tests/**/*.test.ts via tsx; 25+ test files)
npm run lint Run ESLint
npm run db:generate Generate Drizzle migrations
npm run db:migrate Run Drizzle migrations
npm run db:push Push schema to database
npm run db:studio Open Drizzle Studio

Deployment

Vercel (Recommended)

  1. Push to GitHub
  2. Import project in Vercel
  3. Add environment variables
  4. Deploy

The database schema auto-applies on first request with Neon's serverless driver.


AI Personas

Grokify uses specialized AI personas powered by Grok:

Persona Endpoint Description
Art Director AI /api/analyze-account Translates X personalities into satirical cartoon prompts
Dr. Burn Notice /api/roast-account Comedy Central-style therapist delivering affectionate roasts
FBI Profiler /api/fbi-profile Cold, clinical BAU analyst diagnosing leftist psychological traits
OSINT Analyst /api/osint-profile Elite intelligence analyst building comprehensive dossiers
Street Artist /api/caricature NYC Times Square caricature artist with quick wit
Prompt Alchemist /api/prompt-generate Expert prompt engineer transforming ideas into polished AI prompts
Fact Checker /api/fact-check-x Researches an X post with web/X search and returns a citation-clean structured verdict
Grok Imagine /api/imagine, /api/imagine-video, /api/imagine-video/extend xAI native image/video generation (feature-flagged)

Contributing

# Fork the repo, then:
git checkout -b feature/your-feature
git commit -m "Add your feature"
git push origin feature/your-feature
# Open a Pull Request

License

MIT License - see LICENSE for details.


Support

Grokify is funded by fees from $GROKIFY token.

$GROKIFY Token


Acknowledgments

  • xAI — Grok API with real-time X search
  • OpenRouter — Unified AI model access
  • Neon — Serverless Postgres
  • Vercel — Hosting & Blob storage
  • shadcn/ui — Beautiful UI components

Created by Apple Lamps

Follow @lamps_apple

Powered by Grok AI & Gemini • Built with Next.js • Deployed on Vercel

About

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages