# ============================================================
# Atharvaveda Platform — Admin Structure Creator v2
# VS Code PowerShell Terminal mein run karo
# Project root se: .\create-admin-structure.ps1
# GREEN = nayi file bani | GRAY = skip (already exists)
# ============================================================
function MakeDir($path) {
if (-not (Test-Path $path)) {
New-Item -ItemType Directory -Force -Path $path | Out-Null
Write-Host " [DIR] $path" -ForegroundColor Cyan
}
}
function MakeFile($path, $content) {
if (-not (Test-Path $path)) {
New-Item -ItemType File -Force -Path $path | Out-Null
Set-Content -Path $path -Value $content -Encoding UTF8
Write-Host " [NEW] $path" -ForegroundColor Green
} else {
Write-Host " [SKIP] $path" -ForegroundColor DarkGray
}
}
Write-Host ""
Write-Host "============================================================" -ForegroundColor Yellow
Write-Host " Atharvaveda Admin Structure Builder v2" -ForegroundColor Yellow
Write-Host "============================================================" -ForegroundColor Yellow
Write-Host ""
$b = "app\Filament\Admin"
$v = "resources\views\filament\admin\pages"
# ============================================================
# HELPER — Generate a simple Filament Page PHP class
# ============================================================
function PageClass($ns, $class, $viewPath) {
return @"
$title
This page is under construction.
"@
}
# ============================================================
# 1. DASHBOARD PAGES
# ============================================================
Write-Host "[1/15] Dashboard Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages"
MakeDir "$v\dashboard"
MakeFile "$b\Pages\LiveActivity.php" (PageClass "App\Filament\Admin\Pages" "LiveActivity" "filament.admin.pages.dashboard.live-activity")
MakeFile "$b\Pages\QuickStats.php" (PageClass "App\Filament\Admin\Pages" "QuickStats" "filament.admin.pages.dashboard.quick-stats")
MakeFile "$v\dashboard\live-activity.blade.php" (BladeStub "Live Activity Feed")
MakeFile "$v\dashboard\quick-stats.blade.php" (BladeStub "Quick Stats")
# ============================================================
# 2. PAYMENTS RESOURCE
# ============================================================
Write-Host "[2/15] Payments Resource..." -ForegroundColor Magenta
MakeDir "$b\Resources\Payments"
MakeDir "$b\Resources\Payments\Pages"
MakeDir "$b\Resources\Payments\Schemas"
MakeDir "$b\Resources\Payments\Tables"
$paymentResource = @'
ListPayments::route('/'),
];
}
}
'@
$listPayments = @'
components([
TextInput::make('gateway_txn_id')->label('Transaction ID')->disabled(),
TextInput::make('amount')->prefix('₹')->disabled(),
TextInput::make('commission_pool')->label('Commission Pool')->prefix('₹')->disabled(),
TextInput::make('platform_fee')->label('Platform Fee')->prefix('₹')->disabled(),
Select::make('status')
->options(['pending' => 'Pending', 'success' => 'Success', 'failed' => 'Failed', 'refunded' => 'Refunded'])
->disabled(),
]);
}
}
'@
$paymentsTable = @'
columns([
TextColumn::make('application.application_id')->label('App ID')->searchable()->fontFamily('mono'),
TextColumn::make('user.name')->label('User')->searchable(),
TextColumn::make('amount')->money('INR')->sortable(),
TextColumn::make('commission_pool')->label('Commission Pool')->money('INR'),
TextColumn::make('platform_fee')->label('Platform Fee')->money('INR'),
TextColumn::make('gateway_txn_id')->label('Txn ID')->copyable(),
TextColumn::make('gateway_name')->label('Gateway')->badge(),
TextColumn::make('status')->badge()
->color(fn ($s) => match ($s) {
'success' => 'success',
'pending' => 'warning',
'failed' => 'danger',
'refunded' => 'info',
default => 'gray',
}),
TextColumn::make('paid_at')->label('Paid At')->dateTime('d M Y, h:i A')->sortable(),
])
->filters([
SelectFilter::make('status')->options(['pending' => 'Pending', 'success' => 'Success', 'failed' => 'Failed', 'refunded' => 'Refunded']),
])
->defaultSort('created_at', 'desc');
}
}
'@
MakeFile "$b\Resources\Payments\PaymentResource.php" $paymentResource
MakeFile "$b\Resources\Payments\Pages\ListPayments.php" $listPayments
MakeFile "$b\Resources\Payments\Schemas\PaymentForm.php" $paymentForm
MakeFile "$b\Resources\Payments\Tables\PaymentsTable.php" $paymentsTable
# ============================================================
# 3. KYC RESOURCE
# ============================================================
Write-Host "[3/15] KYC Resource..." -ForegroundColor Magenta
MakeDir "$b\Resources\Kyc"
MakeDir "$b\Resources\Kyc\Pages"
MakeDir "$b\Resources\Kyc\Schemas"
MakeDir "$b\Resources\Kyc\Tables"
$kycResource = @'
ListKyc::route('/'),
'edit' => EditKyc::route('/{record}/edit'),
];
}
}
'@
$listKyc = @'
components([
TextInput::make('pan_number')->label('PAN Number'),
TextInput::make('aadhaar_number')->label('Aadhaar Number'),
TextInput::make('bank_account')->label('Bank Account'),
TextInput::make('bank_ifsc')->label('IFSC Code'),
TextInput::make('bank_name')->label('Bank Name'),
TextInput::make('upi_id')->label('UPI ID'),
Select::make('status')
->options(['pending' => 'Pending', 'verified' => 'Verified', 'rejected' => 'Rejected'])
->required(),
]);
}
}
'@
$kycTable = @'
columns([
TextColumn::make('user.name')->label('User')->searchable(),
TextColumn::make('pan_number')->label('PAN')->placeholder('Not provided'),
TextColumn::make('aadhaar_number')->label('Aadhaar')->placeholder('Not provided'),
TextColumn::make('bank_name')->label('Bank'),
TextColumn::make('upi_id')->label('UPI ID')->placeholder('—'),
TextColumn::make('status')->badge()
->color(fn ($s) => match ($s) {
'verified' => 'success',
'pending' => 'warning',
'rejected' => 'danger',
default => 'gray',
}),
TextColumn::make('verified_at')->label('Verified At')->date('d M Y'),
])
->filters([
SelectFilter::make('status')->options(['pending' => 'Pending', 'verified' => 'Verified', 'rejected' => 'Rejected']),
])
->actions([EditAction::make()])
->bulkActions([BulkActionGroup::make([DeleteBulkAction::make()])])
->defaultSort('created_at', 'desc');
}
}
'@
MakeFile "$b\Resources\Kyc\KycResource.php" $kycResource
MakeFile "$b\Resources\Kyc\Pages\ListKyc.php" $listKyc
MakeFile "$b\Resources\Kyc\Pages\EditKyc.php" $editKyc
MakeFile "$b\Resources\Kyc\Schemas\KycForm.php" $kycForm
MakeFile "$b\Resources\Kyc\Tables\KycTable.php" $kycTable
# ============================================================
# 4. FINANCE PAGES
# ============================================================
Write-Host "[4/15] Finance Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Finance"
MakeDir "$v\finance"
$financePages = @(
@{ class="CommissionRules"; view="commission-rules"; title="Commission Rules" },
@{ class="CommissionRuleVersions"; view="commission-rule-versions"; title="Commission Rule Versions" },
@{ class="WalletOverview"; view="wallet-overview"; title="Wallet Overview" },
@{ class="WalletTransactions"; view="wallet-transactions"; title="Wallet Transactions" },
@{ class="PlatformRevenue"; view="platform-revenue"; title="Platform Revenue" },
@{ class="FeeCollection"; view="fee-collection"; title="Fee Collection" }
)
foreach ($p in $financePages) {
MakeFile "$b\Pages\Finance\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Finance" $p.class "filament.admin.pages.finance.$($p.view)")
MakeFile "$v\finance\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 5. WITHDRAWAL PAGES
# ============================================================
Write-Host "[5/15] Withdrawal Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Withdrawals"
MakeDir "$v\withdrawals"
$withdrawalPages = @(
@{ class="BulkProcess"; view="bulk-process"; title="Bulk Process Withdrawals" },
@{ class="WithdrawalLimits"; view="withdrawal-limits"; title="Withdrawal Limits Config" },
@{ class="BankVerification"; view="bank-verification"; title="Bank Verification" }
)
foreach ($p in $withdrawalPages) {
MakeFile "$b\Pages\Withdrawals\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Withdrawals" $p.class "filament.admin.pages.withdrawals.$($p.view)")
MakeFile "$v\withdrawals\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 6. REFERRAL PAGES
# ============================================================
Write-Host "[6/15] Referral Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Referrals"
MakeDir "$v\referrals"
$referralPages = @(
@{ class="ChainViewer"; view="chain-viewer"; title="Referral Chain Viewer" },
@{ class="TopReferrers"; view="top-referrers"; title="Top Referrers" },
@{ class="ReferralSnapshots"; view="referral-snapshots"; title="Referral Snapshots" },
@{ class="SuspiciousReferrals"; view="suspicious-referrals"; title="Suspicious Referrals" },
@{ class="DepthAnalysis"; view="depth-analysis"; title="Depth Level Analysis" },
@{ class="ReferralConfig"; view="referral-config"; title="Referral Config" }
)
foreach ($p in $referralPages) {
MakeFile "$b\Pages\Referrals\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Referrals" $p.class "filament.admin.pages.referrals.$($p.view)")
MakeFile "$v\referrals\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 7. FRAUD DETECTION PAGES
# ============================================================
Write-Host "[7/15] Fraud Detection Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Fraud"
MakeDir "$v\fraud"
$fraudPages = @(
@{ class="FraudDashboard"; view="fraud-dashboard"; title="Fraud Dashboard" },
@{ class="SuspiciousAccounts"; view="suspicious-accounts"; title="Suspicious Accounts" },
@{ class="MultipleAccounts"; view="multiple-accounts"; title="Multiple Account Detection" },
@{ class="SameBankWithdrawals"; view="same-bank-withdrawals"; title="Same Bank Withdrawals" },
@{ class="ReferralSpikes"; view="referral-spikes"; title="Referral Spike Alerts" },
@{ class="IpBlacklist"; view="ip-blacklist"; title="IP Blacklist" },
@{ class="FlaggedTransactions"; view="flagged-transactions"; title="Flagged Transactions" },
@{ class="FraudRules"; view="fraud-rules"; title="Fraud Rules Config" }
)
foreach ($p in $fraudPages) {
MakeFile "$b\Pages\Fraud\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Fraud" $p.class "filament.admin.pages.fraud.$($p.view)")
MakeFile "$v\fraud\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 8. REPORTS PAGES
# ============================================================
Write-Host "[8/15] Reports Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Reports"
MakeDir "$v\reports"
$reportPages = @(
@{ class="AnalyticsOverview"; view="analytics-overview"; title="Analytics Overview" },
@{ class="RevenueReport"; view="revenue-report"; title="Revenue Report" },
@{ class="CommissionReport"; view="commission-report"; title="Commission Report" },
@{ class="ReferralPerformance"; view="referral-performance"; title="Referral Performance" },
@{ class="ApplicationReport"; view="application-report"; title="Application Report" },
@{ class="UserGrowthReport"; view="user-growth-report"; title="User Growth Report" },
@{ class="WithdrawalReport"; view="withdrawal-report"; title="Withdrawal Report" },
@{ class="LevelCommissions"; view="level-commissions"; title="Level-wise Commission" },
@{ class="DailySummary"; view="daily-summary"; title="Daily Summary" },
@{ class="MonthlySummary"; view="monthly-summary"; title="Monthly Summary" }
)
foreach ($p in $reportPages) {
MakeFile "$b\Pages\Reports\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Reports" $p.class "filament.admin.pages.reports.$($p.view)")
MakeFile "$v\reports\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 9. NOTIFICATION PAGES
# ============================================================
Write-Host "[9/15] Notification Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Notifications"
MakeDir "$v\notifications"
$notifPages = @(
@{ class="NotificationCenter"; view="notification-center"; title="Notification Center" },
@{ class="SendBulkNotification"; view="send-bulk-notification"; title="Send Bulk Notification" },
@{ class="EmailNotifications"; view="email-notifications"; title="Email Notifications" },
@{ class="WhatsappNotifications"; view="whatsapp-notifications"; title="WhatsApp Notifications" },
@{ class="SmsNotifications"; view="sms-notifications"; title="SMS Notifications" },
@{ class="NotificationTemplates"; view="notification-templates"; title="Notification Templates" },
@{ class="NotificationLogs"; view="notification-logs"; title="Notification Logs" },
@{ class="NotificationSchedule"; view="notification-schedule"; title="Notification Schedule" }
)
foreach ($p in $notifPages) {
MakeFile "$b\Pages\Notifications\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Notifications" $p.class "filament.admin.pages.notifications.$($p.view)")
MakeFile "$v\notifications\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 10. CONTENT MANAGEMENT PAGES
# ============================================================
Write-Host "[10/15] Content Management Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Content"
MakeDir "$v\content"
$contentPages = @(
@{ class="ContentPages"; view="pages"; title="Pages" },
@{ class="Announcements"; view="announcements"; title="Announcements" },
@{ class="Faqs"; view="faqs"; title="FAQs" },
@{ class="Terms"; view="terms"; title="Terms & Conditions" },
@{ class="Privacy"; view="privacy"; title="Privacy Policy" },
@{ class="Banners"; view="banners"; title="Banners & Media" },
@{ class="Blog"; view="blog"; title="Blog / News" },
@{ class="HelpCenter"; view="help-center"; title="Help Center" }
)
foreach ($p in $contentPages) {
MakeFile "$b\Pages\Content\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Content" $p.class "filament.admin.pages.content.$($p.view)")
MakeFile "$v\content\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 11. SUPPORT PAGES
# ============================================================
Write-Host "[11/15] Support Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Support"
MakeDir "$v\support"
$supportPages = @(
@{ class="SupportDashboard"; view="support-dashboard"; title="Support Dashboard" },
@{ class="AllTickets"; view="all-tickets"; title="All Tickets" },
@{ class="TicketCategories"; view="ticket-categories"; title="Ticket Categories" },
@{ class="AutoReplyTemplates"; view="auto-reply-templates"; title="Auto-Reply Templates" }
)
foreach ($p in $supportPages) {
MakeFile "$b\Pages\Support\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Support" $p.class "filament.admin.pages.support.$($p.view)")
MakeFile "$v\support\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 12. ROLES & PERMISSIONS PAGES
# ============================================================
Write-Host "[12/15] Roles & Permissions Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Roles"
MakeDir "$v\roles"
$rolePages = @(
@{ class="AllRoles"; view="all-roles"; title="All Roles" },
@{ class="AllPermissions"; view="all-permissions"; title="All Permissions" },
@{ class="RoleAssignment"; view="role-assignment"; title="Role Assignment" },
@{ class="StaffHierarchy"; view="staff-hierarchy"; title="Staff Hierarchy" },
@{ class="AccessMatrix"; view="access-matrix"; title="Access Control Matrix" }
)
foreach ($p in $rolePages) {
MakeFile "$b\Pages\Roles\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Roles" $p.class "filament.admin.pages.roles.$($p.view)")
MakeFile "$v\roles\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 13. GEOGRAPHY PAGES
# ============================================================
Write-Host "[13/15] Geography Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Geography"
MakeDir "$v\geography"
$geoPages = @(
@{ class="States"; view="states"; title="States" },
@{ class="Districts"; view="districts"; title="Districts" },
@{ class="Cities"; view="cities"; title="Cities / Blocks" },
@{ class="ZoneCoordinators"; view="zone-coordinators"; title="Zone Coordinators" },
@{ class="StatePerformance"; view="state-performance"; title="State Performance" }
)
foreach ($p in $geoPages) {
MakeFile "$b\Pages\Geography\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Geography" $p.class "filament.admin.pages.geography.$($p.view)")
MakeFile "$v\geography\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 14. SETTINGS PAGES
# ============================================================
Write-Host "[14/15] Settings Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\Settings"
MakeDir "$v\settings"
$settingPages = @(
@{ class="GeneralSettings"; view="general-settings"; title="General Settings" },
@{ class="ApplicationSettings"; view="application-settings"; title="Application Settings" },
@{ class="PaymentGateway"; view="payment-gateway"; title="Payment Gateway" },
@{ class="EmailSettings"; view="email-settings"; title="Email / SMTP Settings" },
@{ class="WhatsappSettings"; view="whatsapp-settings"; title="WhatsApp API Settings" },
@{ class="SmsSettings"; view="sms-settings"; title="SMS Gateway Settings" },
@{ class="CommissionPlanSettings"; view="commission-plan-settings"; title="Commission Plan Settings" },
@{ class="ReferralSettings"; view="referral-settings"; title="Referral Settings" },
@{ class="WithdrawalSettings"; view="withdrawal-settings"; title="Withdrawal Settings" },
@{ class="KycSettings"; view="kyc-settings"; title="KYC Settings" },
@{ class="SecuritySettings"; view="security-settings"; title="Security Settings" },
@{ class="Localization"; view="localization"; title="Localization" },
@{ class="BrandingAppearance"; view="branding-appearance"; title="Branding & Appearance" }
)
foreach ($p in $settingPages) {
MakeFile "$b\Pages\Settings\$($p.class).php" (PageClass "App\Filament\Admin\Pages\Settings" $p.class "filament.admin.pages.settings.$($p.view)")
MakeFile "$v\settings\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# 15. SYSTEM PAGES
# ============================================================
Write-Host "[15/15] System Pages..." -ForegroundColor Magenta
MakeDir "$b\Pages\System"
MakeDir "$v\system"
$systemPages = @(
@{ class="SystemHealth"; view="system-health"; title="System Health" },
@{ class="QueueMonitor"; view="queue-monitor"; title="Queue Monitor" },
@{ class="JobFailures"; view="job-failures"; title="Job Failures" },
@{ class="CacheManagement"; view="cache-management"; title="Cache Management" },
@{ class="ApplicationLogs"; view="application-logs"; title="Application Logs" },
@{ class="DatabaseBackup"; view="database-backup"; title="Database Backup" },
@{ class="MaintenanceMode"; view="maintenance-mode"; title="Maintenance Mode" },
@{ class="ApiKeys"; view="api-keys"; title="API Keys" },
@{ class="ScheduledTasks"; view="scheduled-tasks"; title="Scheduled Tasks" },
@{ class="EnvironmentInfo"; view="environment-info"; title="Environment Info" }
)
foreach ($p in $systemPages) {
MakeFile "$b\Pages\System\$($p.class).php" (PageClass "App\Filament\Admin\Pages\System" $p.class "filament.admin.pages.system.$($p.view)")
MakeFile "$v\system\$($p.view).blade.php" (BladeStub $p.title)
}
# ============================================================
# DONE
# ============================================================
Write-Host ""
Write-Host "============================================================" -ForegroundColor Yellow
Write-Host " Structure ready! Ab ye run karo:" -ForegroundColor Yellow
Write-Host ""
Write-Host " composer dump-autoload" -ForegroundColor Green
Write-Host " php artisan optimize:clear" -ForegroundColor Green
Write-Host "============================================================" -ForegroundColor Yellow
Write-Host ""