How jonathangunawan30/fundraiser-backend works
FundRaiser is a headless crowdfunding API. Users authenticate, discover or create campaigns, and donate through payment processing; administrators verify campaigns and manage platform operations. The map preserves documented payment, withdrawal, content administration, audit, queued messaging, and real-time capabilities. The sampled campaign and authentication code supports the key controller/service/repository relationships; README claims identify additional capabilities, but their detailed wiring was not sampled.
Main entry points: api.php API routes · AdminController.php Admin API · AuthService.php Authentication service · CampaignController.php Campaign API
Components 30
API surface
- API routes
routes/api.php - Campaign API
app/Http/Controllers/Api/CampaignController.php - Donation API
app/Http/Controllers/Api/DonationController.php - Payment API
app/Http/Controllers/Api/DonationPaymentController.php - Withdrawal API
app/Http/Controllers/Api/WithdrawalController.php - Authentication API
app/Http/Controllers/Api/AuthController.php - Admin API
app/Http/Controllers/Api/AdminController.php - JSON responses
app/Traits/ApiResponse.php
Fundraising
- Campaign service
app/Services/Implementations/CampaignService.php - Campaign repository
app/Repositories/Implementations/CampaignRepository.php - Campaign records
app/Models/Campaign.php - Donation service
app/Services/Implementations/DonationService.php - Payment service
app/Services/Implementations/DonationPaymentService.php - Midtrans integration
app/Services/Implementations/MidtransService.php - Withdrawal service
app/Services/Implementations/WithdrawalService.php
Identity
- Authentication service
app/Services/Implementations/AuthService.php - Authentication repository
app/Repositories/Implementations/AuthRepository.php - OAuth accounts
app/Models/OauthAccount.php
Administration
- Admin service
app/Services/Implementations/AdminService.php - Admin content controls
app/Http/Controllers/Api/BannerController.php - Settings and FAQs
app/Http/Controllers/Api/SiteSettingController.php - Audit logging
app/Services/Implementations/AuditLogService.php
Messaging and state
- Queued jobs
app/Jobs/ProcessSuccessfulDonation.php - Notifications
app/Services/Implementations/NotificationService.php - Redis OTP store
app/Services/Implementations/AuthService.php
Other components
- API clients
- Midtrans
- Google / GitHub
- Reverb WebSockets
- Resend email
Connections 28
- API clients → API routes: sends requests
- API routes → Campaign API: dispatches
- API routes → Donation API: dispatches
- API routes → Payment API: dispatches
- API routes → Withdrawal API: dispatches
- API routes → Authentication API: dispatches
- API routes → Admin API: dispatches
- Campaign API → Campaign service: calls
- Campaign service → Campaign repository: calls
- Campaign repository → Campaign records: reads and writes
- Campaign API → JSON responses: formats
- Donation API → Donation service: calls
- Payment API → Payment service: calls
- Payment service → Midtrans integration: calls
- Midtrans integration → Midtrans: processes payments
- Withdrawal API → Withdrawal service: calls
- Authentication API → Authentication service: calls
- Authentication service → Authentication repository: calls
- Authentication repository → OAuth accounts: reads and writes
- Google / GitHub → Authentication API: OAuth identity
- Authentication service → Redis OTP store: stores and checks OTP
- Authentication service → Queued jobs: dispatches OTP job
- Admin API → Admin service: calls
- Admin API → Campaign service: verifies campaigns
- Admin content controls → Settings and FAQs: administers
- Admin API → Audit logging: records actions
- Queued jobs → Resend email: sends email
- Notifications → Reverb WebSockets: broadcasts alerts