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 |
|---|
Faturalar
Tüm satış ve alış faturaları
| Fatura No | Müşteri | Tarih | Vade | Tutar | KDV | Toplam | Durum |
|---|
Gelir / Gider
Nakit akış analizi
Bu Ay Gelir
₺ 198.320
Bu Ay Gider
₺ 142.180
Net Kar
₺ 56.140
İşlem Geçmişi
| Tarih | Açıklama | Kategori | Gelir | Gider | Bakiye |
|---|---|---|---|---|---|
| 21 Şub | Teknoloji A.Ş. tahsilatı | Satış | +₺9.676 | — | ₺284.750 |
| 20 Şub | Elektrik faturası | Gider | — | -₺2.840 | ₺275.074 |
| 19 Şub | Yıldız İnşaat faturası | Satış | +₺25.960 | — | ₺277.914 |
| 18 Şub | Personel maaşı (3 kişi) | Maaş | — | -₺45.000 | ₺251.954 |
| 17 Şub | Demir Tekstil tahsilatı | Satış | +₺12.400 | — | ₺296.954 |
Cari Hesaplar
Müşteri ve tedarikçi bakiyeleri
| Cari Adı | Türü | Telefon | Borç | Alacak | Bakiye | Risk |
|---|
Stok Takibi
Depo ve ürün yönetimi
Toplam Ürün
247
Kritik Stok
5
Stok Değeri
₺342.800
| Ürün Kodu | Ürün Adı | Kategori | Birim | Stok | Min. Stok | Birim Fiyat | Durum |
|---|---|---|---|---|---|---|---|
| PRD-001 | Laptop Standı Pro | Elektronik | Adet | 142 | 20 | ₺450,00 | Normal |
| PRD-002 | Ofis Sandalyesi | Mobilya | Adet | 8 | 10 | ₺2.800,00 | Az Stok |
| PRD-003 | A4 Fotokopi Kağıdı | Kırtasiye | Kutu | 3 | 15 | ₺180,00 | Kritik |
| PRD-004 | USB Klavye | Elektronik | Adet | 55 | 10 | ₺320,00 | Normal |
| PRD-005 | Toner Kartuş | Sarf Mal. | Adet | 2 | 5 | ₺890,00 | Kritik |
Kasa & Banka
Ana Kasa (TL)
₺ 24.850
İş Bankası Vadesiz
₺ 142.320
Ziraat Bankası
₺ 58.940
Kasa Hareketleri
| Tarih | Açıklama | Kasa/Banka | Giriş | Çıkış | Bakiye |
|---|---|---|---|---|---|
| 21 Şub | Müşteri tahsilatı | Ana Kasa | +₺9.676 | — | ₺24.850 |
| 20 Şub | EFT — Personel maaş | İş Bankası | — | -₺15.000 | ₺142.320 |
| 19 Şub | Kira ödemesi | Ziraat | — | -₺12.500 | ₺58.940 |
| 18 Şub | Satış 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 No | Türü | Müşteri/Banka | Düzenlenme | Vade | Tutar | Durum |
|---|---|---|---|---|---|---|
| CHK-2025-0041 | Çek | Teknoloji A.Ş. | 15 Şub | 01 Mar 2025 | ₺18.000 | Tahsil Edilecek |
| SNT-2025-0018 | Senet | Mega Market | 10 Şub | 15 Mar 2025 | ₺24.500 | Bekliyor |
| CHK-2025-0039 | Çek | Demir Tekstil | 05 Şub | 28 Şub 2025 | ₺8.700 | Riskli |
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.
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)
);