diff --git a/src/App.jsx b/src/App.jsx index cb31009..6b19ec9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,10 +2,11 @@ import React from 'react'; import { BrowserRouter as Router, Routes, Route, useLocation } from 'react-router-dom'; import Home from './pages/Home'; import Portal from './pages/Portal'; -import LockliPrivacy from './pages/LockliPrivacy'; // <-- YENİ EKLENDİ +import LockliPrivacy from './pages/LockliPrivacy'; +import PasswordManagerDetail from './pages/PasswordManagerDetail'; + import { AnimatePresence } from 'framer-motion'; -// Animasyonlu geçişler için bir Wrapper bileşeni function AnimatedRoutes() { const location = useLocation(); @@ -14,9 +15,10 @@ function AnimatedRoutes() { } /> } /> - - {/* Lockli Privacy Policy – yalnızca URL'den erişilecek */} + } /> + + } /> ); @@ -30,4 +32,4 @@ function App() { ); } -export default App; +export default App; \ No newline at end of file diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index 32a6c71..78f54ed 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -3,11 +3,10 @@ import { motion, AnimatePresence } from 'framer-motion'; import { useNavigate } from 'react-router-dom'; import { Terminal, Globe, Shield, Database, - Github, Twitter, Linkedin, Mail, Lock, X, ChevronRight, ExternalLink, - Coffee, Zap, Smartphone, Layers, Box, Server, Loader2 // Loader2 eklendi + Mail, Lock, X, ChevronRight, ExternalLink, Github, Linkedin, + Coffee, Zap, Smartphone, Layers, Box, Server, Loader2 } from 'lucide-react'; -// --- YETENEKLER --- const skills = [ { name: "Java", icon: , desc: "Core & Enterprise" }, { name: "Spring Boot", icon: , desc: "Microservices" }, @@ -27,10 +26,10 @@ const projects = [ link: "#" }, { - title: "Mobil Sosyal Medya Uygulaması", - desc: "Flutter kullanılarak geliştirilen, hem iOS hem Android uyumlu modern arayüzlü sosyal medya uygulaması.", - tags: ["Flutter", "Dart", "Rest API"], - link: "#" + title: "Mobil Offline Parola Yöneticisi", + desc: "Flutter kullanılarak geliştirilen, hem iOS hem Android uyumlu modern arayüzlü tamamen local parola yöneticisi.", + tags: ["Flutter", "Dart", "HiveDB"], + link: "/projects/lockli" }, { title: "Linux Tabanlı Sunucu Altyapısı", @@ -45,7 +44,6 @@ export default function Home() { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); - // Yeni State'ler const [error, setError] = useState(""); const [isLoading, setIsLoading] = useState(false); @@ -73,13 +71,10 @@ export default function Home() { const data = await response.json(); if (response.ok) { - // Başarılı giriş: Token'ı sakla - // Backend'den { token: "..." } veya { accessToken: "..." } döndüğünü varsayıyoruz. sessionStorage.setItem('authToken', data.token || data.accessToken); - sessionStorage.setItem('user', JSON.stringify(data.user)); // Opsiyonel: Kullanıcı bilgisini sakla + sessionStorage.setItem('user', JSON.stringify(data.user)); navigate('/portal'); } else { - // Backend'den gelen hata mesajını göster setError(data.message || "Giriş başarısız. Bilgileri kontrol edin."); } } catch (err) { @@ -190,7 +185,6 @@ export default function Home() { - {/* --- PROJELER --- */}

@@ -198,7 +192,14 @@ export default function Home() {

{projects.map((project, index) => ( -
+
{ + if (project.link.startsWith('/')) { + navigate(project.link); + } + else if (project.link !== '#') { + window.open(project.link, '_blank'); + } + }} className="glass-panel p-6 rounded-2xl hover:-translate-y-1 transition-transform duration-300 flex flex-col h-full cursor-pointer group">

{project.title}

{project.desc}

@@ -208,16 +209,15 @@ export default function Home() { ))}
- +
))}
- {/* --- İLETİŞİM --- */}

İletişime Geç

@@ -240,7 +240,6 @@ export default function Home() {
- {/* --- LOGİN MODAL --- */} {isModalOpen && (
diff --git a/src/pages/PasswordManagerDetail.jsx b/src/pages/PasswordManagerDetail.jsx new file mode 100644 index 0000000..6618e18 --- /dev/null +++ b/src/pages/PasswordManagerDetail.jsx @@ -0,0 +1,155 @@ +import React from 'react'; +import { motion } from 'framer-motion'; +import { useNavigate } from 'react-router-dom'; +import { + ArrowLeft, Shield, Smartphone, Lock, + WifiOff, Database, Apple, Play, CheckCircle +} from 'lucide-react'; + +export default function PasswordManagerDetail() { + const navigate = useNavigate(); + + // Özellik listesi + const features = [ + "AES-256 Bit Şifreleme", + "İnternet İzni Gerektirmez (Tamamen Offline)", + "Biyometrik Giriş (FaceID / TouchID)", + "Otomatik Parola Oluşturucu", + "Kategorize Edilmiş Kayıtlar", + "Yedekleme ve Geri Yükleme (Şifreli)" + ]; + + return ( +
+ + {/* --- NAVBAR / GERİ DÖN --- */} + + + {/* --- İÇERİK --- */} +
+
+ + {/* --- SOL TARAFTAKİ GÖRSEL ALANI --- */} + + {/* Logo ve Başlık (Mobil Görünüm için) */} +
+
+ +
+

Mobil Offline
Parola Yöneticisi

+
+ + {/* Telefon Mockup'ı */} +
+ {/* Ekran İçi Temsili Görsel */} +
+ +

Güvenli Kasa

+

Tüm verileriniz cihazınızda şifreli olarak saklanır.

+ +
+
+
+
+
+
+ + {/* Kamera Çentiği */} +
+
+ + {/* Alt Bilgi Kartları */} +
+
+ + iOS & Android +
+
+ + %100 Offline +
+
+ + Hive DB +
+
+
+ + {/* --- SAĞ TARAFTAKİ DETAYLAR --- */} + + {/* Logo ve Başlık (Desktop) */} +
+
+ +
+
+

Mobil Offline Parola Yöneticisi

+ v1.2.0 Stable +
+
+ +

Proje Hakkında

+

+ Günümüzdeki bulut tabanlı parola yöneticilerinin güvenlik risklerine karşı geliştirilmiş, tamamen yerel çalışan bir mobil uygulamadır. + Hiçbir veriniz sunucuya gönderilmez. Flutter ile geliştirilen uygulama, Hive veritabanı kullanarak verileri cihazınızın belleğinde + şifreli (AES-256) olarak saklar. +

+ +

Öne Çıkan Özellikler

+
    + {features.map((item, index) => ( +
  • + + {item} +
  • + ))} +
+ +
+

Şimdi İndirin

+
+ {/* App Store Butonu */} + + + {/* Google Play Butonu */} + +
+
+ +
+
+
+
+ ); +} \ No newline at end of file