Premium React 19 admin template'i ile hızlı başlangıç rehberi
- Hızlı Başlangıç
- Proje Yapısı
- İlk Adımlar
- Komponent Kullanımı
- Tema Özelleştirme
- Sayfa Ekleme
- Deployment
- Sorun Giderme
- Node.js: 18.0.0 veya üzeri
- npm: 9.0+ veya yarn: 1.22+ veya bun: 1.0+
- Git: Versiyon kontrolü için
# Repository'yi klonlayın
git clone https://github.com/sametuca/react19-clapton-admin-template-premium
# Proje dizinine gidin
cd react19-clapton-admin-template# npm kullanarak
npm install
# veya yarn kullanarak
yarn install
# veya bun kullanarak
bun install# npm ile
npm run dev
# veya yarn ile
yarn dev
# veya bun ile
bun devhttp://localhost:8080 adresine gidin ve template'i keşfetmeye başlayın!
react19-clapton-admin-template/
├── 📁 public/ # Statik dosyalar
│ ├── favicon.svg # Site ikonu
│ └── robots.txt # SEO robots dosyası
├── 📁 src/ # Ana kaynak kodları
│ ├── 📁 components/ # Yeniden kullanılabilir komponentler
│ │ ├── 📁 ui/ # Temel UI komponentleri (shadcn/ui)
│ │ │ ├── button.tsx # Buton komponenti
│ │ │ ├── card.tsx # Kart komponenti
│ │ │ ├── input.tsx # Input komponenti
│ │ │ ├── 📁 ai/ # AI komponentleri
│ │ │ │ ├── ai-chat.tsx # AI sohbet komponenti
│ │ │ │ ├── ai-search.tsx # AI arama komponenti
│ │ │ │ └── ai-insights.tsx # AI analiz komponenti
│ │ │ ├── 📁 advanced/ # Gelişmiş komponentler
│ │ │ │ ├── AuroraBackground.tsx
│ │ │ │ ├── AdaptiveCommandPalette.tsx
│ │ │ │ └── LiveUserPresence.tsx
│ │ │ └── ... (200+ komponent)
│ │ ├── AppSidebar.tsx # Ana sidebar komponenti
│ │ ├── LanguageSwitcher.tsx # Dil değiştirici
│ │ └── ThemeSelector.tsx # Tema seçici
│ ├── 📁 pages/ # Uygulama sayfaları
│ │ ├── Welcome.tsx # Karşılama sayfası
│ │ ├── Dashboard.tsx # Ana dashboard
│ │ ├── 📁 showcase/ # Komponent vitrin sayfaları
│ │ │ ├── ComponentShowcaseIndex.tsx
│ │ │ ├── StatsCards.tsx
│ │ │ ├── AIComponents.tsx
│ │ │ ├── PremiumComponents.tsx
│ │ │ └── ... (15+ showcase sayfası)
│ │ └── 📁 examples/ # Örnek sayfalar
│ │ ├── SocialMedia.tsx
│ │ ├── EcommerceDashboard.tsx
│ │ └── ... (5+ örnek sayfa)
│ ├── 📁 contexts/ # React context'leri
│ │ ├── ThemeContext.tsx # Tema yönetimi
│ │ └── LanguageContext.tsx # Dil yönetimi
│ ├── 📁 hooks/ # Özel React hook'ları
│ │ ├── use-toast.ts # Toast bildirimleri
│ │ └── use-mobile.tsx # Mobil algılama
│ ├── 📁 lib/ # Yardımcı fonksiyonlar
│ │ └── utils.ts # Genel yardımcılar
│ ├── 📁 layouts/ # Layout komponentleri
│ │ └── AppLayout.tsx # Ana layout
│ ├── App.tsx # Ana uygulama komponenti
│ ├── main.tsx # Uygulama giriş noktası
│ └── index.css # Global CSS stilleri
├── 📄 package.json # Proje bağımlılıkları
├── 📄 tailwind.config.ts # Tailwind CSS yapılandırması
├── 📄 tsconfig.json # TypeScript yapılandırması
├── 📄 vite.config.ts # Vite build yapılandırması
├── 📄 components.json # shadcn/ui yapılandırması
└── 📄 README.md # Proje dokümantasyonu
Template'i satın aldıktan sonra ilk yapmanız gerekenler:
- Ana Sayfayı İnceleyin:
http://localhost:8080- Karşılama sayfası - Dashboard'a Gidin:
/dashboard- Ana yönetim paneli - Komponentleri Keşfedin:
/showcase- Tüm komponentlerin sergilendiği sayfa - AI Özelliklerini Test Edin:
/showcase/ai- AI destekli komponentler
// src/layouts/AppLayout.tsx
<div className="flex items-center gap-2 font-semibold">
<span className="hidden sm:inline">Sizin Uygulama Adınız</span>
</div>public/favicon.svg dosyasını kendi logo'nuzla değiştirin.
<!-- index.html -->
<title>Sizin Uygulama Adınız</title>
<meta name="description" content="Sizin uygulama açıklamanız" />Template 8 farklı premium tema ile gelir:
- Dark Premium: Gelişmiş koyu tema
- Midnight Black: Derin siyah premium tema
- Neon Cyber: Neon ışıklı siber tema
- Royal Purple: Kraliyet moru premium tema
- Aurora Borealis: Kutup ışıkları teması
- Cyberpunk 2077: Futuristik siber tema
- Galaxy Deep: Derin uzay galaksi teması
- Emerald Luxury: Lüks zümrüt yeşili tema
Tema değiştirmek için:
// Herhangi bir komponente
import { useTheme } from '@/contexts/ThemeContext';
function MyComponent() {
const { setTheme } = useTheme();
return (
<button onClick={() => setTheme('royal')}>
Royal Tema'ya Geç
</button>
);
}import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Badge } from '@/components/ui/badge';
function MyPage() {
return (
<Card>
<CardHeader>
<CardTitle>Başlık</CardTitle>
</CardHeader>
<CardContent>
<Button variant="default" size="lg">
Tıkla
</Button>
<Badge variant="secondary">Yeni</Badge>
</CardContent>
</Card>
);
}import { StatsCard } from '@/components/ui/stats-card';
import { DataTable } from '@/components/ui/data-table';
import { ActivityFeed } from '@/components/ui/activity-feed';
function Dashboard() {
return (
<div className="space-y-6">
<StatsCard
title="Toplam Kullanıcı"
value={12543}
change={15.2}
changeType="positive"
icon={Users}
/>
<DataTable
data={userData}
columns={userColumns}
title="Kullanıcı Listesi"
searchable={true}
exportable={true}
/>
</div>
);
}import { AIChat, AISearch, AIInsights } from '@/components/ui/ai';
function AIPage() {
return (
<div>
{/* AI Sohbet - Sayfanın herhangi bir yerinde */}
<AIChat />
{/* AI Arama */}
<AISearch />
{/* AI Analiz */}
<AIInsights />
</div>
);
}import { Card3D, ImageCard3D } from '@/components/ui/3d-card';
import { GlassmorphismCard } from '@/components/ui/glassmorphism-card';
import { HolographicCard } from '@/components/ui/holographic-card';
function PremiumPage() {
return (
<div className="grid gap-6 md:grid-cols-3">
<Card3D intensity={20} scale={1.05}>
<Card>
<CardContent className="p-6">
<h3>3D Kart</h3>
</CardContent>
</Card>
</Card3D>
<GlassmorphismCard
title="Glassmorphism"
description="Modern cam efekti"
icon={Sparkles}
variant="primary"
/>
<HolographicCard
title="Hologram"
description="Futuristik efekt"
icon={Zap}
/>
</div>
);
}/* src/index.css */
:root {
--primary: 59 130 246; /* Mavi */
--secondary: 139 92 246; /* Mor */
--accent: 16 185 129; /* Yeşil */
--background: 0 0% 100%; /* Beyaz */
--foreground: 222.2 84% 4.9%; /* Koyu */
}// src/contexts/ThemeContext.tsx
const themes = {
// ... mevcut temalar
myCustomTheme: {
name: 'Özel Tema',
description: 'Benim özel temam',
colors: {
background: '0 0% 100%',
foreground: '222.2 84% 4.9%',
primary: '346.8 77.2% 49.8%', // Kırmızı
// ... diğer renkler
},
gradient: 'linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%)'
}
};// tailwind.config.ts
module.exports = {
theme: {
extend: {
colors: {
brand: {
50: '#fef7ee',
500: '#f2751a',
900: '#7a2e12',
},
},
},
},
}// src/pages/MyNewPage.tsx
import { Helmet } from "react-helmet-async";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
export default function MyNewPage() {
return (
<>
<Helmet>
<title>Yeni Sayfa - React19 Admin</title>
<meta name="description" content="Yeni sayfa açıklaması" />
</Helmet>
<div className="space-y-6">
<div>
<h1 className="text-3xl font-bold">Yeni Sayfa</h1>
<p className="text-muted-foreground">Sayfa açıklaması</p>
</div>
<Card>
<CardHeader>
<CardTitle>İçerik Başlığı</CardTitle>
</CardHeader>
<CardContent>
<p>Sayfa içeriği buraya gelecek...</p>
<Button className="mt-4">Aksiyon Butonu</Button>
</CardContent>
</Card>
</div>
</>
);
}// src/App.tsx
import MyNewPage from "./pages/MyNewPage";
// Routes içine ekleyin
<Route element={<AppLayout />}>
{/* ... mevcut route'lar */}
<Route path="/my-new-page" element={<MyNewPage />} />
</Route>// src/components/AppSidebar.tsx
const mainItems = [
// ... mevcut menü öğeleri
{
title: "Yeni Sayfa",
url: "/my-new-page",
icon: FileText,
badge: "Yeni"
},
];<StatsCard
title="Özel Metrik"
value={12345}
change={15.2}
changeType="positive"
icon={TrendingUp}
description="Bu ay"
prefix="₺"
suffix=""
decimals={0}
gradient={true}
className="hover:scale-105"
/>const columns = [
{
key: 'name',
title: 'Ad',
sortable: true
},
{
key: 'status',
title: 'Durum',
render: (value) => (
<Badge variant={value === 'active' ? 'default' : 'secondary'}>
{value}
</Badge>
)
}
];
<DataTable
data={myData}
columns={columns}
title="Veri Tablosu"
searchable={true}
filterable={true}
exportable={true}
pageSize={10}
/>// AI Chat'i layout'a ekleyin
function AppLayout() {
return (
<div>
{/* ... layout içeriği */}
<AIChat /> {/* Floating chat button */}
</div>
);
}
// AI Search'ü header'a ekleyin
function Header() {
return (
<header>
<AISearch />
</header>
);
}// src/contexts/LanguageContext.tsx
const translations = {
tr: {
// ... Türkçe çeviriler
},
en: {
// ... İngilizce çeviriler
},
de: { // Yeni dil
nav: {
dashboard: 'Dashboard',
users: 'Benutzer',
// ... Almanca çeviriler
}
}
};import { useLanguage } from '@/contexts/LanguageContext';
function MyComponent() {
const { t } = useLanguage();
return (
<div>
<h1>{t('nav.dashboard')}</h1>
<p>{t('dashboard.welcome')}</p>
</div>
);
}# Production build
npm run build
# Build'i önizleme
npm run preview# .env.local
VITE_APP_NAME=Sizin Uygulama Adınız
VITE_API_URL=https://api.yourdomain.com
VITE_AUTH_DOMAIN=auth.yourdomain.com# Build alın
npm run build
# dist/ klasörünü Netlify'a yükleyin# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]// src/components/ui/my-component.tsx
import React from 'react';
import { cn } from '@/lib/utils';
interface MyComponentProps {
title: string;
className?: string;
children?: React.ReactNode;
}
export function MyComponent({ title, className, children }: MyComponentProps) {
return (
<div className={cn("p-4 border rounded-lg", className)}>
<h3 className="font-semibold mb-2">{title}</h3>
{children}
</div>
);
}// src/hooks/use-api.ts
import { useState, useEffect } from 'react';
export function useApi<T>(url: string) {
const [data, setData] = useState<T | null>(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null);
useEffect(() => {
fetch(url)
.then(res => res.json())
.then(data => {
setData(data);
setLoading(false);
})
.catch(err => {
setError(err.message);
setLoading(false);
});
}, [url]);
return { data, loading, error };
}/* Tailwind CSS breakpoints */
sm: 640px /* Küçük cihazlar */
md: 768px /* Orta cihazlar */
lg: 1024px /* Büyük cihazlar */
xl: 1280px /* Çok büyük cihazlar */
2xl: 1536px /* 2X büyük cihazlar */function ResponsiveComponent() {
return (
<div className="
grid
grid-cols-1 /* Mobil: 1 sütun */
md:grid-cols-2 /* Orta: 2 sütun */
lg:grid-cols-3 /* Büyük: 3 sütun */
xl:grid-cols-4 /* Çok büyük: 4 sütun */
gap-4
">
{/* İçerik */}
</div>
);
}# Farklı port kullanın
npm run dev -- --port 3001# Cache'i temizleyin
rm -rf node_modules/.cache/typescript/
npm install# Build cache'ini temizleyin
rm -rf dist/ .vite/
npm run build# Import yollarını kontrol edin
# @/ alias'ının doğru kullanıldığından emin olun// Lazy loading kullanın
const MyPage = lazy(() => import('./pages/MyPage'));
// useMemo ile pahalı hesaplamaları optimize edin
const expensiveValue = useMemo(() => {
return heavyCalculation(data);
}, [data]);
// React.memo ile komponentleri optimize edin
const MyComponent = React.memo(function MyComponent({ data }) {
return <div>{data}</div>;
});- shadcn/ui - Temel komponent kütüphanesi
- Radix UI - Headless komponentler
- Lucide React - İkon kütüphanesi
- 📧 E-posta: support@clapton-admin.com
- 💬 Discord: Topluluk sunucusu
- 📖 Dokümantasyon: docs.clapton-admin.com
- 🐛 Issues: GitHub Issues
/showcasesayfasını ziyaret edin- Her komponent kategorisini inceleyin
- Canlı örnekleri test edin
- Yukarıdaki rehberi takip ederek yeni sayfalar ekleyin
- Mevcut komponentleri kullanarak hızlıca geliştirin
- Backend API'nizi entegre edin
- Gerçek veri ile komponentleri test edin
- Tema renklerini markanıza uygun hale getirin
- Logo ve favicon'u değiştirin
- Kendi komponentlerinizi ekleyin
- Production build alın
- Hosting platformuna deploy edin
- Domain ve SSL ayarlarını yapın
React 19 Clapton Admin Template'i başarıyla kurdunuz!
- 🏠 Ana Sayfa:
/ - 📊 Dashboard:
/dashboard - 🎨 Komponentler:
/showcase - 🤖 AI Özellikler:
/showcase/ai - ⭐ Premium:
/showcase/premium
- Dokümantasyon dosyasını inceleyin
- Component API referansını kullanın
- Changelog ile güncellemeleri takip edin
Başarılı projeler dileriz! 🚀
Clapton Team tarafından ❤️ ile yapılmıştır