+
+ {/* Logo */}
+
+
+
+
+ {/* Desktop Navigation */}
+
+
+ {/* Mobile Menu Button */}
+
+
+
+ {/* Mobile Menu - Slide from Right */}
+
+ {/* Menu Header */}
+
+
+ MENÜ
+
+
+
+ {/* Menu Links */}
+
+
+ {/* Menu Footer */}
+
+
+
+ Ergenekon R&D Team
+
+
+
+
+ {/* Mobile Menu Overlay */}
+ {isMobileMenuOpen && (
+
setIsMobileMenuOpen(false)}
+ />
+ )}
+
+
+ )
+}
+
+export default Navbar
diff --git a/src/components/ParticleBackground.jsx b/src/components/ParticleBackground.jsx
new file mode 100644
index 0000000..36e4f1a
--- /dev/null
+++ b/src/components/ParticleBackground.jsx
@@ -0,0 +1,134 @@
+import { useState, useEffect, useRef } from 'react'
+
+// Particle class for background animation
+class Particle {
+ constructor(canvas) {
+ this.canvas = canvas
+ this.x = Math.random() * canvas.width
+ this.y = Math.random() * canvas.height
+ this.size = Math.random() * 2 + 0.5
+ this.speedX = (Math.random() - 0.5) * 0.5
+ this.speedY = (Math.random() - 0.5) * 0.5
+ this.opacity = Math.random() * 0.5 + 0.2
+ }
+
+ update(mouseX, mouseY) {
+ this.x += this.speedX
+ this.y += this.speedY
+
+ // Mouse interaction - particles move away from cursor
+ if (mouseX && mouseY) {
+ const dx = this.x - mouseX
+ const dy = this.y - mouseY
+ const distance = Math.sqrt(dx * dx + dy * dy)
+ if (distance < 100) {
+ const force = (100 - distance) / 100
+ this.x += dx * force * 0.02
+ this.y += dy * force * 0.02
+ }
+ }
+
+ // Wrap around edges
+ if (this.x < 0) this.x = this.canvas.width
+ if (this.x > this.canvas.width) this.x = 0
+ if (this.y < 0) this.y = this.canvas.height
+ if (this.y > this.canvas.height) this.y = 0
+ }
+
+ draw(ctx) {
+ ctx.beginPath()
+ ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2)
+ ctx.fillStyle = `rgba(220, 38, 38, ${this.opacity})`
+ ctx.fill()
+ }
+}
+
+export default function ParticleBackground() {
+ const canvasRef = useRef(null)
+ const particlesRef = useRef([])
+ const mouseRef = useRef({ x: null, y: null })
+ const animationRef = useRef(null)
+
+ useEffect(() => {
+ const canvas = canvasRef.current
+ if (!canvas) return
+
+ const ctx = canvas.getContext('2d')
+
+ const resizeCanvas = () => {
+ canvas.width = window.innerWidth
+ canvas.height = window.innerHeight
+ initParticles()
+ }
+
+ const initParticles = () => {
+ particlesRef.current = []
+ const particleCount = Math.floor((canvas.width * canvas.height) / 15000)
+ for (let i = 0; i < Math.min(particleCount, 100); i++) {
+ particlesRef.current.push(new Particle(canvas))
+ }
+ }
+
+ const animate = () => {
+ ctx.clearRect(0, 0, canvas.width, canvas.height)
+
+ particlesRef.current.forEach((particle, index) => {
+ particle.update(mouseRef.current.x, mouseRef.current.y)
+ particle.draw(ctx)
+
+ // Draw connections between nearby particles
+ for (let j = index + 1; j < particlesRef.current.length; j++) {
+ const other = particlesRef.current[j]
+ const dx = particle.x - other.x
+ const dy = particle.y - other.y
+ const distance = Math.sqrt(dx * dx + dy * dy)
+
+ if (distance < 120) {
+ ctx.beginPath()
+ ctx.moveTo(particle.x, particle.y)
+ ctx.lineTo(other.x, other.y)
+ ctx.strokeStyle = `rgba(220, 38, 38, ${0.1 * (1 - distance / 120)})`
+ ctx.lineWidth = 0.5
+ ctx.stroke()
+ }
+ }
+ })
+
+ animationRef.current = requestAnimationFrame(animate)
+ }
+
+ const handleMouseMove = (e) => {
+ mouseRef.current.x = e.clientX
+ mouseRef.current.y = e.clientY
+ }
+
+ const handleMouseLeave = () => {
+ mouseRef.current.x = null
+ mouseRef.current.y = null
+ }
+
+ resizeCanvas()
+ animate()
+
+ window.addEventListener('resize', resizeCanvas)
+ window.addEventListener('mousemove', handleMouseMove)
+ window.addEventListener('mouseleave', handleMouseLeave)
+
+ return () => {
+ window.removeEventListener('resize', resizeCanvas)
+ window.removeEventListener('mousemove', handleMouseMove)
+ window.removeEventListener('mouseleave', handleMouseLeave)
+ if (animationRef.current) {
+ cancelAnimationFrame(animationRef.current)
+ }
+ }
+ }, [])
+
+ return (
+
+ )
+}
diff --git a/src/components/Partners.jsx b/src/components/Partners.jsx
new file mode 100644
index 0000000..2bdcc2a
--- /dev/null
+++ b/src/components/Partners.jsx
@@ -0,0 +1,67 @@
+import { motion } from 'framer-motion'
+
+const Partners = () => {
+ const partners = [
+ { name: "Gazi Üniversitesi", type: "Akademik" },
+ { name: "TEKNOFEST", type: "Platform" },
+ { name: "TÜBİTAK", type: "Destek" },
+ { name: "T.C. Ulaştırma Bakanlığı", type: "Kamu" },
+ ]
+
+ return (
+
+ {/* Subtle Background */}
+
+
+
+ {/* Header */}
+
+
+ Paydaşlarımız ve Destekçilerimiz
+
+
+
+ {/* Partners Grid */}
+
+ {partners.map((partner, index) => (
+
+ {/* Partner Name as Typography */}
+
+ {partner.name}
+
+ {/* Type Badge */}
+
+ {partner.type}
+
+
+ ))}
+
+
+ {/* Decorative Line */}
+
+
+
+ )
+}
+
+export default Partners
diff --git a/src/components/ProjectDetail.jsx b/src/components/ProjectDetail.jsx
new file mode 100644
index 0000000..8ee1424
--- /dev/null
+++ b/src/components/ProjectDetail.jsx
@@ -0,0 +1,143 @@
+import { motion, AnimatePresence } from 'framer-motion'
+
+const ProjectDetail = ({ project, isOpen, onClose }) => {
+ if (!project) return null
+
+ const statusColors = {
+ 'Aktif Geliştirme': 'bg-green-500/20 text-green-400 border-green-500/30',
+ 'Tamamlandı': 'bg-blue-500/20 text-blue-400 border-blue-500/30',
+ 'Planlama': 'bg-yellow-500/20 text-yellow-400 border-yellow-500/30',
+ 'Prototip': 'bg-purple-500/20 text-purple-400 border-purple-500/30',
+ }
+
+ return (
+
+ {isOpen && (
+ <>
+ {/* Backdrop */}
+
+
+ {/* Modal */}
+
+
+
+
+ {/* Close Button */}
+
+
+ {/* Header with Image */}
+
+

+
+
+ {/* Category Badge */}
+
+ {project.category}
+
+
+
+ {/* Content */}
+
+ {/* Title & Status Row */}
+
+
+ {project.title}
+
+
+ {project.status}
+
+
+ {project.year}
+
+
+
+ {/* Full Description */}
+
+
+ Proje Hakkında
+
+
+ {project.fullDescription}
+
+
+
+ {/* Achievements */}
+ {project.achievements && project.achievements.length > 0 && (
+
+
+ Başarılar & Ödüller
+
+
+ {project.achievements.map((achievement, index) => (
+
+
+ {achievement}
+
+ ))}
+
+
+ )}
+
+ {/* Back Button */}
+
+
+
+
+
+
+
+ >
+ )}
+
+ )
+}
+
+export default ProjectDetail
diff --git a/src/components/Projects.jsx b/src/components/Projects.jsx
new file mode 100644
index 0000000..dd717a4
--- /dev/null
+++ b/src/components/Projects.jsx
@@ -0,0 +1,177 @@
+import { motion } from 'framer-motion'
+import { projects } from '../data/content'
+import { useState } from 'react'
+import ProjectDetail from './ProjectDetail'
+
+const Projects = () => {
+ const [selectedProject, setSelectedProject] = useState(null)
+ const [isModalOpen, setIsModalOpen] = useState(false)
+
+ const openProject = (project) => {
+ setSelectedProject(project)
+ setIsModalOpen(true)
+ document.body.style.overflow = 'hidden'
+ }
+
+ const closeProject = () => {
+ setIsModalOpen(false)
+ setSelectedProject(null)
+ document.body.style.overflow = 'auto'
+ }
+
+ const containerVariants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: {
+ staggerChildren: 0.1,
+ delayChildren: 0.1
+ }
+ }
+ }
+
+ const cardVariants = {
+ hidden: { opacity: 0, y: 40 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.5, ease: 'easeOut' }
+ }
+ }
+
+ return (
+ <>
+
+ {/* Background Glow - Left */}
+
+
+ {/* Background Glow - Right */}
+
+
+
+ {/* Section Header */}
+
+
+ {'{ '}
+ Projelerimiz
+ {' }'}
+
+
+ Savunma sanayii, uzay havacılık ve siber güvenlik alanlarında
+ geliştirdiğimiz yenilikçi projeler.
+
+
+
+ {/* Projects Grid with Staggered Animation */}
+
+ {projects.map((project) => (
+ openProject(project)}
+ className="group relative bg-black/50 backdrop-blur-md border border-white/10
+ rounded-xl overflow-hidden cursor-pointer
+ transition-all duration-300 ease-in-out
+ hover:border-ergenekon-bright
+ hover:shadow-[0_0_25px_rgba(220,38,38,0.5)]"
+ >
+ {/* Holographic Shimmer Effect */}
+
+
+ {/* Project Image */}
+
+

+ {/* Overlay */}
+
+
+ {/* Category Badge */}
+
+ {project.category}
+
+
+
+ {/* Project Info */}
+
+ {/* Glow line at top */}
+
+
+
+ {project.title}
+
+
+ {project.description}
+
+
+ {/* Read More Link */}
+
+
+
+ {/* Corner Accent */}
+
+
+ ))}
+
+
+
+
+ {/* Project Detail Modal */}
+
+ >
+ )
+}
+
+export default Projects
diff --git a/src/components/Team.jsx b/src/components/Team.jsx
new file mode 100644
index 0000000..d9a1ad4
--- /dev/null
+++ b/src/components/Team.jsx
@@ -0,0 +1,241 @@
+import { motion, AnimatePresence } from 'framer-motion'
+import { teamStructure } from '../data/content'
+import { useState } from 'react'
+
+const Team = () => {
+ const [activeTab, setActiveTab] = useState('software')
+
+ const tabLabels = {
+ software: 'Yazılım',
+ mechanics: 'Mekanik',
+ electronics: 'Elektronik'
+ }
+
+ const containerVariants = {
+ hidden: { opacity: 0 },
+ visible: {
+ opacity: 1,
+ transition: { staggerChildren: 0.1 }
+ }
+ }
+
+ const itemVariants = {
+ hidden: { opacity: 0, y: 20 },
+ visible: {
+ opacity: 1,
+ y: 0,
+ transition: { duration: 0.4 }
+ }
+ }
+
+ return (
+
+ {/* Background Glows */}
+
+
+
+
+ {/* Section Header */}
+
+
+ {'< '}
+ Ekibimiz
+ {' />'}
+
+
+ Yerli ve milli teknoloji için çalışan tutkulu ekibimiz.
+
+
+
+ {/* SECTION 1: Leadership - Komuta Kademesi */}
+
+
+ Komuta Kademesi
+
+
+ {teamStructure.leadership.map((leader, index) => (
+
+ {/* Gold/Red accent corner */}
+
+
+
+
+

+
+
+ {leader.name}
+
+
+ {leader.role}
+
+
+ ))}
+
+
+
+ {/* SECTION 2: Boards - Kurullar */}
+
+ {/* Audit Board */}
+
+
+ Denetim Kurulu
+
+
+ {teamStructure.auditBoard.map((member, index) => (
+
+
+

+
+
{member.name}
+
{member.role}
+
+ ))}
+
+
+
+ {/* Management Board - 3x2 Grid */}
+
+
+ Yönetim Kurulu
+
+
+ {teamStructure.managementBoard.map((member, index) => (
+
+
+

+
+ {member.name}
+ YK Üyesi
+
+ ))}
+
+
+
+
+ {/* SECTION 3: Sub-Teams with Tabs */}
+
+
+ Teknik Ekipler
+
+
+ {/* Tabs */}
+
+ {Object.keys(tabLabels).map((tabKey) => (
+
+ ))}
+
+
+ {/* Tab Content */}
+
+
+
+ {teamStructure.subTeams[activeTab]?.map((member, index) => (
+
+
+

+
+ {member.name}
+ {member.role}
+
+ ))}
+
+
+
+
+
+
+ )
+}
+
+export default Team
diff --git a/src/data/content.js b/src/data/content.js
index c4637b7..197e5e4 100644
--- a/src/data/content.js
+++ b/src/data/content.js
@@ -1,85 +1,133 @@
// src/data/content.js
+// Hero Bölümü Verileri
export const heroContent = {
- title: "GAZISIBER",
- subtitle: "< CYBER_SECURITY_COMMUNITY />",
- description: "Gazi Üniversitesi'nin dijital kalesi. Siber güvenlik, yapay zeka, özgür yazılım ve ileri Ar-Ge çalışmalarının merkezi.",
- ctaPrimary: "Aramıza Katıl",
- ctaSecondary: "Takımlarımız",
+ title: "ERGENEKON R&D TEAM",
+ subtitle: "GAZİ ÜNİVERSİTESİ",
+ description: "Milli Savunma ve İleri Teknoloji için Yenilikçi, Yerli ve Milli Çözümler.",
+ ctaPrimary: "Projelerimiz",
+ ctaSecondary: "İletişim",
};
+// Hakkımızda ve İstatistikler
export const aboutContent = {
- title: "system_info",
- text: "2015'ten beri 'Hacktrick', 'SiberVatan' ve uluslararası CTF başarılarıyla bilinen, Türkiye'nin en aktif teknoloji topluluğuyuz.",
+ title: "Biz Kimiz?",
+ text: "2024 yılında Gazi Üniversitesi'nde kurulan, modern dünyanın dijital tehditlerine boyun eğmeyen, donanımlı bireyler yetiştirmeyi amaçlayan bir AR-GE takımıyız. Savunma sanayii, uzay havacılık ve siber güvenlik alanlarında projeler geliştiriyoruz.",
stats: [
- { number: "4", label: "Aktif Takım" },
- { number: "50+", label: "Yıllık Etkinlik" },
- { number: "1500+", label: "Topluluk Üyesi" },
+ { number: "5", label: "BAP Projesi" },
+ { number: "4", label: "TÜBİTAK Projesi" },
+ { number: "3", label: "TEKNOFEST Finali" },
+ { number: "1", label: "TÜBİTAK 1001 Projesi" },
+ { number: "2", label: "Hackathon Ödülü" },
+ { number: "1", label: "Fikir Yarışması Ödülü" },
+ { number: "420K", label: "Ödül Desteği" },
]
};
-// GÜNCELLENEN KISIM: 4 ANA TAKIM
-export const teams = [
+// Projeler Listesi
+export const projects = [
{
- id: "siber",
- name: "Siber Güvenlik Takımı",
- role: "Blue & Red Teaming",
- desc: "CTF yarışmaları, penetrasyon testleri ve ağ güvenliği çalışmaları.",
- color: "cyan", // Neon Mavi
- icon: "ShieldCheck"
+ id: 1,
+ slug: "burkay",
+ title: "BURKAY",
+ category: "Air Defense Systems",
+ description: "Lazer güdümlü ve yapay zeka tabanlı akıllı hava savunma sistemi. Video Kabiliyet Gösterimi aşamasına kadar ilerlemiştir.",
+ fullDescription: "BURKAY projesi, lazer güdümlü ve yapay zeka tabanlı akıllı hava savunma sistemi olarak tasarlanmıştır. Proje, düşman insansız hava araçlarını tespit etmek ve etkisiz hale getirmek için geliştirilen yenilikçi bir sistemdir. Video Kabiliyet Gösterimi aşamasına kadar başarıyla ilerlemiştir.",
+ image: "/images/logo-full.png",
+ status: "Aktif Geliştirme",
+ year: "2024",
+ achievements: ["Video Kabiliyet Gösterimi", "BAP Desteği"]
},
{
- id: "ai",
- name: "Yapay Zeka Takımı",
- role: "AI & Data Science",
- desc: "Makine öğrenmesi, derin öğrenme ve veri analitiği projeleri.",
- color: "purple", // Mor
- icon: "BrainCircuit"
+ id: 2,
+ slug: "kizilyel",
+ title: "KIZILYEL",
+ category: "5G Positioning",
+ description: "TEKNOFEST 5G Konumlandırma Yarışması'nda 'En Özgün Yazılım' ödülü alan projemiz.",
+ fullDescription: "KIZILYEL projesi, 5G teknolojileri kullanarak yüksek hassasiyetli konum belirleme sistemi geliştirmektedir. TEKNOFEST 5G Konumlandırma Yarışması'nda 'En Özgün Yazılım' ödülünü kazanmış olan proje, savunma, lojistik ve acil müdahale senaryolarında kullanılmak üzere tasarlanmıştır.",
+ image: "/images/logo-full.png",
+ status: "Tamamlandı",
+ year: "2024",
+ achievements: ["TEKNOFEST En Özgün Yazılım Ödülü", "5G İnovasyon"]
},
{
- id: "pardus",
- name: "Pardus & Özgür Yazılım",
- role: "Open Source",
- desc: "Linux sistem yönetimi, açık kaynak geliştirme ve Pardus ekosistemi.",
- color: "green", // Terminal Yeşili
- icon: "Terminal"
+ id: 3,
+ slug: "gokyel",
+ title: "GÖKYEL",
+ category: "Satellite Communication",
+ description: "Güvenli Uydu Haberleşmesi projesi. Fikir detay raporu aşamasına kadar başarıyla gelmiştir.",
+ fullDescription: "GÖKYEL projesi, güvenli ve şifreli uydu haberleşmesi sağlamak amacıyla geliştirilmektedir. Milli ve yerli çözümlerle donatılan sistem, kritik altyapı ve savunma haberleşmesinde kullanılmak üzere tasarlanmıştır. Fikir detay raporu aşamasına kadar başarıyla ilerlemiştir.",
+ image: "/images/logo-full.png",
+ status: "Planlama",
+ year: "2024",
+ achievements: ["Fikir Detay Raporu", "TÜBİTAK Başvurusu"]
},
{
- id: "ergenekon",
- name: "Ergenekon R&D Team",
- role: "Defense Tech",
- desc: "Savunma sanayii, İHA/SİHA sistemleri ve donanım güvenliği.",
- color: "red", // Ergenekon Kırmızısı
- icon: "Rocket"
+ id: 4,
+ slug: "kuant-us",
+ title: "KUANT-US",
+ category: "Quantum Security",
+ description: "Kuantum Dirençli, Otonom ve Donanım Uyumlu Uydu Güvenliği Sistemi. UDHAM mansiyon ödülü sahibi.",
+ fullDescription: "KUANT-US, kuantum bilgisayarlara karşı dirençli şifreleme algoritmaları kullanarak uydu haberleşmesinin güvenliğini sağlamayı hedefleyen bir projedir. Otonom çalışma kapasitesi ve mevcut donanımlarla uyumlu tasarımıyla öne çıkmaktadır. UDHAM yarışmasında mansiyon ödülü kazanmıştır.",
+ image: "/images/logo-full.png",
+ status: "Aktif Geliştirme",
+ year: "2024",
+ achievements: ["UDHAM Mansiyon Ödülü", "Kuantum Şifreleme Araştırması"]
}
];
-export const activities = [
- {
- title: "HACKTRICK",
- date: "Mayıs 2025",
- type: "Konferans",
- desc: "Siber güvenlik dünyasının devleri Gazi'de buluşuyor.",
- },
- {
- title: "TEA & TALK",
- date: "Her Ay",
- type: "Networking",
- desc: "Sektör liderleriyle çay eşliğinde kariyer sohbetleri.",
- },
- {
- title: "BOOTCAMPS",
- date: "Dönem Boyunca",
- type: "Eğitim",
- desc: "Sıfırdan ileri seviyeye teknik eğitim maratonları.",
- }
-];
+// İletişim Bilgileri (GÜNCELLENDİ: Gökhan Tonkal)
+export const teamContact = {
+ name: "Gökhan TONKAL",
+ title: "İletişim Sorumlusu & YK Üyesi",
+ email: "gokhan.tonkal@teamergenekon.org",
+
+ linkedin: "https://linkedin.com/company/team-ergenekon",
+ instagram: "https://www.instagram.com/team.ergenekon",
+ linktree: "https://linktr.ee/ergenekon",
+ location: "Gazi Üniversitesi, Ankara"
+};
-export const contactInfo = {
- email: "info@gazisiber.org",
- socials: {
- instagram: "instagram.com/gazisiber",
- twitter: "twitter.com/gazisiber",
- linkedin: "linkedin.com/company/gazisiber"
+// Takım Yapısı ve Hiyerarşisi (YENİ EKLENDİ)
+export const teamStructure = {
+ // Liderlik
+ leadership: [
+ { role: "Takım Kaptanı", name: "Abdullah ZEYNEL", image: "/images/members_images/abdullah_.png" },
+ { role: "Kaptan Yardımcısı", name: "Zeren KAVAZ", image: "/images/members_images/zeren_kavaz.png" }
+ ],
+ // Denetim Kurulu (1 Kişi)
+ auditBoard: [
+ { role: "Denetim Kurulu Üyesi", name: "Tolga DEMİREL", image: "/images/members_images/tolga_demirel.png" }
+ ],
+ // Yönetim Kurulu (6 Kişi)
+ managementBoard: [
+ { role: "Yönetim Kurulu Üyesi", name: "Kerem DURGUT", image: "/images/members_images/kerem_durgut.png" },
+ { role: "Yönetim Kurulu Üyesi", name: "Batuhan TÜRKYILMAZ", image: "/images/members_images/batuhan_turkyilmaz.png" },
+ { role: "Yönetim Kurulu Üyesi", name: "Atakan ERDOĞAN", image: "/images/members_images/atakan_erdogan.png" },
+ { role: "Yönetim Kurulu Üyesi", name: "Gökhan TONKAL", image: "/images/members_images/gokhan_tonkal.png" },
+ { role: "Yönetim Kurulu Üyesi", name: "Zeynep AKSU", image: "/images/members_images/zeynep_aksu.png" },
+ { role: "Yönetim Kurulu Üyesi", name: "Hümeyra EKİNCİ", image: "/images/members_images/humeyra_ekinci.png" },
+ ],
+ // Alt Ekipler (Tabs için)
+ subTeams: {
+ software: [ // Yazılım Ekibi
+ { name: "Edip HAZURİ", role: "Geliştirici", image: "/images/members_images/edip_hazuri.png" },
+ { name: "Furkan İŞERİ", role: "Geliştirici", image: "/images/members_images/furkan_iseri.png" },
+ { name: "Dilanur Sanem KARAGÖZ", role: "Geliştirici", image: "/images/members_images/dilanur_sanem_karagoz.png" },
+ { name: "Ege ERTEKİN", role: "Geliştirici", image: "/images/members_images/ege_ertekin.png" },
+ { name: "Melda KAHRAMAN", role: "Geliştirici", image: "/images/members_images/melda_kahraman.png" },
+ { name: "Recep KARABULUT", role: "Geliştirici", image: "/images/members_images/recep_karabulut.png" },
+ { name: "Yusuf Eren ŞAHİN", role: "Geliştirici", image: "/images/members_images/yusuf_eren_sahin.png" },
+ { name: "Nehir DARICI", role: "Geliştirici", image: "/images/members_images/nehir_darici.png" },
+ ],
+ mechanics: [ // Mekanik Ekibi
+ { name: "Zeynep Berra ÜRKÜT", role: "Mekanik Mühendis", image: "/images/members_images/zeynep_berra_urkut.png" },
+ ],
+ electronics: [ // Elektronik Ekibi
+ { name: "Betül DORUK", role: "Elektronik Mühendis", image: "/images/members_images/betul_doruk.png" },
+ { name: "Ata Efe AY", role: "Elektronik Mühendis", image: "/images/members_images/ata_efe_ay.png" },
+ { name: "Mehmet Aydın ERBEY", role: "Elektronik Mühendis", image: "/images/members_images/mehmet_aydin_erbey.png" },
+ { name: "Ozan BİLGİN", role: "Elektronik Mühendis", image: "/images/members_images/ozan_bilgin.png" },
+ ]
}
};
\ No newline at end of file
diff --git a/src/index.css b/src/index.css
index 81cd9bb..af8791f 100644
--- a/src/index.css
+++ b/src/index.css
@@ -2,206 +2,239 @@
@tailwind components;
@tailwind utilities;
-/* Body Styling - Koyu Lacivert Arka Plan + Grid */
-body {
- @apply bg-black;
- background-image:
- linear-gradient(to right, rgba(30, 41, 59, 0.3) 1px, transparent 1px),
- linear-gradient(to bottom, rgba(30, 41, 59, 0.3) 1px, transparent 1px);
- background-size: 40px 40px;
+/* Base Styles */
+* {
margin: 0;
padding: 0;
+ box-sizing: border-box;
+}
+
+html {
+ scroll-behavior: smooth;
}
-/* GLITCH EFFECT - Hero Title */
+body {
+ font-family: 'Exo 2', sans-serif;
+ background-color: #050505;
+ color: #E5E7EB;
+ overflow-x: hidden;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: 'Orbitron', sans-serif;
+}
+
+/* Custom Component Classes */
@layer components {
- .glitch {
- position: relative;
- display: inline-block;
+ /* Glassmorphism Effect */
+ .glass {
+ background: rgba(18, 18, 18, 0.7);
+ backdrop-filter: blur(12px);
+ -webkit-backdrop-filter: blur(12px);
+ border: 1px solid rgba(139, 0, 0, 0.2);
}
- .glitch::before,
- .glitch::after {
- content: attr(data-text);
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
+ .glass-card {
+ background: rgba(18, 18, 18, 0.6);
+ backdrop-filter: blur(16px);
+ -webkit-backdrop-filter: blur(16px);
+ border: 1px solid rgba(139, 0, 0, 0.3);
+ border-radius: 1rem;
}
- .glitch::before {
- left: 2px;
- text-shadow: -2px 0 rgba(255, 255, 255, 0.7);
- animation: glitch-anim-1 2.5s infinite linear alternate-reverse;
- clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
+ /* Primary Button - Filled Red */
+ .btn-primary {
+ @apply px-8 py-3 bg-ergenekon-bright text-white font-semibold rounded-lg
+ transition-all duration-300 ease-out
+ hover:bg-ergenekon-red hover:shadow-[0_0_25px_rgba(220,38,38,0.6)]
+ active:scale-95;
}
- .glitch::after {
- left: -2px;
- text-shadow: 2px 0 rgba(255, 255, 255, 0.5);
- animation: glitch-anim-2 3s infinite linear alternate-reverse;
- clip-path: polygon(0 60%, 100% 60%, 100% 100%, 0 100%);
+ /* Secondary Button - Outlined */
+ .btn-secondary {
+ @apply px-8 py-3 border-2 border-ergenekon-bright text-ergenekon-bright font-semibold rounded-lg
+ transition-all duration-300 ease-out
+ hover:bg-ergenekon-bright hover:text-white hover:shadow-[0_0_25px_rgba(220,38,38,0.4)]
+ active:scale-95;
}
-}
-@keyframes glitch-anim-1 {
+ /* Red Glow Effect */
+ .glow-red {
+ box-shadow: 0 0 20px rgba(139, 0, 0, 0.4),
+ 0 0 40px rgba(139, 0, 0, 0.2);
+ }
- 0%,
- 100% {
- clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
+ .glow-red-hover:hover {
+ box-shadow: 0 0 30px rgba(220, 38, 38, 0.6),
+ 0 0 60px rgba(220, 38, 38, 0.3);
}
- 20% {
- clip-path: polygon(0 15%, 100% 15%, 100% 65%, 0 65%);
+ /* Section Container */
+ .section-container {
+ @apply max-w-7xl mx-auto px-4 sm:px-6 lg:px-8;
}
- 40% {
- clip-path: polygon(0 30%, 100% 30%, 100% 80%, 0 80%);
+ /* Section Title */
+ .section-title {
+ @apply text-3xl md:text-4xl font-bold text-ergenekon-silver mb-4;
}
- 60% {
- clip-path: polygon(0 10%, 100% 10%, 100% 50%, 0 50%);
+ /* Stat Card */
+ .stat-card {
+ @apply glass-card p-6 text-center transition-all duration-300
+ hover:scale-105 glow-red-hover;
}
- 80% {
- clip-path: polygon(0 25%, 100% 25%, 100% 75%, 0 75%);
+ /* Project Card */
+ .project-card {
+ @apply glass-card overflow-hidden transition-all duration-500
+ hover:-translate-y-2 glow-red-hover cursor-pointer;
}
}
-@keyframes glitch-anim-2 {
-
- 0%,
- 100% {
- clip-path: polygon(0 60%, 100% 60%, 100% 100%, 0 100%);
+/* Animations */
+@keyframes float {
+ 0%, 100% {
+ transform: translateY(0);
}
-
- 25% {
- clip-path: polygon(0 40%, 100% 40%, 100% 95%, 0 95%);
+ 50% {
+ transform: translateY(-10px);
}
+}
+@keyframes pulse-glow {
+ 0%, 100% {
+ box-shadow: 0 0 20px rgba(139, 0, 0, 0.4);
+ }
50% {
- clip-path: polygon(0 70%, 100% 70%, 100% 100%, 0 100%);
+ box-shadow: 0 0 40px rgba(220, 38, 38, 0.6);
}
+}
- 75% {
- clip-path: polygon(0 55%, 100% 55%, 100% 90%, 0 90%);
- }
+.animate-float {
+ animation: float 3s ease-in-out infinite;
}
-/* TYPEWRITER EFFECT */
-@layer components {
- .typewriter {
- overflow: hidden;
- border-right: 3px solid #ffffff;
- white-space: nowrap;
- animation: typing 3.5s steps(30, end), blink-caret 0.75s step-end infinite;
- display: inline-block;
- }
+.animate-pulse-glow {
+ animation: pulse-glow 2s ease-in-out infinite;
}
-@keyframes typing {
- from {
- width: 0;
- }
+/* Scrollbar Styling */
+::-webkit-scrollbar {
+ width: 8px;
+}
- to {
- width: 100%;
- }
+::-webkit-scrollbar-track {
+ background: #050505;
}
-@keyframes blink-caret {
+::-webkit-scrollbar-thumb {
+ background: #8B0000;
+ border-radius: 4px;
+}
- from,
- to {
- border-color: transparent;
- }
+::-webkit-scrollbar-thumb:hover {
+ background: #DC2626;
+}
- 50% {
- border-color: #ffffff;
- }
+/* Selection Color */
+::selection {
+ background: rgba(139, 0, 0, 0.5);
+ color: white;
}
-/* NEON GLOW UTILITIES */
-@layer utilities {
- .neon-glow-blue {
- box-shadow: 0 0 10px #00F0FF, 0 0 20px #00F0FF, 0 0 30px #00F0FF;
+/* Ripple Animation */
+@keyframes ripple {
+ 0% {
+ transform: scale(0);
+ opacity: 0.5;
}
-
- .neon-glow-purple {
- box-shadow: 0 0 10px #8B5CF6, 0 0 20px #8B5CF6, 0 0 30px #8B5CF6;
+ 100% {
+ transform: scale(1);
+ opacity: 0;
}
+}
- .neon-glow-green {
- box-shadow: 0 0 10px #10b981, 0 0 20px #10b981, 0 0 30px #10b981;
- }
+.animate-ripple {
+ animation: ripple 0.6s linear;
+}
- .neon-glow-red {
- box-shadow: 0 0 10px #dc2626, 0 0 20px #dc2626, 0 0 30px #dc2626;
+/* Enhanced Glow Pulse */
+@keyframes glow-pulse {
+ 0%, 100% {
+ filter: drop-shadow(0 0 5px rgba(220, 38, 38, 0.3));
}
-
- .text-glow-blue {
- text-shadow: 0 0 10px #00F0FF, 0 0 20px #00F0FF;
+ 50% {
+ filter: drop-shadow(0 0 20px rgba(220, 38, 38, 0.8));
}
+}
- .text-glow-purple {
- text-shadow: 0 0 10px #8B5CF6, 0 0 20px #8B5CF6;
- }
+.animate-glow-pulse {
+ animation: glow-pulse 2s ease-in-out infinite;
+}
- .text-glow-green {
- text-shadow: 0 0 10px #10b981, 0 0 20px #10b981;
+/* Text Shimmer Effect */
+@keyframes shimmer {
+ 0% {
+ background-position: -200% center;
}
-
- .text-glow-red {
- text-shadow: 0 0 10px #dc2626, 0 0 20px #dc2626;
+ 100% {
+ background-position: 200% center;
}
}
-/* CYBER BUTTON STYLES */
-@layer components {
- .cyber-btn {
- @apply relative px-8 py-3 font-mono font-semibold uppercase tracking-wider;
- @apply bg-transparent border-2 transition-all duration-300;
- clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
- }
+.text-shimmer {
+ background: linear-gradient(
+ 90deg,
+ #DC2626 0%,
+ #fff 50%,
+ #DC2626 100%
+ );
+ background-size: 200% auto;
+ background-clip: text;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ animation: shimmer 3s linear infinite;
+}
- .cyber-btn-primary {
- @apply cyber-btn border-cyber-blue text-cyber-blue;
+/* Floating Animation */
+@keyframes floating {
+ 0%, 100% {
+ transform: translateY(0) rotate(0deg);
}
-
- .cyber-btn-primary:hover {
- @apply bg-cyber-blue text-cyber-dark neon-glow-blue;
- transform: translateY(-2px);
+ 25% {
+ transform: translateY(-5px) rotate(1deg);
}
-
- .cyber-btn-secondary {
- @apply cyber-btn border-cyber-purple text-cyber-purple;
+ 75% {
+ transform: translateY(5px) rotate(-1deg);
}
+}
- .cyber-btn-secondary:hover {
- @apply bg-cyber-purple text-white neon-glow-purple;
- transform: translateY(-2px);
- }
+.animate-floating {
+ animation: floating 4s ease-in-out infinite;
}
-/* GLASSMORPHISM */
-@layer components {
- .glass {
- @apply backdrop-blur-lg bg-white/5 border border-white/10;
+/* Scan Line Effect */
+@keyframes scanline {
+ 0% {
+ top: -100%;
}
-
- .glass-neon {
- @apply backdrop-blur-lg bg-gray-900/40 border-2 border-cyan-500/30;
+ 100% {
+ top: 100%;
}
}
-/* Smooth Scrolling */
-html {
- scroll-behavior: smooth;
+.scanline-effect::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ right: 0;
+ height: 4px;
+ background: linear-gradient(
+ 180deg,
+ transparent,
+ rgba(220, 38, 38, 0.3),
+ transparent
+ );
+ animation: scanline 3s linear infinite;
}
-
-/* Selection Color */
-::selection {
- background-color: #00F0FF;
- color: #020617;
-}
\ No newline at end of file
diff --git a/tailwind.config.js b/tailwind.config.js
index 68617b7..ac80acb 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -7,21 +7,21 @@ export default {
theme: {
extend: {
colors: {
- mono: {
- base: '#000000', // Tam Siyah (Zemin)
- surface: '#0a0a0a', // Çok koyu gri (Kart Zeminleri)
- border: '#262626', // Silik Çerçeveler
- white: '#ffffff', // Ana Metin / Logo
- gray: '#a3a3a3', // İkincil Metin
+ ergenekon: {
+ red: '#8B0000', // Ergenekon Logosu Koyu Kırmızı
+ bright: '#DC2626', // Butonlar için Parlak Kırmızı
+ dark: '#050505', // Çok koyu siyah (Arka plan)
+ panel: '#121212', // Kart arka planları
+ silver: '#E5E7EB', // Metin rengi
}
},
fontFamily: {
- tech: ['Chakra Petch', 'sans-serif'], // Başlıklar
- mono: ['JetBrains Mono', 'monospace'], // Kod Yazıları
- sans: ['Inter', 'sans-serif'], // Düz Yazılar
+ orbitron: ['Orbitron', 'sans-serif'], // Başlık Fontu
+ exo: ['Exo 2', 'sans-serif'], // Yazı Fontu
},
- animation: {
- 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
+ backgroundImage: {
+ // GÜNCELLENDİ: Senin belirlediğin görsel ismi
+ 'hero-pattern': "url('/images/hero-bg.jpg')",
}
},
},
diff --git a/vite.config.js b/vite.config.js
index 9ffcc67..0408f13 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -2,5 +2,5 @@ import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
- plugins: [react()],
+ plugins: [react()],
})