Bu proje, aynı ağdaki kullanıcıların gerçek zamanlı olarak birlikte Python kodu yazmasını sağlayan basit bir ortak kod editörüdür.
Kullanıcı girişi Firebase ile yapılmakta, editör arayüzü CodeMirror ile sağlanmakta ve canlı eşleşme WebSocket ile desteklenmektedir.
[Firebase Auth] --> Giriş / Kayıt işlemleri
[Firebase Realtime DB] <--> Kod & imleç senkronizasyonu
[WebSocket (FastAPI)] <--> Gerçek zamanlı editör güncellemesi
[CodeMirror] <--> Editör arayüzü (tarayıcıda)
| Özellik | Açıklama |
|---|---|
| Firebase Auth | Giriş ve kayıt işlemleri |
| Realtime Database | Kod ve imleç verilerinin saklanması ve paylaşılması |
| CodeMirror | Kod düzenleme arayüzü (Python destekli) |
| WebSocket | Gerçek zamanlı kod senkronizasyonu |
| Responsive Tasarım | Mobil ve masaüstü uyumlu sade arayüz |
| Firebase Auth Kontrolü | Giriş yapılmadan editöre erişim engellenir |
pip install fastapi uvicornproje/
├── server.py # FastAPI + WebSocket sunucusu
├── index.html # Ortak editör sayfası
├── anasayfa.html # Giriş / kayıt sayfası
├── style.css # Ortak stil dosyası
├── .gitignore # Git yapılandırma dosyası
├── .gitattributes
└── README.md # Proje dökümantasyonu ← bu dosya
Not: FastAPI'de
StaticFiles(directory="frontend")satırını kullanıyorsanız, HTML ve CSS dosyalarınızıfrontend/klasörüne taşımalısınız.
-
Sunucuyu başlatın:
uvicorn server:app --reload
-
Tarayıcıdan açın:
http://localhost:8000/anasayfa.html -
Giriş yapın veya kayıt olun. Giriş yaptıktan sonra
index.htmlsayfasına yönlendirilirsiniz.
Firebase kullanımı için şu adımları izleyin:
- Firebase projesi oluşturun: https://console.firebase.google.com
- Authentication > Email/Password aktif edin.
- Realtime Database oluşturun (mod: test veya güvenlik kuralına göre).
anasayfa.html ve index.html içinde şu kısmı güncelleyin:
const firebaseConfig = {
apiKey: "...",
authDomain: "...",
projectId: "...",
databaseURL: "...",
...
};@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
connected.add(websocket)
...- İlk bağlanan kullanıcıya mevcut kod içeriği gönderilir.
- Kod değişiklikleri tüm kullanıcılara iletilir.
- WebSocket ile gerçek zamanlı düzenleme sağlanır.
- Kod ve imleç Firebase ile eş zamanlı olarak güncellenir.
- WebSocket ise Firebase'e paralel olarak çalışır, hızlı tepki sağlar.
editor_content[0]bellekte editör içeriğini saklar.
- Kullanıcı listesi ve aktif kullanıcı gösterimi
- Dosya kaydetme / yükleme özelliği
- Çok odalı (room-based) editör desteği
- Tema desteği (koyu / açık mod)
Şu anda testler manuel olarak yapılmaktadır. Otomatik test süreci dahil edilmemiştir.
Geliştirme sonrası şu komutlarla test ortamı kurulabilir:
python -m unittest discoverKatkı sağlamak için:
- Fork yapın
- Yeni bir branch oluşturun:
git checkout -b feature/yenilik - Değişiklik yapın ve commit edin:
git commit -m 'Yeni özellik eklendi' - Branch'i push edin:
git push origin feature/yenilik - Pull Request oluşturun
Bu proje MIT Lisansı ile lisanslanmıştır. Dilediğiniz gibi kullanabilir, geliştirebilir ve paylaşabilirsiniz.
