Akıllı Kampüs: Üniversite Hayatını Dijitalleştiren Bitirme Projemiz
Merhaba! Bu yazıda, "Web ve Mobil Programlama" dersi kapsamında takım arkadaşlarımla (Neşe Sarp, Gökçe Nur Küçük, Erdem Bekir Aktürk ve ben) beraber geliştirdiğimiz bitirme projemiz SmartCampus'u anlatacağım.
Proje; üniversite kampüs hayatını tek bir dijital platformda birleştirmeyi hedefliyor: QR yoklama, yemekhane randevuları, cüzdan yönetimi, anlık bildirimler ve daha fazlası.
SmartCampus ana dashboard ekranı.
🎯 Projenin Amacı
Üniversite öğrencileri her gün onlarca farklı sisteme girip çıkmak zorunda kalıyor. Biz, sadece bir dersi geçmek için değil, gerçekten kampüste işe yarayabilecek bir sistem tasarlamak istedik. Ortaya teknik olarak dolu dolu, full-stack bir iş çıktı.
Öne çıkan özelliklerimiz:
- 📱 QR ile Yoklama Sistemi: Sınıflarda kağıt dolaştırma devrini bitiren, anlık QR kod okutmalı yoklama modülü.
- 🍽️ Yemekhane Randevusu & Menü: Günlük menüleri görüp önceden yemek için rezervasyon oluşturma.
- 💳 iyzico ile Cüzdan Yönetimi: Öğrencilerin sistem üzerinde sanal bir cüzdanı bulunuyor. iyzico entegrasyonu ile bakiye yüklenebiliyor ve harcamalar buradan düşülüyor.
- 📢 Gerçek Zamanlı Bildirimler: SignalR (WebSocket) ile sayfa yenilemeye gerek kalmayan anlık duyurular.
🛠️ Mimari ve Kullanılan Teknolojiler
İşin mutfağında modern bir projede olması gereken standartları yakalamaya çalıştık. Frontend ve Backend için kesin çizgiler çizmeden takımca her iki tarafta da (Full-Stack) geliştirmeler yaptık.
Frontend (Önyüz)
- Next.js (React 19) — Modern ve performanslı kullanıcı arayüzü.
- Tailwind CSS — Hızlı ve tutarlı UI/UX geliştirme.
- Socket.io / SignalR Client — Gerçek zamanlı bildirim bağlantısı.
Backend (Arkayüz)
- .NET 8 Web API — Layered Architecture (Controller-Service-Model) prensibiyle yazılmış RESTful mimari. Bu sayede kodun "spagettiye" dönüşmesini engelledik.
- SignalR — Anlık veri akışı ve bildirimler.
- Entity Framework Core & MySQL — İlişkisel veri bütünlüğü.
Güvenlik & Kimlik Doğrulama
- JWT (JSON Web Token) tabanlı kimlik doğrulama.
- Hem önyüzde hem arkayüzde sıkı bir girdi doğrulaması (input validation).
Altyapı, Docker ve DevOps (Maliyet Odaklı Yaklaşım)
Projeyi tasarlarken aslında tamamen konteyner mimarisine uygun çalıştık. Ana Docker Compose konfigürasyonumuz backend tarafında yer alıyor ve frontend'deki Dockerfile ile birleşerek tüm sistemin izole bir şekilde ayağa kalkmasını sağlıyor.
Ancak projeyi canlıya alırken sunucu maliyetlerini optimize etmek adına mimaride pratik bir değişikliğe gittik:
- Uygulamanın önyüzünü ücretsiz ve hızlı olmasından dolayı Vercel üzerinde host ediyoruz.
- Backend tarafımız ve MySQL veritabanımız ise bir Sanal Makinede (VM) koşuyor.
- Ana geliştirme ortamımızdan (
main-dev)mainbranch'ine kod atıldığında, Google Cloud Build ile tetiklenen otomatik bir CI/CD boru hattımız devreye giriyor ve değişiklikler canlıya yansıyor.
💳 iyzico Ödeme Entegrasyonu
Öğrencilerin cüzdanlarına bakiye yükleyebilmesi için iyzico'nun güvenli ödeme altyapısını sisteme entegre ettik.
// Backend tarafında basitleştirilmiş ödeme akışı
var request = new CreatePaymentRequest
{
Locale = Locale.TR.GetName(),
ConversationId = Guid.NewGuid().ToString(),
Price = amount,
PaidPrice = amount,
Currency = Currency.TRY.GetName(),
Installment = 1,
PaymentChannel = PaymentChannel.WEB.GetName(),
PaymentGroup = PaymentGroup.PRODUCT.GetName(),
PaymentCard = paymentCard,
Buyer = buyer,
BillingAddress = billingAddress,
BasketItems = basketItems
};
Payment payment = Payment.Create(request, options);
📂 Kaynak Kodlar ve Canlı Demo
Bütün kodlarımızı GitHub'da açık kaynak olarak paylaştık. Repoları inceleyebilir, mimarimize göz atabilirsiniz:
🔗 Frontend Repository: GitHub Linki
🔗 Backend Repository: GitHub Linki
Projeyi canlı ortamda incelemek isterseniz:
🌐 Canlı Demo: campus.taskinnovation.net/dashboard
Demo Hesabı Hakkında Önemli Not: > Sisteme kayıt aşamasında kullandığımız ücretsiz e-posta gönderim servisimizin kotası dolduğu için şu an yeni kayıt yapılamamaktadır. Arayüzü incelemek isterseniz aşağıdaki test hesabını kullanabilirsiniz:
Email: student1@smartcampus.edu
Şifre: Password123!
(Olası kötüye kullanımları engellemek amacıyla, bu demo hesabının veritabanına yazma/değiştirme yetkileri sistem üzerinden sınırlandırılmıştır.)
💡 Öğrendiklerimiz ve Sonuç
SmartCampus, sadece ders geçmek için yazılmış bir proje değil; gerçek bir problemi çözmeye yönelik, modern teknoloji yığını kullanan kapsamlı bir ürün oldu.
Bu süreçte Layered Architecture (Katmanlı Mimari) ile bağımlılıkları yönetmenin ne kadar kritik olduğunu, Docker yapısı ve ardından maliyet odaklı Vercel & VM geçişinin bize kazandırdığı esnekliği, ayrıca harika bir ekiple çalışmanın projenin kalitesini nasıl artırdığını bizzat deneyimledik. Emeği geçen tüm takım arkadaşlarıma (Neşe, Gökçe, Erdem) teşekkürler!
Sorularınız, PR'larınız veya önerileriniz varsa GitHub üzerinden iletişim kurabilirsiniz! 🚀
