Kayserispor: Kayseri'nin Futbol Tutkusu ve Türkiye Süper Ligi'ndeki Yeri

Kayseri'nin sadece ticaret ve sanayi ile değil, aynı zamanda güçlü bir futbol kültürüyle de anıldığını biliyor muydunuz? Bu şehrin futbol tutkusunun en canlı simgesi ise hiç kuşkusuz Kayserispor. Anadolu yıldızı olarak anılan, renkleri ve taraftarıyla kendine özgü bir kimlik oluşturan bu kulüp, Türk futbolunun vazgeçilmez bir parçası.
**Köklü Bir Tarihin İnşası: Kayserispor'un Doğuşu ve Gelişimi**
Kayserispor, resmi olarak 1966 yılında kurulmuş olsa da, citynin futbol macerası çok daha eskilere dayanır. 1966 öncesi various local amateur kulüplerin birleşmesiyle temelleri atılan kulüp, kısa sürede profesyonel liglerde adından söz ettirmeye başladı. 1970'lerde ve 80'lerde birinci ve ikinci lig arasında gidip gelse de, kulübün asıl çıkışı ve istikrarı 1990'lı yıllarda yaşandı.
Kulübün tarihindeki en önemli dönüm noktalarından biri, 2005-2006 sezonunda elde edilen Türkiye Kupası zaferiydi. Bu zafer, Kayserispor'u sadece kupa sahibi yapmakla kalmadı, aynı zamanda kulübün Avrupa kupalarında mücadele etmesinin yolunu açtı. Bu başarı, Kayseri şehrindeki futbol coşkusunu bir üst seviyeye taşıdı ve kulübünmitesine }));
} else {
res.json({ success: false, error: "Geçersiz OTP" });
}
});
// Kullanıcı bilgilerini getir
app.get("/user", authenticateToken, async (req, res) => {
const user = await User.findById(req.user.userId).select("-password -otp");
res.json(user);
});
// Ekran moderatörleri listesini getir
app.get("/users", async (req, res) => {
const users = await User.find({}).select("-password -otp");
res.json(users);
});
// Moderatör silme
app.delete("/user/:id", async (req, res) => {
try {
await User.findByIdAndDelete(req.params.id);
res.json({ success: true, message: "Moderatör başarıyla silindi" });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Moderatör güncelleme
app.put("/user/:id", async (req, res) => {
try {
const user = await User.findByIdAndUpdate(req.params.id, req.body, { new: true }).select("-password -otp");
res.json(user);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Şifre değiştirme
app.post("/change-password", authenticateToken, async (req, res) => {
try {
const user = await User.findById(req.user.userId);
if (!(await bcrypt.compare(req.body.currentPassword, user.password))) {
return res.status(400).json({ success: false, error: "Mevcut şifre yanlış" });
}
user.password = await bcrypt.hash(req.body.newPassword, 10);
await user.save();
res.json({ success: true, message: "Şifre başarıyla değiştirildi" });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Ana sayfa verileri
app.get("/home", async (req, res) => {
try {
const matches = await Match.find({}).sort({ matchDate: -1 }).limit(5);
const news = await News.find({}).sort({ createdAt: -1 }).limit(5);
const players = await Player.find({}).limit(5);
res.json({ matches, news, players });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Maç listesi
app.get("/matches", async (req, res) => {
try {
const matches = await Match.find({}).sort({ matchDate: -1 });
res.json(matches);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Maç ekleme
app.post("/matches", authenticateToken, async (req, res) => {
try {
const match = await Match.create(req.body);
res.json(match);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Maç güncelleme
app.put("/matches/:id", authenticateToken, async (req, res) => {
try {
const match = await Match.findByIdAndUpdate(req.params.id, req.body, { new: true });
res.json(match);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Maç silme
app.delete("/matches/:id", authenticateToken, async (req, res) => {
try {
await Match.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Oyuncu listesi
app.get("/players", async (req, res) => {
try {
const players = await Player.find({});
res.json(players);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Oyuncu ekleme
app.post("/players", authenticateToken, async (req, res) => {
try {
const player = await Player.create(req.body);
res.json(player);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Oyuncu güncelleme
app.put("/players/:id", authenticateToken, async (req, res) => {
try {
const player = await Player.findByIdAndUpdate(req.params.id, req.body, { new: true });
res.json(player);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Oyuncu silme
app.delete("/players/:id", authenticateToken, async (req, res) => {
try {
await Player.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Haber listesi
app.get("/news", async (req, res) => {
try {
const news = await News.find({}).sort({ createdAt: -1 });
res.json(news);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Haber ekleme
app.post("/news", authenticateToken, async (req, res) => {
try {
const news = await News.create({
...req.body,
author: req.user.userId
});
res.json(news);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Haber güncelleme
app.put("/news/:id", authenticateToken, async (req, res) => {
try {
const news = await News.findByIdAndUpdate(req.params.id, req.body, { new: true });
res.json(news);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Haber silme
app.delete("/news/:id", authenticateToken, async (req, res) => {
try {
await News.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// İletişim formu
app.post("/contact", async (req, res) => {
try {
await Contact.create(req.body);
res.json({ success: true, message: "Mesajınız başarıyla gönderildi" });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Mesajları getir
app.get("/contact", authenticateToken, async (req, res) => {
try {
const messages = await Contact.find({}).sort({ createdAt: -1 });
res.json(messages);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Mesaj silme
app.delete("/contact/:id", authenticateToken, async (req, res) => {
try {
await Contact.findByIdAndDelete(req.params.id);
res.json({ success: true });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// İstatistikler
app.get("/stats", async (req, res) => {
try {
const [matchCount, playerCount, newsCount, messageCount] = await Promise.all([
Match.countDocuments(),
Player.countDocuments(),
News.countDocuments(),
Contact.countDocuments()
]);
res.json({
matches: matchCount,
players: playerCount,
news: newsCount,
messages: messageCount
});
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Yorum sistemi
app.post("/comments/:newsId", authenticateToken, async (req, res) => {
try {
const news = await News.findById(req.params.newsId);
if (!news) {
return res.status(404).json({ success: false, error: "Haber bulunamadı" });
}
news.comments.push({
user: req.user.userId,
text: req.body.text
});
await news.save();
res.json(news);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Yorum silme
app.delete("/comments/:newsId/:commentId", authenticateToken, async (req, res) => {
try {
const news = await News.findById(req.params.newsId);
news.comments = news.comments.filter(
(comment) => comment._id.toString() !== req.params.commentId
);
await news.save();
res.json(news);
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Şifremi Unuttum
app.post("/forgot-password", async (req, res) => {
try {
const user = await User.findOne({ email: req.body.email });
if (!user) {
return res.status(404).json({ success: false, error: "Kullanıcı bulunamadı" });
}
const otp = Math.floor(100000 + Math.random() * 900000).toString();
user.otp = otp;
user.otpExpiry = new Date(Date.now() + 300000); // 5 dakika
await user.save();
// E-posta gönderimi模拟
console.log(`OTP for ${user.email}: ${otp}`);
res.json({ success: true, message: "OTP e-posta adresinize gönderildi" });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// OTP ile şifre sıfırlama
app.post("/reset-password", async (req, res) => {
try {
const user = await User.findOne({
email: req.body.email,
otp: req.body.otp,
otpExpiry: { $gt: new Date() }
});
if (!user) {
return res.status(400).json({ success: false, error: "Geçersiz OTP" });
}
user.password = await bcrypt.hash(req.body.newPassword, 10);
user.otp = undefined;
user.otpExpiry = undefined;
await user.save();
res.json({ success: true, message: "Şifre başarıyla sıfırlandı" });
} catch (error) {
res.status(400).json({ success: false, error: error.message });
}
});
// Sunucu başlatma
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Sunucu ${PORT} portunda çalışıyor`);
});

Source: HotArticle

Original link: https://www.hotarticle24.com/5qworr15

Recommended For You

Mackenzie: A Name with Scottish Roots and Modern Character

Mackenzie is a name that carries a strong sense of history while still feeling comfortable in everyday life. It began as

2026-08-24 5 views
Lacey: A Word That Carries Texture and Tone

Lacey is one of those words that feels lighter than its spelling suggests. It can describe something trimmed with lace,

2026-08-26 9 views
Ser independiente sin dejar de pedir ayuda

Ser independiente no significa hacerlo todo a solas. La independencia real consiste en poder tomar decisiones propias, a

2026-08-25 8 views
Why the Word “runa” Stays in Your Head

The word “runa” has a simple shape, but it does more work than many longer names. It is short enough to remember after...

2026-08-26 6 views
Ham Beyond the Sandwich

Ham has a way of showing up in everyday life without demanding much attention. It sits folded into a breakfast plate, tu

2026-08-24 6 views
Why Neeson Still Feels Instantly Familiar

The name Neeson carries a strange kind of weight. You do not need much context for it to land. For a lot of people, it b

2026-08-26 6 views