Self-hosted AI marketing platform. Like Google Pomelli, but open source, model-agnostic, and actually ships to your social media.
Features • Quick Start • Configuration • Comparison • Roadmap • Contributing
DNA Studio analyzes any website URL to extract a Brand DNA profile — colors, fonts, tone of voice, target audience, and industry — then uses AI to generate on-brand marketing content across all major social platforms.
Paste a URL. Get a complete marketing campaign. Publish it.
-
Brand DNA Extraction — Paste any URL. Playwright crawls the site and extracts colors, fonts, tone, audience, industry, and more. AI analyzes the content for deeper insights.
-
Multi-Platform Campaign Generation — Generate platform-specific content for Instagram, LinkedIn, Facebook, and X/Twitter. Each asset respects platform conventions (character limits, tone, hashtag strategy).
-
Model-Agnostic AI — Switch between OpenAI (GPT-4o), Anthropic (Claude), Google Gemini, or local models via Ollama. One env var to change.
-
Direct Social Publishing — Connect your social accounts via OAuth. Publish immediately or schedule posts for later via BullMQ job queue.
-
Multi-Language Support — Generate campaigns in English, Spanish, French, Arabic, Chinese, Japanese, and more.
-
Self-Hosted — One
docker compose up -dand you're running. Your data stays on your infrastructure. No vendor lock-in. MIT licensed. -
AI Photoshoot Studio — Upload a product image, choose from 29 templates across 6 categories (General, Beauty, Fashion, Food, Home, Tech), and generate up to 4 styled product shots in parallel. Sessions are saved and browsable.
-
AI Image Generation — Supports OpenAI DALL-E, Google Gemini native image generation, Stability AI, and Replicate Flux. Provider-agnostic — switch with one setting.
-
Smart Campaign Suggestions — AI analyzes your brand DNA and generates tailored campaign ideas. Cached per brand for instant load.
-
In-App Settings — Configure AI providers, API keys, and image generation from the dashboard. No need to restart the server.
-
Streaming UX — Real-time progress for brand analysis and content generation. See results as they're produced.
# Clone the repo
git clone https://github.com/moesaif/dna-studio.git
cd dna-studio
# Copy environment config
cp .env.example .env
# Edit .env with your API keys
# Launch everything
docker compose up -dOpen http://localhost:3000 and create your first brand.
# Prerequisites: Node 20+, PostgreSQL, Redis
# Install dependencies
npm install
# Set up database
cp .env.example .env.local
# Edit .env.local with your DATABASE_URL and API keys
npx prisma migrate dev
# Start dev server
npm run dev
# In another terminal, start the worker (for scheduled publishing)
npm run workerAll configuration is done via environment variables. See .env.example for the full list.
| Variable | Description | Required |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Yes |
REDIS_URL |
Redis connection string | Yes |
NEXTAUTH_SECRET |
Random secret for session encryption | Yes |
LLM_PROVIDER |
AI provider: openai, anthropic, ollama, gemini |
Yes |
OPENAI_API_KEY |
OpenAI API key (if using OpenAI) | Conditional |
ANTHROPIC_API_KEY |
Anthropic API key (if using Anthropic) | Conditional |
GOOGLE_API_KEY |
Google API key (if using Gemini) | Conditional |
OLLAMA_BASE_URL |
Ollama server URL (if using local models) | Conditional |
| Feature | DNA Studio | Google Pomelli | Canva AI |
|---|---|---|---|
| Self-hosted | Yes | No | No |
| Model-agnostic | Yes | No | No |
| Brand DNA extraction | Yes | Yes | No |
| Multi-platform generation | Yes | Yes | Yes |
| Direct social publishing | Yes | No | Yes |
| Multi-language | Yes | No | Yes |
| Open source | Yes | No | No |
| Free tier | Yes (unlimited) | No | Limited |
- Frontend: Next.js 16 + TypeScript + Tailwind CSS v4 + Framer Motion
- Backend: Next.js API Routes + Prisma ORM
- Database: PostgreSQL
- Queue: BullMQ + Redis
- Web Scraping: Playwright (headless Chromium)
- AI: Provider-agnostic (OpenAI, Anthropic, Ollama, Gemini) — text + image generation
- Auth: NextAuth.js (credentials + Google OAuth)
- Deployment: Docker Compose
dna-studio/
├── src/
│ ├── app/ # Next.js pages and API routes
│ ├── components/ # React components
│ └── lib/
│ ├── brand-dna/ # Brand DNA crawler and extractors
│ ├── llm/ # Unified LLM client + providers
│ ├── image/ # Image generation client + providers
│ ├── campaigns/ # Campaign generator and prompts
│ ├── settings/ # User settings resolution
│ ├── social/ # Social media API integrations
│ └── auth/ # NextAuth configuration
├── prisma/ # Database schema and migrations
├── workers/ # BullMQ background workers
├── docker-compose.yml # One-command deployment
└── Dockerfile
- Brand DNA extraction from any URL (colors, fonts, tone, audience, industry)
- Multi-platform campaign generation (Instagram, LinkedIn, Facebook, X/Twitter)
- Model-agnostic LLM support (OpenAI, Anthropic, Gemini, Ollama)
- AI image generation (OpenAI DALL-E, Google Gemini, Stability AI, Replicate Flux)
- AI Photoshoot — upload a product, pick templates, generate styled shots
- Photoshoot persistence — sessions saved and browsable in gallery
- Smart campaign suggestions — AI-generated, cached per brand
- Settings UI — configure AI providers and API keys from the dashboard
- Vision-powered product analysis — AI describes uploaded product images
- Favicon-based brand logo fallback
- Docker Compose one-command deployment
- A/B testing for campaign variants
- Analytics dashboard (post performance tracking)
- Calendar view for scheduled posts
- Team collaboration (multi-user workspaces)
- Brand style guide PDF export
- Webhook integrations (Zapier, n8n)
- Chrome extension for one-click brand analysis
- Mobile app (React Native)
We welcome contributions! See CONTRIBUTING.md for setup instructions, code style guidelines, and how to add new AI providers.
Quick start:
git clone https://github.com/YOUR_USERNAME/dna-studio.git
cd dna-studio && npm install
cp .env.example .env
npx prisma migrate dev
npm run dev- Run
npx prisma studioto browse the database - The LLM client supports hot-switching providers via the
LLM_PROVIDERenv var - Use Ollama for free local development without API keys
- Brand DNA extraction works best on marketing/landing pages
MIT License. See LICENSE for details.
Built with Next.js, Prisma, and a lot of AI. Star the repo if you find it useful.