'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { ArrowLeft, Sparkles, Loader2, Rocket, Globe, Terminal, Smartphone } from 'lucide-react' import { Navbar } from '@/components/Navbar' import { IconPicker } from '@/components/IconPicker' import { slugify } from '@/lib/utils' export default function NewAppPage() { const router = useRouter() const [name, setName] = useState('') const [slug, setSlug] = useState('') const [description, setDescription] = useState('') const [iconUrl, setIconUrl] = useState('') const [slugEdited, setSlugEdited] = useState(false) const [loading, setLoading] = useState(false) const [error, setError] = useState('') function handleNameChange(value: string) { setName(value) if (!slugEdited) { setSlug(slugify(value)) } } async function handleSubmit(e: React.FormEvent) { e.preventDefault() setLoading(true) setError('') try { const res = await fetch('/api/apps', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name, slug, description, icon_url: iconUrl || null }), }) const data = await res.json() setLoading(false) if (!res.ok) { setError(data.error ?? 'Uygulama oluşturulurken bir hata oluştu.') return } router.push(`/dashboard/apps/${data.id}`) } catch { setLoading(false) setError('Ağ hatası oluştu, lütfen tekrar deneyin.') } } return (
Uygulamalara Geri Dön {/* Page Title */}

Yeni Uygulama Oluştur

Uygulamanız için dinamik config yönetimi ve otomatik 3 ortam (Development, Staging, Production) kurulacaktır.

{/* Creation Card */}
handleNameChange(e.target.value)} required autoFocus placeholder="Örn: Trendyol Satıcı Paneli, Mobil E-Ticaret" className="w-full glass-input rounded-xl px-4 py-3 text-white placeholder-slate-500 focus:outline-none text-sm font-medium" />
app/ { setSlug(e.target.value) setSlugEdited(true) }} required placeholder="mobil-e-ticaret" pattern="[a-z0-9-]+" className="flex-1 bg-transparent px-3.5 py-3 text-white placeholder-slate-500 focus:outline-none text-sm font-mono" />

Yalnızca küçük harfler, rakamlar ve tire (-) kullanılabilir. API isteklerinde kullanılacaktır.