DPOT - Clean Architecture 기반 Creators Support and donate platform (.NET 10.0)
Admin/ → Razor Pages 관리자 패널 (https://localhost:5000)
Web.Api/ → RESTful Minimal API (https://localhost:4000)
Application/ → CQRS Handler (MediatR)
└── Features/
├── Api/ → Auth, Banner, Channel, Crew, Document, Donation, DonationAlert, DonationRemote, Faq, Forum, Member, MyPage, Note, Notification, Payment, Popup
└── Admin/ → Banner, Cache, Channel, Document, Faq, Forum, Member, MemberGrade, Popup, ReferenceData
Domain/ → Entity, ValueObject
└── Entities/
├── Common/ → Config, Document, etc.
├── Members/ → Member, Channel, RefreshToken, MemberOAuthToken
├── Wallets/ → Wallet, WalletBalance, WalletTransaction
├── Donations/ → Donation, DonationAlert, DonationMeta, Settlement, Crew, CrewSession
├── Notes/ → Note (쪽지)
├── Notifications/ → Notification (알림)
├── Payments/ → PaymentOrder, PaymentConfirm, PaymentCancel, PaymentLog
└── Forum/ → Board, Post, Comment
Infrastructure/ → DB, Auth, Storage, Email
├── Authentication/ → JWT, Identity, GoogleOAuth
├── Cache/ → Redis
├── Hubs/ → AppHub (전역 실시간), DonationHub (후원 위젯/리모콘)
├── Notification/ → NotificationService (쪽지/알림 발송)
├── YouTube/ → YouTubeApiService, PubSub, LiveChat, ChannelCache
├── Payment/ → DanalPayService (PG 결제)
├── Forum/ → 게시판 비즈니스 로직
├── Messaging/ → Email (SMTP, MimeKit)
├── Persistence/ → AppDbContext, IdentityDbContext, Migrations
├── Storage/ → 파일 업로드
└── Extensions/ → 확장 메서드
SharedKernel/ → AppSettings, Result Pattern
Database/ → SQL 배포 스크립트 (deploy-app.sql, deploy-identity.sql, deploy-missing.sql)
Auth, Banner, Channel, Config, Document, Donation, Faq, Forum, MyPage, Note, Notification, Payment, Popup, Wallet
memberID, userID (camelCase + 대문자 ID){} 사용|| 대신)/hubs/app) — 전역 (접속자 추적, 알림, 쪽지, 채팅, 크루 초대/동의)/hubs/donation) — 후원 위젯/리모콘 (OBS용, channelSID 기반)AddApplication() → MediatR 전체 Handler 등록AddApiInfrastructure() → API 전용 (JWT Bearer + 모든 서비스)AddAdminInfrastructure() → Admin 전용 (Identity + 모든 서비스)AddPresentation() → Swagger, ExceptionHandler# Solution build
dotnet build Admin/Admin.slnx
# API 실행
dotnet run --project Web.Api
# Admin 실행
dotnet run --project Admin
# Migration
dotnet ef migrations add <Name> --project Infrastructure --startup-project Admin --context AppDbContext
dotnet ef database update --project Infrastructure --startup-project Admin --context AppDbContext
Result<T> / Error (SharedKernel/Results/)IEndpoint 인터페이스 → MapEndpoint() 구현Application/Features/{Domain}/{Action}/Command.cs, Handler.cs, Response.cs) => { 한 줄에 붙여 작성 (개행 금지)type="button" 필수Send.cs, History.cs)block__element--modifier@danalpay/javascript-sdk (Frontend)Infrastructure/Payment/DanalPayService.cs