Deucritic Story — Kullanım & Teknik Doküman
Bu belge, hem son kullanıcılar hem de geliştirici ekibi için Deucritic Story özelliğinin nasıl çalıştığını, teknik gereksinimleri ve entegrasyon örneklerini içerir.
Özet
Deucritic Story, kullanıcıların 24 saat süreyle görünür olan kısa görsel/video/metin paylaşımları yapmasını sağlar. Amaç kampüs içi anlık paylaşımları arttırmak, tartışmaları ve eleştirileri daha gerçek zamanlı hâle getirmektir.
Kullanıcı Kılavuzu
Story Ekleme
- Giriş yap: Yalnızca kayıtlı kullanıcılar story atabilir.
- Üst çubuktaki Story Ekle (📷) butonuna tıkla.
- Kamera açılır ya da galeriden seçim yapılır. Fotoğraf, kısa video veya düz metin eklenebilir.
- İsteğe bağlı açıklama gir ve Paylaş tuşuna bas.
- Paylaşılan story 24 saat görünür; süresi dolunca otomatik silinir.
Story Görüntüleme
- Ana sayfanın üst kısmında profil resimleri halkalı biçimde gösterilir.
- Halka tıklanınca story tam ekran modal olarak açılır; sağ/sol kaydırma ile geçiş yapılır.
- İzleme sayısı ve varsa izleyen listesi paylaşanın profilinde gösterilir.
Etkileşimler & Gizlilik
Kullanıcılar story'lere emoji reaksiyonu verebilir. Kısa yorum eklenirse bu yorum paylaşan tarafından görüntülenir; tercihe bağlı olarak yorumların herkese açık olması sağlanabilir.
Teknik Tasarım (Backend)
Aşağıdaki bölümde örnek veritabanı tabloları, endpoint'ler ve cron görevleri özetlenmiştir.
Önerilen Veritabanı - Özet
| Tablo | Açıklama |
|---|---|
| stories | Her story için ana kayıt (user_id, media_url, caption, created_at, expires_at, is_active) |
| story_views | Kimin hangi story'i ne zaman görüntülediğini tutar |
| story_reactions | Emoji ve kısa yorumlar |
stories tablosu - SQL örneğidir.
Gerçek değildir.
CREATE TABLE `stories` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL,
`media_url` VARCHAR(255) DEFAULT NULL,
`caption` TEXT DEFAULT NULL,
`mediatype` ENUM('image','video','text') DEFAULT 'image',
`created_at` DATETIME NOT NULL,
`expires_at` DATETIME NOT NULL,
`views_count` INT DEFAULT 0,
`is_active` TINYINT(1) DEFAULT 1,
INDEX(user_id),
CONSTRAINT fk_stories_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Backend Endpoints (örnek)
POST /api/stories/upload
- auth required
- form-data: file (image/video), caption
- response: { success: true, story_id }
GET /api/stories/feed
- returns active stories for a user + follow list
POST /api/stories/{id}/view
- records view by current user
POST /api/stories/{id}/react
- body: { emoji: '🔥' , comment: '...' }
DELETE /api/stories/{id}
- owner or admin can delete story early
Zamanlanmış Temizlik (Cron)
DB'de expires_at < zaman olan kayıtlar için cron job çalıştırılmalı. Örnek:
0 * * * * php /var/www/deucritic/cron/expire_stories.php
expire_stories.php, süresi dolmuş story'leri is_active=0 yapar ve varsa dosyaları obje depodan siler.
Geliştirici Notları & İpuçları
- Medya depolama için: S3/Backblaze/Cloud Storage kullan. DB'de sadece URL sakla.
- Video küçük klipleri webm/MP4, görüntüler için webp tercih et (performans).
- CDN ile edge cache yap, story'ler yoğun erişim alır.
- Test için: 24 saat değil 1 dakika olacak şekilde expiry ayarı yapıp qa ortamında test et.
Dosya boyutu & format önerileri
Max image: 10MB (tercih 3-5MB), max video: 20MB (tercih 5-12MB). Desteklenen formatlar: jpg, png, webp, mp4, webm.