Bu proje, QR kod teknolojisi kullanarak öğrencilerin derse yoklama yapmasını sağlayan web tabanlı bir uygulamadır.
- Öğretmen Girişi: Basit kullanıcı adı/şifre ile giriş
- Ders Oluşturma: Yeni ders oluşturma ve QR kod üretimi
- QR Kod ile Yoklama: Öğrenciler QR kodu okutarak yoklama yapabilir
- Tekrar Giriş Kontrolü: Aynı cihazdan ikinci kez yoklama engelleme
- Anlık Liste: Öğretmen yoklama listesini canlı olarak görüntüleyebilir
- Responsive Tasarım: Mobil ve desktop uyumlu modern arayüz
- Node.js - Sunucu tarafı JavaScript runtime
- Express.js - Web framework
- SQLite - Hafif veritabanı
- UUID - Benzersiz ID üretimi
- HTML5/CSS3 - Modern web standartları
- Vanilla JavaScript - Framework bağımsız
- QRCode.js - QR kod üretimi (CDN: cdnjs.cloudflare.com)
# Git ile klonlayın (eğer Git repository'si ise)
git clone <repository-url>
cd CheckingWebAPP
# Veya dosyaları manuel olarak indirin
npm install
npm start
Uygulama http://localhost:3000
adresinde çalışmaya başlayacaktır.
-
Giriş Yapın
- Tarayıcıda
http://localhost:3000
adresine gidin - Kullanıcı adı:
admin
- Şifre:
123456
- Tarayıcıda
-
Ders Oluşturun
- Ders adını girin (örn: "Matematik 101")
- Ders tarihini seçin
- "Ders Oluştur ve QR Kod Üret" butonuna tıklayın
-
QR Kodu Paylaşın
- Oluşturulan QR kodu öğrencilere gösterin
- Yoklama listesini canlı olarak takip edin
-
QR Kodu Okutun
- Telefon kameranızla QR kodu okutun
- Açılan web sayfasına gidin
-
Yoklama Yapın
- Ad ve soyadınızı girin
- "Yoklama Yap" butonuna tıklayın
- Başarı mesajını bekleyin
- IP Kontrolü: Aynı IP adresinden tekrar yoklama engelleme
- localStorage Kontrolü: Browser tabanlı tekrar giriş engelleme
- Sunucu Doğrulama: Backend tarafında çift kontrol
- Veri Sanitizasyonu: Kullanıcı girdilerinin temizlenmesi
id TEXT PRIMARY KEY, -- Benzersiz ders ID (UUID)
name TEXT NOT NULL, -- Ders adı
date TEXT NOT NULL, -- Ders tarihi
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
id INTEGER PRIMARY KEY AUTOINCREMENT,
lesson_id TEXT NOT NULL, -- Ders ID (Foreign Key)
student_name TEXT NOT NULL, -- Öğrenci adı
ip_address TEXT NOT NULL, -- IP adresi
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
Yeni ders oluşturur.
Body:
{
"name": "Matematik 101",
"date": "2024-01-15"
}
Öğrenci yoklaması kaydeder.
Body:
{
"lessonId": "uuid-string",
"studentName": "Ahmet Yılmaz"
}
Ders bilgilerini getirir.
Ders yoklama listesini getirir.
-
Ders Oluşturma Testi
- Yeni ders oluşturun
- QR kod üretimini doğrulayın
-
Yoklama Testi
- QR kodu okutun
- Ad/soyad girin ve yoklama yapın
- Başarı mesajını doğrulayın
-
Tekrar Giriş Testi
- Aynı cihazdan tekrar yoklama yapmaya çalışın
- Engelleme mesajını doğrulayın
-
Liste Görüntüleme
- Öğretmen panelinde yoklama listesini kontrol edin
npm run dev
Bu komut nodemon kullanarak sunucuyu otomatik yeniden başlatır.
# database.sqlite dosyasını silin, uygulama yeniden oluşturacaktır
rm database.sqlite
npm start
- Responsive CSS tasarımı
- Touch-friendly butonlar
- Mobil QR kod okuyucu uyumlu
- Hızlı yükleme için optimize edilmiş
# 1. Tarayıcı cache'ini temizleyin (Ctrl+Shift+R veya Cmd+Shift+R)
# 2. Browser konsolu açın (F12) ve hata mesajlarını kontrol edin
# 3. QRCode kütüphanesinin yüklendiğini kontrol edin:
console.log(typeof QRCode); // 'function' dönemeli
# 4. İnternet bağlantınızı kontrol edin (CDN için gerekli)
# Port zaten kullanımda hatası
lsof -ti:3000 | xargs kill -9 # Port 3000'i temizle
npm start
# Veritabanı hatası
rm database.sqlite # Veritabanını sıfırla
npm start
- IP adresi değişti mi kontrol edin
- localStorage'ı temizleyin: F12 > Application > Local Storage > Clear
- Farklı tarayıcı veya gizli mod deneyin
- Bu uygulama demo amaçlı basit kimlik doğrulama kullanır
- Üretim ortamında daha güvenli authentication sistemi kullanın
- HTTPS kullanımı önerilir
- Veritabanı yedeklemesini unutmayın
# Yerel proje yolu
/Users/omeryasironal/CheckingWebAPP
# Ana dizine gidip node_modules hariç zipleme
cd /Users/omeryasironal/CheckingWebAPP
zip -r deploy.zip . -x "node_modules/*"
# Sunucuya gönderme
scp -i ~/.ssh/id_ed25519 deploy.zip [email protected]:~/qr-attendance-app/
# SSH ile sunucuya bağlanma
ssh -i ~/.ssh/id_ed25519 [email protected]
# Proje klasörüne gitme
cd ~/qr-attendance-app
# Önceki dosyaları temizleme (isteğe bağlı)
rm -rf *
# Zip dosyasını açma
unzip deploy.zip
# Zip dosyasını silme
rm deploy.zip
# Paketleri yükleme
npm install
# PM2 ile uygulamayı başlatma
pm2 start server.js --name qr-attendance
# PM2 durumunu kontrol etme
pm2 status
# PM2 otomatik başlatma ayarı
pm2 save
Sunucu tarafında deploy.sh
dosyası oluşturun:
#!/bin/bash
echo "🔄 Deploy başlıyor..."
cd ~/qr-attendance-app
npm install
pm2 restart qr-attendance || pm2 start server.js --name qr-attendance
pm2 save
echo "✅ Deploy bitti!"
Script'i çalıştırılabilir hale getirme ve kullanma:
chmod +x deploy.sh
./deploy.sh
- Local: zip ile node_modules dahil edilmez → scp ile gönderilir.
- Sunucu: npm install ile bağımlılıklar kurulur → SQLite veritabanı sunucuda saklanır.
- PM2: Uygulamayı arkaplanda çalıştırır ve sunucu yeniden başlatıldığında otomatik başlatır.
- Bu repository'yi fork edin
- Feature branch oluşturun (
git checkout -b feature/yeni-ozellik
) - Değişikliklerinizi commit edin (
git commit -am 'Yeni özellik eklendi'
) - Branch'inizi push edin (
git push origin feature/yeni-ozellik
) - Pull Request oluşturun
Bu proje MIT lisansı altında yayınlanmıştır.
Sorularınız için issue açabilir veya pull request gönderebilirsiniz.
Geliştirici Notu: Bu sistem eğitim amaçlı geliştirilmiştir. Üretim ortamında kullanım için ek güvenlik önlemleri alınmalıdır.