Dashboard
Hoş geldiniz
Şubat 2025 — Finansal Özet
Toplam Ciro
0,00
+18.4% geçen aya göre
Tahsilat
0,00
+12.1% geçen aya göre
Toplam Gider
0,00
+5.2% geçen aya göre
Bekleyen Alacak
0,00
-3 fatura bekliyor
Gelir / Gider Grafiği
Gelir Gider
En Çok Alışveriş Yapanlar
Tümü →
Teknoloji A.Ş.₺48.200
Mega Market Ltd.₺32.150
Yıldız İnşaat₺28.900
Demir Tekstil₺19.400
Akın Tarım₺12.100
Son Faturalar
Tümünü Gör →
Fatura No Müşteri Tarih Tutar KDV Toplam Durum
Tümü (0) | Ödendi (0) Bekliyor (0) Gecikmiş (0) Taslak (0)
Fatura NoMüşteriTarihVadeTutarKDVToplamDurum
Bu Ay Gelir
198.320
Bu Ay Gider
142.180
Net Kar
56.140
İşlem Geçmişi
TarihAçıklamaKategoriGelirGiderBakiye
21 ŞubTeknoloji A.Ş. tahsilatıSatış+₺9.676₺284.750
20 ŞubElektrik faturasıGider-₺2.840₺275.074
19 ŞubYıldız İnşaat faturasıSatış+₺25.960₺277.914
18 ŞubPersonel maaşı (3 kişi)Maaş-₺45.000₺251.954
17 ŞubDemir Tekstil tahsilatıSatış+₺12.400₺296.954
Cari AdıTürüTelefonBorçAlacakBakiyeRisk
Toplam Ürün
247
Kritik Stok
5
Stok Değeri
342.800
Ürün KoduÜrün AdıKategoriBirimStokMin. StokBirim FiyatDurum
PRD-001Laptop Standı ProElektronikAdet14220₺450,00Normal
PRD-002Ofis SandalyesiMobilyaAdet810₺2.800,00Az Stok
PRD-003A4 Fotokopi KağıdıKırtasiyeKutu315₺180,00Kritik
PRD-004USB KlavyeElektronikAdet5510₺320,00Normal
PRD-005Toner KartuşSarf Mal.Adet25₺890,00Kritik
Kasa & Banka
Ana Kasa (TL)
24.850
İş Bankası Vadesiz
142.320
Ziraat Bankası
58.940
Kasa Hareketleri
TarihAçıklamaKasa/BankaGirişÇıkışBakiye
21 ŞubMüşteri tahsilatıAna Kasa+₺9.676₺24.850
20 ŞubEFT — Personel maaşİş Bankası-₺15.000₺142.320
19 ŞubKira ödemesiZiraat-₺12.500₺58.940
18 ŞubSatış tahsilatı (havale)İş Bankası+₺25.960₺157.320
Çek / Senet
Portföydeki Çek
14
Çek Toplam
84.200
Vadeli Senet
6
Karşılıksız Risk
1
Seri NoTürüMüşteri/BankaDüzenlenmeVadeTutarDurum
CHK-2025-0041ÇekTeknoloji A.Ş.15 Şub01 Mar 2025₺18.000Tahsil Edilecek
SNT-2025-0018SenetMega Market10 Şub15 Mar 2025₺24.500Bekliyor
CHK-2025-0039ÇekDemir Tekstil05 Şub28 Şub 2025₺8.700Riskli
Finansal Raporlar
Aylık Kar/Zarar Raporu
Aylık bazda gelir, gider ve net kar karşılaştırması. KDV dahil/hariç seçeneği.
Nakit Akış Raporu
Kasa ve banka hareketleri, dönemsel nakit pozisyonu analizi.
Müşteri Bazlı Satış Raporu
Müşteri başına ciro, alacak durumu, vade analizi.
Stok Devir Hızı Raporu
Ürün bazlı satış hızı, kritik stok uyarıları ve sipariş önerileri.
Sistem Mimarisi
📐 Proje Yapısı
Solution Yapısı
# IDEALBulut.sln ├── src/ │ ├── IDEALBulut.API/ # .NET 8 Web API │ ├── IDEALBulut.Core/ # Domain + Interfaces │ ├── IDEALBulut.Infrastructure/ # EF Core + PostgreSQL │ ├── IDEALBulut.Web/ # Blazor WebAssembly PWA │ └── IDEALBulut.Mobile/ # .NET MAUI Blazor Hybrid ├── tests/ │ ├── IDEALBulut.UnitTests/ │ └── IDEALBulut.IntegrationTests/ └── docker-compose.yml
🗄️ Backend — .NET 8 Web API
Program.cs — Minimal API Bootstrap
var builder = WebApplication.CreateBuilder(args); // PostgreSQL + EF Core builder.Services.AddDbContext<AppDbContext>(opt => opt.UseNpgsql(builder.Configuration.GetConnectionString("Postgres"))); // JWT Auth builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(opt => { /* JWT config */ }); // CORS for Blazor + MAUI builder.Services.AddCors(opt => opt.AddPolicy("AllowAll", p => p.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader())); // In-Memory Queue (Redis hazır değilse) builder.Services.AddSingleton<IBackgroundQueue, InMemoryQueue>(); // AutoMapper + FluentValidation + MediatR (CQRS) builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Program).Assembly)); builder.Services.AddAutoMapper(typeof(Program));
Fatura Entity — EF Core Code-First
public class Fatura : BaseEntity { public string FaturaNo { get; set; } public FaturaTipi Tip { get; set; } // Satis | Alis | Iade public FaturaDurumu Durum { get; set; } // Taslak | Odendi | Bekliyor | Gecikti public Guid CariId { get; set; } public Cari Cari { get; set; } public DateTime FaturaTarihi { get; set; } public DateTime? VadeTarihi { get; set; } public List<FaturaKalemi> Kalemler { get; set; } public decimal ToplamKdvsiz => Kalemler.Sum(k => k.ToplamKdvsiz); public decimal ToplamKdv => Kalemler.Sum(k => k.Kdv); public decimal GenelToplam => ToplamKdvsiz + ToplamKdv; }
🌐 Frontend — Blazor WebAssembly PWA
wwwroot/manifest.json — PWA Konfigürasyonu
{ "name": "IDEALBulut", "short_name": "IDEALBulut", "display": "standalone", "background_color": "#0a0f1e", "theme_color": "#3b82f6", "start_url": "/", "icons": [{ "src": "icon-192.png", "sizes": "192x192" }], "offline_enabled": true }
appsettings.json — GarantiServer Bağlantısı
{ "ConnectionStrings": { "Postgres": "Host=localhost;Port=5432;Database=muhasebe_db;Username=pg_user;Password=****" }, "Jwt": { "Issuer": "https://yourdomain.garantiserver.com", "Audience": "IDEALBulut", "SecretKey": "super-secret-key-min-256bit", "ExpiryMinutes": 1440 }, "Queue": { "Provider": "InMemory" // "Redis" olarak değiştirilebilir } }
📱 Mobil — .NET MAUI Blazor Hybrid
Tek kod tabanı (Blazor bileşenleri) hem Web hem iOS/Android'de çalışır.
Avantaj: Web'de yazdığınız her Razor component MAUI'de aynen çalışır. Ayrı UI kodu yazmaya gerek yok.
# MauiProgram.cs public static MauiApp CreateMauiApp() { var builder = MauiApp.CreateBuilder(); builder .UseMauiApp<App>() .ConfigureFonts(fonts => { /* ... */ }); builder.Services.AddMauiBlazorWebView(); builder.Services.AddSingleton<IFaturaService, FaturaService>(); builder.Services.AddSingleton<IOfflineStore, SQLiteOfflineStore>(); // Offline-first: SQLite local cache + API sync return builder.Build(); }
🗃️ Veritabanı Şeması
-- Temel tablolar (PostgreSQL) CREATE TABLE cariler ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), ad VARCHAR(200) NOT NULL, tipi VARCHAR(20), -- Musteri | Tedarikci | Her Ikisi vergi_no VARCHAR(11), bakiye NUMERIC(18,2) DEFAULT 0, olusturma_tarihi TIMESTAMP DEFAULT NOW() ); CREATE TABLE faturalar ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), fatura_no VARCHAR(30) UNIQUE NOT NULL, cari_id UUID REFERENCES cariler(id), durum VARCHAR(20), -- Taslak|Bekliyor|Odendi|Gecikti fatura_tarihi DATE NOT NULL, vade_tarihi DATE, genel_toplam NUMERIC(18,2), kdv_toplam NUMERIC(18,2), tenant_id UUID NOT NULL -- Multi-tenant desteği ); CREATE TABLE fatura_kalemleri ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), fatura_id UUID REFERENCES faturalar(id) ON DELETE CASCADE, urun_id UUID REFERENCES stok_kartlari(id), miktar NUMERIC(10,3), birim_fiyat NUMERIC(18,2), kdv_orani NUMERIC(5,2) );