import type { Metadata } from "next"; export const metadata: Metadata = { title: "Kaptanın Seyir Defteri" }; interface Goal { id: string; title: string; description: string; status: "completed" | "in-progress" | "planned" | "paused"; progress: number; category: string; deadline?: string; notes?: string; } const goals: Goal[] = [ { id: "1", title: "OSCP Sertifikası", description: "Offensive Security Certified Professional sınavını geçmek", status: "in-progress", progress: 35, category: "Sertifika", deadline: "2026-12-31", notes: "Active Directory modüllerine odaklanılıyor", }, { id: "2", title: "denizbektas.com.tr Yayına Almak", description: "Kişisel siteyi oluşturmak ve yayına almak", status: "completed", progress: 100, category: "Proje", }, { id: "3", title: "50 HTB Makinesi", description: "HackTheBox'ta 50 makine çözmek", status: "in-progress", progress: 47, category: "Pratik", }, { id: "4", title: "Podcast Başlatmak", description: "Türkçe siber güvenlik podcast'i yayınlamak", status: "planned", progress: 10, category: "İçerik", deadline: "2026-09-01", }, { id: "5", title: "Red Team Araç Geliştirme", description: "Kendi C2 implant'ımı yazmak (Rust ile)", status: "paused", progress: 15, category: "Geliştirme", }, { id: "6", title: "10 Infosec Yazısı", description: "Kaliteli teknik yazılar yayınlamak", status: "in-progress", progress: 10, category: "İçerik", }, ]; const statusConfig = { completed: { label: "Tamamlandı", color: "#00d4aa", icon: "✓" }, "in-progress": { label: "Devam Ediyor", color: "#f59e0b", icon: "◉" }, planned: { label: "Planlandı", color: "#64748b", icon: "◎" }, paused: { label: "Durduruldu", color: "#ef4444", icon: "⏸" }, }; export default function SeyirDefteriPage() { const byCategory = goals.reduce((acc, g) => { if (!acc[g.category]) acc[g.category] = []; acc[g.category].push(g); return acc; }, {} as Record); return (
Kaptanın Seyir Defteri

Hedeflerim ve ilerleme durumum

{/* Summary */}
{(["completed", "in-progress", "planned", "paused"] as const).map((s) => { const count = goals.filter((g) => g.status === s).length; const cfg = statusConfig[s]; return (
{count}
{cfg.label}
); })}
{/* Goals by category */} {Object.entries(byCategory).map(([cat, catGoals]) => (
{cat}
{catGoals.map((goal) => { const cfg = statusConfig[goal.status]; return (
{cfg.icon}

{goal.title}

{goal.description}

{cfg.label}
{/* Progress bar */}
İlerleme {goal.progress}%
{(goal.deadline || goal.notes) && (
{goal.deadline && 🗓 {new Date(goal.deadline).toLocaleDateString("tr-TR", { year: "numeric", month: "long" })}} {goal.notes && 📝 {goal.notes}}
)}
); })}
))}
); }