EBYS/DYS Platform
EBYS/DYS Platform; kurumsal belgelerin yüklenmesi, versiyonlanması, güvenli biçimde saklanması, organizasyon yapısına göre yetkilendirilmesi ve iş akışları üzerinden izlenmesi için geliştirdiğim web tabanlı bir elektronik belge ve doküman yönetim sistemidir.
- Bağlam
- Kişisel kurumsal yazılım projesi
- Rol
- Yazılım mimarı ve full-stack geliştirici
- Geliştirme süresi
- Devam ediyor
- Kategori
- Web
- Dönem
- 22 Haz 2026 - Günümüz
Teknolojiler
.NET 10 ASP.NET Core Minimal API Entity Framework Core 10 C# Angular 21 TypeScript RxJS PrimeNG 21 PrimeFlex Tailwind CSS 4 SQL Server Keycloak JWT MinIO Gotenberg LibreOffice Redis SignalR Hangfire YARP Serilog Seq FluentValidation Mapster Scalar OpenAPI Docker Docker Compose Nginx Proxy Manager Cloudflare Infisical Forgejo Taiga Git xUnit Vitest ESLint Prettier OpenAI Codex
Proje Türü ve Güncel Durum
- Proje; elektronik belge yönetimi, doküman yaşam döngüsü, iş akışları, organizasyon kapsamlı yetkilendirme, denetim izi ve raporlamayı bir araya getiren full-stack kurumsal bir web uygulamasıdır.
- Gerçek bir kurumda kullanılabilecek EBYS/DYS platformunun teknik ve operasyonel ihtiyaçlarını modellemek amacıyla kişisel bir mühendislik projesi olarak geliştirdim.
- Projenin geliştirilmesi halen devam etmektedir ve uygulama şu anda UAT ortamında yayınlanmaktadır. İlk 34 sprint tamamlanmış olup yeni sprintlerin planlama çalışmaları devam etmektedir.
Amaç ve Kapsam
- Basit bir CRUD örneğinin ötesine geçerek doküman sahipliği, organizasyon hiyerarşisi, rol ve yetki sınırları, iş akışı kararları, kayıt numaralandırma, denetlenebilirlik ve yayınlama operasyonlarının birlikte çalıştığı bir sistem oluşturmak istedim.
- Tamamlanan kapsamda tekli ve çoklu belge yükleme, versiyonlama, indirme, PDF önizleme, gelen-giden evrak kayıtları, inceleyen atama, bana atananlar ve birim havuzu, yönetici gözetimi, organizasyon yönetimi, denetim geçmişi, dashboard, raporlar, dışa aktarma ve CSV tabanlı yönetim importları bulunur.
- Yapılandırılabilir iş akışları, e-imza, arşiv ve saklama, gelişmiş arama, OCR, yapay zekâ destekli sınıflandırma ve multi-tenant hazırlığı gibi gelecek çalışmalar ayrı bir yol haritasında tutulur; tamamlanmış özellikler gibi sunulmaz.
Güncel UAT Veri Büyüklüğü
- 30 Temmuz 2026 tarihli UAT veri setinde 10.009 kullanıcı, 6 rol, 34 izin, 83 organizasyon ataması, 901 organizasyon birimi ve 2.691 pozisyon bulunmaktadır.
- Doküman yönetimi tarafında 563 kategori ve 235 kayıt defteri bulunmaktadır.
- Bu sayılar mevcut UAT veri setini gösterir; geliştirme, import, kimlik uzlaştırma ve simülasyon senaryoları devam ettikçe değişebilir.
Mimari Yapı / Sistem Tasarımı
- Backend; API, Application, Domain, Persistence, Infrastructure, Shared, Gateway ve Worker projelerinden oluşan katmanlı ve domain odaklı bir yapıya sahiptir.
- ASP.NET Core Minimal API kullanım senaryolarını dışarı açar; Application katmanı iş kurallarını yürütür; Domain varlık davranışlarını korur; Entity Framework Core ve SQL Server veri erişimi ile migration süreçlerini yönetir.
- Angular 21 frontend tarafında tekrar kullanılabilir componentler, reactive form yapısı, merkezi API hata yönetimi, route ve permission guard'ları ile tutarlı PrimeNG, PrimeFlex ve Tailwind CSS kalıpları kullanılır.
- Kimlik doğrulama Keycloak üzerinden yapılır. Uygulama rolleri, ayrıntılı yetkiler, organizasyon atamaları ve kapsam kuralları yalnızca menü görünürlüğüne bırakılmadan backend authorization policy'leri ile denetlenir.
- Dosyalar ve üretilen önizlemeler MinIO üzerinde saklanır. Gotenberg/LibreOffice dokümanları PDF'e dönüştürür; Hangfire ve ayrı Worker servisi uzun süren işleri HTTP istek akışının dışında çalıştırır.
- YARP Gateway kararlı bir dış API sınırı oluşturur; Redis cache için, SignalR anlık güncellemeler için, Serilog + Seq ise yapılandırılmış ve correlation bilgili loglar için kullanılır.
Arka Plan İşleri, Anlık Güncellemeler ve Gözlemlenebilirlik
- Hangfire yalnızca ayrı Worker servisi içinde çalışır. API'yi job sunucusuna dönüştürmeden background queue'ları, recurring schedule'ları, retry durumlarını, çalışma geçmişini ve operasyon dashboard'unu yönetir.
- Doküman önizleme job'ları desteklenen Office dosyalarını Gotenberg/LibreOffice üzerinden PDF'e dönüştürür, üretilen çıktıları MinIO üzerinde saklar ve dönüşümü HTTP isteğinin dışında tamamlayarak yükleme işlemini bekletmez.
- Recurring workflow.simulation.continuous-activity job'ı production dışı ortamlarda gerçek ve kimlik doğrulamalı API üzerinden kontrollü doküman, kayıt ve iş akışı hareketleri üretir. Yetkilendirme, organizasyon kapsamı, audit ve yeniden başlatma davranışlarını sınamak için kullanılır.
- Simülatör; tanımladığım senaryolara göre doküman ve versiyon yükleme, sorumluluk değiştirme, incelemeye gönderme ve atama, onay/ret/iade kararları, birimler arası havale, görevi alma ve gelen-giden evrak kayıt işlemlerini sürekli yürütür.
- Böylece manuel kullanıcı işlemi olmasa bile UAT sistemi sürekli iş yükü altında kalır; dashboard, audit, önizleme, Hangfire, SignalR ve Seq verileri düzenli olarak oluşur. Bu hareketler production kullanıcı trafiği değil, kontrollü sentetik UAT trafiğidir.
- Recurring identity.reconciliation.sync-users job'ı Keycloak ile uygulama arasındaki kimlik kayıtlarını eşitler ve uzlaştırır.
- SignalR, başarılı işlemlerden sonra dashboard verisinin değiştiğini bildiren hafif bir event yayınlar. Frontend bu event'i debounce ederek yetkili dashboard özetini yeniden ister; doküman veya dashboard verisi SignalR payload'ı içinde taşınmaz.
- Seq, Serilog tarafından üretilen yapılandırılmış eventleri tek yerde toplar. Correlation ID ile job, run, scenario, step, action, conversion ve document kimlikleri; parola, token veya doküman içeriği loglanmadan API, Worker, önizleme ve iş akışı hatalarını izlenebilir hale getirir.
Araçları Ne İçin ve Nasıl Kullandım?
- SRS ve depo içi dokümantasyon: Çalışmaya Software Requirements Specification ile başladım; mimari kararları, sprint planlarını, QA kanıtlarını, deployment ve operasyon notlarını kodla birlikte versiyonladım.
- Taiga: Yol haritasını epic, user story, task ve sprintlere ayırdım. Depodaki scriptler sprint markdown dosyalarını dry-run ve apply adımlarıyla Taiga'ya senkronize eder.
- Git ve Forgejo: Her story için kodlu bir branch ve conventional commit geçmişi oluşturdum; değişiklikleri pull request üzerinden birleştirdim. Böylece gereksinimden koda kadar izlenebilirlik sağladım.
- OpenAI Codex: Gereksinimleri parçalara ayırma, geliştirme ve refactoring desteği, mimari ve güvenlik incelemeleri, test sonuçlarının analizi, dokümantasyon tutarlılığı ve deployment otomasyonu için mühendislik asistanı olarak kullandım. Kapsam, teknik karar, inceleme ve doğrulama sorumluluğunu kendim yürüttüm.
- Docker Compose: Frontend, Gateway, API, Worker, converter, Seq ve altyapı bağımlılıklarını içeren UAT topolojisini tekrarlanabilir container'lar olarak çalıştırdım.
- Infisical, Cloudflare ve Nginx Proxy Manager: Ortak ortam secret'larını Infisical'da yönettim; DNS, edge routing, reverse proxy ve TLS sınırlarını Cloudflare ile Nginx Proxy Manager üzerinden kurdum.
- Scalar OpenAPI, xUnit, Vitest, ESLint ve Prettier: API keşfi, backend unit/integration/architecture testleri, frontend testleri, statik kontroller ve biçim tutarlılığı için kullandım.
- Forgejo Actions CI/CD: Pull request ve merge işlemlerinde değişen alan tespiti, backend build ve architecture testleri, EF Core model kontrolü, backend unit ve integration testleri, frontend kalite ve unit testleri, production build, Docker image oluşturma ve UAT deployment adımlarını çalıştırdım.
Canlı Adresler ve Demo Erişimi
- UAT uygulaması: https://ebys-uat.erengaygusuz.com.tr
- Proje yönetimi / Taiga: https://taiga.erengaygusuz.com.tr/project/ebysdys-document-workflow-management-platform/timeline
- Git provider, pull request ve CI/CD / Forgejo: https://forgejo.erengaygusuz.com.tr/eren-enterprise-lab/ebys-dys-platform
| Sistem | Kullanıcı adı | Şifre |
|---|---|---|
| Taiga / Forgejo | ebys-viewer | 524746EbysDemo |
| EBYS/DYS UAT | qa-admin | 524746Ebys-Demo |
Temel Modüller ve Teknik Detaylar
- Doküman yönetimi: tekli ve çoklu yükleme, versiyonlar, indirme, sorumlu ve sahiplik yönetimi, PDF önizleme, asenkron dönüşüm ve görünürlük politikaları.
- İş akışı: incelemeye gönderme, inceleyen atama, bana atananlar, birim havuzu, görevi alma, onay/ret/iade kararları, yeniden atama, yönetici gözetimi ve birimler arası havale.
- Kimlik ve organizasyon: kullanıcılar, kurumsal rol şablonları, yetkiler, organizasyon birimleri, pozisyonlar, kullanıcı atamaları, yönetici işaretleri ve kendi birimi/alt birimler/tüm birimler kapsamları.
- Kayıt ve yönetim: kategoriler, kayıt defterleri, gelen-giden evrak numaralandırması ve yüksek hacimli yönetim verileri için CSV importları.
- Denetim ve raporlama: uygulama hareket geçmişi, doküman denetim görünümü, dashboard özetleri, anlık güncellemeler, iş akışı raporları ve CSV/XLSX/PDF çıktıları.
Geliştirme Yöntemi ve İzlenebilirlik
- SRS → yol haritası → sprint → Taiga story → branch → pull request → QA kanıtı → UAT deployment zincirini izledim.
- DOC, WFL, IAM, ORG, RPT, INFRA ve QA gibi story kodlarını sprint dosyalarında, branch adlarında, commit mesajlarında ve pull requestlerde tutarlı biçimde kullandım.
- İncelenen sürümde depo 600 commit, birleştirilmiş 212 pull request ve tamamlanmış 33 sprint içeriyor. Böylece planlanan yol haritası maddelerini tamamlanmış işler gibi göstermeden süreci ölçülebilir tuttum.
Katılım Durumu ve Geliştirme Süresi
- Projeyi yazılım mimarı, full-stack geliştirici, test ve DevOps sorumlusu rollerini üstlenerek tek başıma geliştirdim.
- Git geçmişine göre geliştirme 22 Haziran 2026 tarihinde başladı. İlk dokümante edilmiş UAT aşamasına 25 Temmuz 2026 tarihinde; başlangıç ve bitiş günleri dahil 34 takvim gününde, yani yaklaşık beş haftada ulaştım.
- Geliştirme halen devam etmektedir. Gereksinim analizi, mimari tasarım, domain modelleme, backend ve frontend geliştirme, veritabanı migrationları, otomatik testler, dokümantasyon, containerlaştırma, CI/CD ve UAT operasyonlarını yürütüyorum.
Test ve Kalite Yaklaşımı
- 24 Temmuz 2026 tarihli otomatik kalite tabanı; 0 build warning ve 0 error, 8/8 architecture testi, 856/856 backend unit testi, 259/259 integration testi ve 56/56 frontend testi ile tamamlandı.
- Aynı kalite kapısı EF Core model/migration farkını, frontend format ve lint kontrollerini, production build'i, atlanan test işaretlerini, geçici TODO/FIXME istisnalarını ve whitespace hatalarını da denetledi.
- Sprintlere özel manuel QA senaryoları ve UAT smoke matrisleri de depo içinde tutulur. Sprint 34'ün tamamlanmasının ardından yeni sprintlerin QA kapsamı, sonraki geliştirme dönemiyle birlikte planlanmaktadır.
Yayın / Deployment ve Operasyon
- Proje şu anda UAT ortamında yayınlanmaktadır. Docker Compose; frontend, gateway, API, Worker, converter, loglama ve bağımlılık servislerini birbirinden ayırır.
- Runtime secret ve ortam ayarları merkezi kaynak olarak Infisical üzerinden sağlanır. Ortama özel API, Worker, Gateway, Keycloak, SQL Server, Redis, MinIO, Hangfire ve converter ayarları depoya eklenmek yerine deployment sırasında enjekte edilir.
- Dış trafik iç Docker servislerine ulaşmadan önce Cloudflare ve Nginx Proxy Manager katmanlarından geçecek şekilde tasarlanmıştır. Yapılandırılmış loglar ve correlation bilgileri Seq üzerinden incelenir.
- Forgejo Actions pipeline'ı kod ve migration kontrollerini yapar, otomatik testleri çalıştırır, uygulama image'larını oluşturur ve kabul edilen UAT adayını yayınlar. Proje UAT aşamasındadır; production sürümü olarak sunulmamaktadır.