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.
- 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
| 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 |
├── 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
- Node.js 18+
- Python 3.9+ (embedding pipeline için)
- Supabase hesabı
- Cloudinary hesabı
- Google AI Studio hesabı (Gemini API)
- Hugging Face hesabı
npm install.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_hereSupabase SQL editöründe supabase_setup.sql dosyasının içeriğini çalıştır.
npm run devTarayıcıda aç: http://localhost:3000
Eser benzerlik önerilerini CLIP modeli ile geliştirmek için:
pip install -r requirements_ml.txt
python populate_embeddings.pyBu script Supabase'deki eserlere CLIP vektör embeddingleri ekler ve pgvector ile gelişmiş benzerlik araması sağlar.
| 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 |
Eser öneri sistemi üç katmanlı bir yaklaşım kullanır:
- pgvector (Birincil) — Supabase'de CLIP embedding vektörleri ile cosine similarity
- JS-side Cosine — pgvector yoksa JavaScript tarafında embedding karşılaştırması
- Renk Paleti — Embedding yoksa dominant renk mesafesi (perceptual RGB)
node_modules/ve.next/klasörleri GitHub'a yüklenmez;npm installvenpm run devile yeniden oluşturulur.- Tüm API anahtarları
.env.localdosyasında saklanır ve asla versiyonlanmaz. - Eserler Metropolitan Sanat Müzesi'nin açık erişim koleksiyonundan alınmaktadır.