# AI Image Generation System Automatically generate stunning project cover images using local AI models. ![AI Generated](https://img.shields.io/badge/AI-Generated-purple?style=flat-square) ![Stable Diffusion](https://img.shields.io/badge/Stable%20Diffusion-SDXL-blue?style=flat-square) ![n8n](https://img.shields.io/badge/n8n-Workflow-orange?style=flat-square) ## 🎨 What is this? This system automatically creates professional, tech-themed cover images for your portfolio projects using AI. No more stock photos, no design skills needed. ### Features ✨ **Fully Automatic** - Generate images when creating new projects 🎯 **Context-Aware** - Uses project title, description, category, and tech stack πŸ–ΌοΈ **High Quality** - 1024x768 optimized for web display πŸ”’ **Privacy-First** - Runs 100% locally, no data sent to external APIs ⚑ **Fast** - 15-30 seconds per image with GPU πŸ’° **Free** - No per-image costs after initial setup 🎨 **Customizable** - Full control over style, colors, and aesthetics ## πŸš€ Quick Start **Want to get started in 15 minutes?** β†’ Check out [QUICKSTART.md](./QUICKSTART.md) **For detailed setup and configuration** β†’ See [SETUP.md](./SETUP.md) ## πŸ“‹ Table of Contents - [How It Works](#how-it-works) - [System Architecture](#system-architecture) - [Installation](#installation) - [Usage](#usage) - [Prompt Engineering](#prompt-engineering) - [Examples](#examples) - [Troubleshooting](#troubleshooting) - [FAQ](#faq) ## πŸ”§ How It Works ```mermaid graph LR A[Create Project] --> B[Trigger n8n Webhook] B --> C[Fetch Project Data] C --> D[Build AI Prompt] D --> E[Stable Diffusion] E --> F[Save Image] F --> G[Update Database] G --> H[Display on Site] ``` 1. **Project Creation**: You create or update a project 2. **Data Extraction**: System reads project metadata (title, description, tags, category) 3. **Prompt Generation**: AI-optimized prompt is created based on project type 4. **Image Generation**: Stable Diffusion generates a unique image 5. **Storage**: Image is saved and optimized 6. **Database Update**: Project's `imageUrl` is updated 7. **Display**: Image appears automatically on your portfolio ## πŸ—οΈ System Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Portfolio App β”‚ β”‚ (Next.js) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ n8n Workflow │─────▢│ PostgreSQL DB β”‚ β”‚ (Automation) │◀─────│ (Projects) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Stable Diffusionβ”‚ β”‚ WebUI β”‚ β”‚ (Image Gen) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Components - **Next.js App**: Frontend and API endpoints - **n8n**: Workflow automation and orchestration - **Stable Diffusion**: Local AI image generation - **PostgreSQL**: Project data storage - **File System**: Generated image storage ## πŸ“¦ Installation ### Prerequisites - **Node.js** 18+ - **Docker** (recommended) or Python 3.10+ - **PostgreSQL** database - **8GB+ RAM** minimum - **GPU recommended** (NVIDIA with CUDA support) - Minimum: GTX 1060 6GB - Recommended: RTX 3060 12GB or better - Also works on CPU (slower) ### Step-by-Step Setup #### 1. Install Stable Diffusion WebUI ```bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui ./webui.sh --api --listen ``` Wait for model download (~7GB). Access at: `http://localhost:7860` #### 2. Install n8n ```bash # Docker (recommended) docker run -d --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n # Or npm npm install -g n8n n8n start ``` Access at: `http://localhost:5678` #### 3. Import Workflow 1. Open n8n at `http://localhost:5678` 2. Import `n8n-workflow-ai-image-generator.json` 3. Configure database credentials 4. Update Stable Diffusion API URL 5. Set webhook authentication token #### 4. Configure Portfolio App Add to `.env.local`: ```bash N8N_WEBHOOK_URL=http://localhost:5678/webhook N8N_SECRET_TOKEN=your-secure-token-here SD_API_URL=http://localhost:7860 AUTO_GENERATE_IMAGES=true GENERATED_IMAGES_DIR=/path/to/portfolio/public/generated-images ``` #### 5. Create Image Directory ```bash mkdir -p public/generated-images chmod 755 public/generated-images ``` **That's it!** πŸŽ‰ You're ready to generate images. ## πŸ’» Usage ### Automatic Generation When you create a new project, an image is automatically generated: ```typescript // In your project creation API const newProject = await createProject(data); if (process.env.AUTO_GENERATE_IMAGES === 'true') { await fetch(`${process.env.N8N_WEBHOOK_URL}/ai-image-generation`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.N8N_SECRET_TOKEN}` }, body: JSON.stringify({ projectId: newProject.id }) }); } ``` ### Manual Generation via API ```bash curl -X POST http://localhost:3000/api/n8n/generate-image \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{"projectId": 123}' ``` ### Admin UI Component ```tsx import AIImageGenerator from '@/app/components/admin/AIImageGenerator'; { console.log('New image:', url); }} /> ``` ### Batch Generation Generate images for all existing projects: ```bash # Get all projects without images psql -d portfolio -t -c "SELECT id FROM projects WHERE image_url IS NULL" | while read id; do curl -X POST http://localhost:3000/api/n8n/generate-image \ -H "Content-Type: application/json" \ -d "{\"projectId\": $id}" sleep 30 # Wait for generation done ``` ## 🎯 Prompt Engineering The system automatically generates optimized prompts based on project category: ### Web Application Example **Input Project:** - Title: "Real-Time Analytics Dashboard" - Category: "web" - Tags: ["React", "Next.js", "TypeScript"] **Generated Prompt:** ``` Professional tech project cover image, modern web interface, clean dashboard UI, gradient backgrounds, glass morphism effect, representing "Real-Time Analytics Dashboard", React, Next.js, TypeScript, modern minimalist design, vibrant gradient colors, high quality digital art, isometric perspective, color palette: cyan, purple, pink, blue accents, 4k resolution, no text, no watermarks, futuristic, professional ``` **Result:** Clean, modern dashboard visualization in your brand colors ### Customize Prompts Edit the `Build AI Prompt` node in n8n workflow to customize: ```javascript // Add your brand colors const brandColors = 'navy blue, gold accents, white backgrounds'; // Add style preferences const stylePreference = 'minimalist, clean, corporate, professional'; // Modify prompt template const prompt = ` ${categoryStyle}, ${projectTitle}, ${brandColors}, ${stylePreference}, 4k quality, trending on artstation `; ``` See [PROMPT_TEMPLATES.md](./PROMPT_TEMPLATES.md) for category-specific templates. ## πŸ–ΌοΈ Examples ### Before & After | Category | Without AI Image | With AI Image | |----------|------------------|---------------| | Web App | Generic stock photo | Custom dashboard visualization | | Mobile App | App store screenshot | Professional phone mockup | | DevOps | Server rack photo | Cloud architecture diagram | | AI/ML | Brain illustration | Neural network visualization | ### Quality Comparison **Settings:** - Resolution: 1024x768 - Steps: 30 - CFG Scale: 7 - Sampler: DPM++ 2M Karras - Model: SDXL Base 1.0 **Generation Time:** - RTX 4090: ~8 seconds - RTX 3080: ~15 seconds - RTX 3060: ~25 seconds - CPU: ~5 minutes ## πŸ› Troubleshooting ### Common Issues #### "Connection refused to SD API" ```bash # Check if SD WebUI is running ps aux | grep webui # Restart with API enabled cd stable-diffusion-webui ./webui.sh --api --listen ``` #### "CUDA out of memory" ```bash # Use lower VRAM mode ./webui.sh --api --listen --medvram ``` #### "Images are low quality" In n8n workflow, increase: - Steps: 30 β†’ 40 - CFG Scale: 7 β†’ 9 - Resolution: 512 β†’ 1024 #### "Images don't match project" - Add more specific keywords to prompt - Use category-specific templates - Refine negative prompts See [SETUP.md](./SETUP.md#troubleshooting) for more solutions. ## ❓ FAQ ### How much does it cost? **Initial Setup:** $300-400 for GPU (or $0 with cloud GPU rental) **Per Image:** $0.00 (local electricity ~$0.001) **Break-even:** ~500 images vs. commercial APIs ### Can I use this without a GPU? Yes, but it's slower (~5 minutes per image on CPU). Consider cloud GPU services: - RunPod: ~$0.20/hour - vast.ai: ~$0.15/hour - Google Colab: Free with limitations ### Is the data sent anywhere? No! Everything runs locally. Your project data never leaves your server. ### Can I customize the style? Absolutely! Edit prompts in the n8n workflow or use the template system. ### What models should I use? - **SDXL Base 1.0**: Best all-around quality - **DreamShaper 8**: Artistic, modern tech style - **Realistic Vision V5**: Photorealistic results - **Juggernaut XL**: Clean, professional aesthetics ### Can I generate images on-demand? Yes! Use the admin UI component or API endpoint to regenerate anytime. ### How do I change image dimensions? Edit the n8n workflow's SD node: ```json { "width": 1920, // Change this "height": 1080 // And this } ``` ### Can I use a different AI model? Yes! The system works with: - Stable Diffusion WebUI (default) - ComfyUI (more advanced) - Any API that accepts txt2img requests ## πŸ“š Additional Resources - **[SETUP.md](./SETUP.md)** - Detailed installation guide - **[QUICKSTART.md](./QUICKSTART.md)** - 15-minute setup guide - **[PROMPT_TEMPLATES.md](./PROMPT_TEMPLATES.md)** - Category-specific prompts - **[n8n-workflow-ai-image-generator.json](./n8n-workflow-ai-image-generator.json)** - Workflow file ### External Documentation - [Stable Diffusion WebUI Wiki](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki) - [n8n Documentation](https://docs.n8n.io) - [Stable Diffusion Prompt Guide](https://prompthero.com/stable-diffusion-prompt-guide) ## 🀝 Contributing Have improvements or new prompt templates? Contributions welcome! 1. Fork the repository 2. Create a feature branch 3. Test your changes 4. Submit a pull request ## πŸ“ License This system is part of your portfolio project. AI-generated images are yours to use freely. **Model Licenses:** - SDXL Base 1.0: CreativeML Open RAIL++-M License - Other models: Check individual model licenses ## πŸ™ Credits - **Stable Diffusion**: Stability AI & AUTOMATIC1111 - **n8n**: n8n GmbH - **Prompt Engineering**: Community templates and best practices ## πŸ’¬ Support Need help? Found a bug? - Open an issue on GitHub - Check existing documentation - Join the community Discord - Email: contact@dk0.dev --- **Built with ❀️ for automatic, beautiful project images** *Last Updated: 2024*