CoolFace
Apppublic

lcmind/vibe-link-server

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes
App README

🎨 VIBE_LINK Backend

AI-powered serverless API that transforms website URLs into stunning "Vibe Poster" images using Google Gemini and Hugging Face Flux.1.

πŸš€ Features

  • β€”Screenshot Capture: Headless Chrome (pyppeteer) for high-quality website screenshots
  • β€”AI Analysis: Google Gemini 2.5 Flash extracts design vibe and generates artistic prompts
  • β€”Image Generation: Hugging Face Flux.1-dev creates 3D abstract posters
  • β€”Cloud Hosting: ImgBB API for permanent image storage
  • β€”Optimized: Production-ready with minimal resource footprint

πŸ—οΈ Tech Stack

  • β€”Framework: FastAPI + Uvicorn
  • β€”AI Models:
  • β€”Google Gemini 2.0 Flash Exp (vision analysis)
  • β€”FLUX.1-dev (image generation)
  • β€”Infrastructure: Docker (Hugging Face Spaces)
  • β€”Language: Python 3.9

πŸ“¦ Installation

1. Clone Repository

bash
git clone https://github.com/Lcmind/vibe-link-backend.git
cd vibe-link-backend

2. Set Environment Variables

bash
cp .env.example .env
# Edit .env and add your API keys:
# - HF_TOKEN (Hugging Face)
# - GEMINI_API_KEY (Google AI Studio)
# - IMGBB_KEY (ImgBB)

3. Run Locally (Docker)

bash
docker build -t vibe-link-backend .
docker run -p 7860:7860 --env-file .env vibe-link-backend

4. Run Locally (Python)

bash
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reload --port 7860

🌐 API Usage

POST /create

Generate a vibe poster from a website URL.

Request:

json
{
  "url": "https://example.com"
}

Response:

json
{
  "status": "success",
  "poster_url": "https://i.ibb.co/abc123/poster.webp",
  "vibe": "Minimalist",
  "summary": "κΉ”λ”ν•œ λ””μžμΈκ³Ό λͺ…ν™•ν•œ νƒ€μ΄ν¬κ·Έλž˜ν”Όκ°€ λ‹λ³΄μ΄λŠ” ν˜„λŒ€μ μΈ μ›Ήμ‚¬μ΄νŠΈ"
}

GET /health

Health check endpoint.

Response:

json
{
  "status": "healthy",
  "service": "vibe-link-backend"
}

🎯 Deployment to Hugging Face Spaces

1. Create a New Space

  1. 1.Go to Hugging Face Spaces
  2. 2.Click "Create new Space"
  3. 3.Select Docker as SDK
  4. 4.Name: vibe-link-backend

2. Push Code to HF Space

bash
# Add Hugging Face as remote
git remote add hf https://huggingface.co/spaces/YOUR_USERNAME/vibe-link-backend
git push hf main

3. Configure Secrets

In Space Settings β†’ Repository Secrets, add:

  • β€”HF_TOKEN
  • β€”GEMINI_API_KEY
  • β€”IMGBB_KEY

4. Access Your API

https://YOUR_USERNAME-vibe-link-backend.hf.space/

πŸ”§ Configuration

Environment Variables

VariableDescriptionRequired
HF_TOKENHugging Face API tokenβœ…
GEMINI_API_KEYGoogle Gemini API keyβœ…
IMGBB_KEYImgBB API keyβœ…

Get API Keys

  • β€”Hugging Face: https://huggingface.co/settings/tokens
  • β€”Google Gemini: https://aistudio.google.com/app/apikey
  • β€”ImgBB: https://api.imgbb.com/

πŸ“Š Pipeline Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ POST /create { "url": "https://example.com" }              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  STEP 1: Screenshot Capture     β”‚
        β”‚  Tool: pyppeteer                β”‚
        β”‚  Output: screenshot.jpg         β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  STEP 2: AI Analysis            β”‚
        β”‚  Tool: Google Gemini 2.5 Flash  β”‚
        β”‚  Output: vibe + flux_prompt     β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  STEP 3: Image Generation       β”‚
        β”‚  Tool: HF Flux.1-dev            β”‚
        β”‚  Output: poster.webp            β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  STEP 4: Upload to ImgBB        β”‚
        β”‚  Tool: ImgBB API                β”‚
        β”‚  Output: public URL             β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚  Response: { poster_url }       β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Development

Project Structure

vibe-link-backend/
β”œβ”€β”€ main.py              # FastAPI application
β”œβ”€β”€ requirements.txt     # Python dependencies
β”œβ”€β”€ Dockerfile          # Docker configuration
β”œβ”€β”€ .env.example        # Environment template
β”œβ”€β”€ .gitignore          # Git ignore rules
└── README.md           # Documentation

Code Quality Features

  • β€”βœ… Type hints (Pydantic models)
  • β€”βœ… Error handling & logging
  • β€”βœ… Resource cleanup (temp files)
  • β€”βœ… Docker health checks
  • β€”βœ… Production-ready CORS
  • β€”βœ… Memory-optimized Chrome args

πŸ“ License

MIT License - feel free to use for your projects!

🀝 Contributing

Contributions welcome! Please open an issue or PR.

πŸ“§ Support

For issues or questions, open a GitHub issue at: https://github.com/Lcmind/vibe-link-backend/issues


Built with ❀️ by S-Grade Developer