Bu plan, task.md içerisindeki manifestoya %100 sadık kalınarak hazırlanmıştır. Junior ihmalleri kabul edilmez.
Hedef: İş kurallarının (Business Logic) dış dünyadan izole bir şekilde, test edilebilir halde inşası.
-
1.1. Proje İskeleti Kurulumu
- Go module init (
go mod init carigo) - Dizin yapısının
task.md'ye birebir uygun oluşturulması. cmd,internal,web,migrationsklasörlerinin açılması.
- Go module init (
-
1.2. Domain Layer: Money Value Object (Task D1)
internal/domain/money.goint64tabanlı kuruş/cent hesabı.Add,Subtractmetodları (Error safe).- Immutable yapı.
-
1.3. Domain Layer: Entities (Task D2)
internal/domain/invoice.go: Fatura durum makinesi (Open -> Paid).internal/domain/payment.go: Ödeme entity'si.internal/domain/customer.go: Müşteri entity'si.internal/domain/allocation.go: Ödeme ve fatura eşleşmesi.
-
1.4. Domain Layer: Unit Tests
money_test.go: Kuruş hesabı şaşamaz.invoice_test.go: Status geçişleri kontrolü.
Hedef: Domain objelerini yöneten, senaryoları (Use Cases) işleten katman.
-
2.1. Port Tanımları (Interfaces)
internal/application/ports/repositories.go: Repository interface'leri (ICustomerRepo, IInvoiceRepo).internal/application/ports/clock.go: Zaman bağımlılığını soyutlama.
-
2.2. Use Cases (Task A1, A2, A3)
CreateInvoice: Fatura oluşturma.RegisterPayment: Tahsilat girişi ve otomatik dağıtım (Allocation) stratejisi.GenerateStatement: Hesap ekstresi.
Hedef: Veritabanı ve dış dünya entegrasyonu. Domain burayı bilmez.
-
3.1. SQLite Setup
- GORM veya raw SQL (Performance odaklı seçim).
internal/infrastructure/persistence/sqlite/.- Repository interface maplemeleri.
-
3.2. Migrations
migrations/klasörü altında SQL dosyaları.- Uygulama başlangıcında opsiyonel auto-migrate.
Hedef: Dış dünyadan gelen istekleri Use Case'lere çevirmek.
-
4.1. Gin Setup & Middleware
- Router yapılandırması (
internal/interfaces/http/router.go). - Error handling middleware.
- Router yapılandırması (
-
4.2. Handlers & DTOs
- Request/Response struct'ları (
dto/). - Handler fonksiyonları (Logic barındırmaz!).
- Request/Response struct'ları (
Hedef: Tüm bağımlılıkların (Dependency Injection) bağlanması.
- 5.1. Bootstrap
internal/bootstrap/container.go: Manual DI.cmd/api/main.go: Uygulamayı ayağa kaldırma.
NOT: Her adımda "Clean Architecture" kuralları ihlal edilirse PR reddedilir (Simülasyon).