Skip to content

nur1248/creative-catalyst

Repository files navigation

🎨 Creative Catalyst

Yapay zeka destekli sanat keşfi ve yaratıcı ilham platformu. Kullanıcılar sanat eserleriyle etkileşime girer, renk analizleri yapar, benzer eserler keşfeder ve AI tarafından üretilen yaratıcı kısıtlamalarla yeni projeler geliştirir.


✨ Özellikler

  • Sanat Galerisi — Metropolitan Müzesi'nden çekilen public domain eserlerden oluşan zengin koleksiyon
  • Renk Analizi — Eserlerin dominant renk paletini otomatik çıkarma ve görselleştirme
  • Benzer Eser Keşfi — Vektör embedding (cosine similarity) ve renk paleti benzerliğine dayalı öneri sistemi
  • AI Yaratıcı Kısıtlamalar — Google Gemini API ile oturuma özel yaratıcı yönlendirmeler üretme
  • Kullanıcı Oturumları — Eser yükleme, profil oluşturma ve kişisel yaratıcılık seansları
  • Admin Paneli — Eser çekme, embedding hesaplama ve veritabanı yönetimi

🛠️ Kullanılan Teknolojiler

Katman Teknoloji
Framework Next.js 14 (App Router)
Dil TypeScript
Veritabanı Supabase (PostgreSQL + pgvector)
Kimlik Doğrulama Supabase Auth
Görsel Depolama Cloudinary
AI / LLM Google Gemini API
ML Embeddings Hugging Face (CLIP modeli)
Stil Tailwind CSS
Animasyonlar Framer Motion

📁 Proje Yapısı

├── app/
│   ├── (auth)/
│   │   ├── login/          # Giriş sayfası
│   │   └── register/       # Kayıt sayfası
│   ├── admin/              # Admin paneli
│   ├── api/
│   │   ├── admin/          # Eser çekme, embedding, DB kurulum
│   │   ├── ai/             # Gemini yaratıcı kısıtlama üretimi
│   │   ├── artwork/        # Benzer eser ve vibe analizi
│   │   └── upload/         # Cloudinary görsel yükleme
│   ├── gallery/            # Sanat galerisi
│   ├── profile/            # Kullanıcı profil kurulumu
│   └── session/            # Yaratıcılık oturumu
├── components/
│   └── NavBar.tsx          # Navigasyon bileşeni
├── lib/
│   └── supabase.ts         # Supabase client
├── utils/
│   └── colorAnalysis.ts    # Renk paleti analiz fonksiyonları
├── populate_embeddings.py  # CLIP embedding üretim scripti
├── requirements_ml.txt     # Python ML bağımlılıkları
├── supabase_setup.sql      # Veritabanı şema ve tablo kurulumu
└── BASLAT.bat              # Windows için tek tıkla başlatma

⚙️ Kurulum

Gereksinimler

  • Node.js 18+
  • Python 3.9+ (embedding pipeline için)
  • Supabase hesabı
  • Cloudinary hesabı
  • Google AI Studio hesabı (Gemini API)
  • Hugging Face hesabı

1. Bağımlılıkları Yükle

npm install

2. Ortam Değişkenlerini Ayarla

.env.example dosyasını kopyalayarak .env.local oluştur:

cp .env.example .env.local

.env.local dosyasını kendi bilgilerinle doldur:

NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=sb_publishable_xxx

CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
CLOUDINARY_URL=cloudinary://api_key:api_secret@cloud_name

GEMINI_API_KEY=your_gemini_api_key
HF_TOKEN=hf_your_token_here

3. Veritabanını Kur

Supabase SQL editöründe supabase_setup.sql dosyasının içeriğini çalıştır.

4. Uygulamayı Başlat

npm run dev

Tarayıcıda aç: http://localhost:3000


🤖 ML Embedding Pipeline (Opsiyonel)

Eser benzerlik önerilerini CLIP modeli ile geliştirmek için:

pip install -r requirements_ml.txt
python populate_embeddings.py

Bu script Supabase'deki eserlere CLIP vektör embeddingleri ekler ve pgvector ile gelişmiş benzerlik araması sağlar.


🔌 API Endpoints

Method Endpoint Açıklama
POST /api/ai/generate-constraint Gemini ile yaratıcı kısıtlama üret
POST /api/artwork/similar Benzer eser öner (embedding + renk)
POST /api/artwork/vibe Vibe bazlı eser analizi
POST /api/upload Cloudinary'e görsel yükle
POST /api/admin/fetch-artworks Met Müzesi'nden eser çek
POST /api/admin/compute-embeddings CLIP embedding hesapla
POST /api/admin/setup-db Veritabanı tablolarını kur

🔍 Benzerlik Algoritması

Eser öneri sistemi üç katmanlı bir yaklaşım kullanır:

  1. pgvector (Birincil) — Supabase'de CLIP embedding vektörleri ile cosine similarity
  2. JS-side Cosine — pgvector yoksa JavaScript tarafında embedding karşılaştırması
  3. Renk Paleti — Embedding yoksa dominant renk mesafesi (perceptual RGB)

📝 Notlar

  • node_modules/ ve .next/ klasörleri GitHub'a yüklenmez; npm install ve npm run dev ile yeniden oluşturulur.
  • Tüm API anahtarları .env.local dosyasında saklanır ve asla versiyonlanmaz.
  • Eserler Metropolitan Sanat Müzesi'nin açık erişim koleksiyonundan alınmaktadır.

About

Creative Catalyst: A modern web application for art discovery, color similarity analysis, and AI-driven creative constraints. Powered by Next.js, Supabase Vector, and Google Gemini.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors