# TASKS.md - EZSCALE Site Task Tracker ## Phase 1: Foundation & Core Setup ✅ - [x] Initialize Laravel 12 project with Vue + Inertia starter kit (base install in `website/`) - [x] Configure domain routing (ezscale.dev, account.ezscale.dev, admin.ezscale.dev) - [x] Set up MySQL 8.x database (ezscale_billing + test DB) - [x] Configure Redis (cache, queue, sessions) - [x] Install core dependencies (cashier, fortify, passport, paypal, spatie, inertia, vue3) - [x] Create complete database schema (30 migrations, 15 custom tables) - [x] Set up Laravel Fortify with Vue/Inertia auth pages (7 pages: login, register, forgot/reset password, verify email, confirm password, 2FA challenge) - [x] Implement 2FA (TOTP via Fortify) - [x] Configure spatie roles: `admin` and `customer` - [x] Set up middleware: auth, role-based, rate limiting, HandleInertiaRequests, EnsureUserNotSuspended - [x] Create 14 Eloquent models with factories, relationships, and casts - [x] Create seeders (roles/permissions, plans, admin user) - [x] Build customer dashboard + admin dashboard (placeholder) - [x] Set up Pest testing framework (24 Phase 1 tests passing) - [x] Dark mode UI across all pages - [ ] Configure Cloudflare Zero Trust for admin panel - [ ] Set up GitHub Actions CI/CD pipeline - [ ] Create staging environment (staging.account.ezscale.cloud) - [ ] Configure Mailgun or SendGrid for emails ## Phase 2: Billing & Subscriptions ✅ - [x] Implement `BillingServiceInterface` abstraction - [x] Build `StripeBillingService` (wraps Laravel Cashier) - [x] Build `PayPalBillingService` (wraps srmklive/laravel-paypal) - [x] Create plan catalog with seeder (6 sample plans across VPS, dedicated, hosting, game) - [x] Implement subscription creation flow (plan browsing → checkout → payment → coupon support) - [x] Build payment method management (add/remove/set default via Stripe) - [x] Build invoice and transaction history pages (paginated, download support) - [x] Set up webhook handlers for Stripe and PayPal - [x] Build subscription management (cancel/resume/swap plan) - [x] Build dunning system (DunningService + scheduled ProcessDunning command) - [x] Implement coupon system (validation, redemption, percentage/fixed discounts) - [x] Automatic suspension policy (grace period → suspend → terminate) - [x] Event-driven architecture (PaymentSucceeded/Failed, SubscriptionCreated/Cancelled) - [x] 8 Vue pages for billing flow (plans, checkout, subscriptions, billing/invoices/transactions) - [x] 29 Phase 2 tests (53 total passing) - [ ] Invoice PDF generation (dedicated package) - [ ] Multi-currency support (EUR, GBP, USD, etc.) - [ ] Tax calculation integration (TaxJar/Avalara or manual rates) - [ ] Proration logic for upgrades/downgrades (Cashier swap method) - [ ] Admin coupon management CRUD - [ ] Email notifications for payment events ## Phase 3: Provisioning Automation - [ ] Create `ProvisioningServiceInterface` abstraction - [ ] Build VirtFusion provisioning service: - [ ] Create VPS via API - [ ] Suspend/unsuspend VPS - [ ] Terminate VPS - [ ] Get status and resource usage - [ ] Credential generation and secure storage - [ ] Build Pterodactyl provisioning service: - [ ] Create game server via API - [ ] Suspend/unsuspend server - [ ] Delete server - [ ] Get server status and resources - [ ] Build SynergyCP provisioning service: - [ ] Provision dedicated server - [ ] Suspend/unsuspend server - [ ] Terminate server - [ ] Get server details - [ ] Handle limited hardware inventory (waitlist/semi-auto) - [ ] Build Enhance provisioning service: - [ ] Create web hosting account - [ ] Suspend/delete account - [ ] Get account status - [ ] Implement event-driven provisioning (listen to `PaymentSucceeded` events) - [ ] Build provisioning failure handling and retry logic - [ ] Send credentials email on successful provisioning - [ ] Log all provisioning actions to `provisioning_logs` table ## Phase 4: Customer Dashboard (account.ezscale.cloud) - [ ] Build service overview dashboard: - [ ] Active services list with status indicators - [ ] Resource usage widgets (CPU, RAM, disk, bandwidth) - [ ] Next invoice and payment due date - [ ] Recent support tickets - [ ] Quick actions (renew, upgrade, create ticket) - [ ] Build service detail pages: - [ ] VPS details (IP, credentials, resource graphs, control buttons) - [ ] Game server details (connect info, resource usage, restart button) - [ ] Dedicated server details (IPs, access info, bandwidth graph) - [ ] Web hosting details (domain, cPanel/Enhance link, disk usage) - [ ] Bandwidth usage graphs (from ElastiFlow integration) - [ ] Billing section: - [ ] Invoice history (with PDF download) - [ ] Payment history - [ ] Manage payment methods (add/remove cards, set default) - [ ] Upcoming renewals - [ ] Plan upgrade/downgrade flow (self-service with proration) - [ ] Subscription cancellation flow (with optional survey) - [ ] Profile and account settings: - [ ] Contact information - [ ] Billing/shipping addresses - [ ] Tax ID - [ ] Password change - [ ] 2FA setup (TOTP, passkeys) - [ ] SupportPal integration: - [ ] SSO to SupportPal - [ ] View recent tickets widget - [ ] Create ticket button (opens SupportPal or API) ## Phase 5: Admin Panel (admin.ezscale.cloud) - [ ] Analytics dashboard: - [ ] MRR (Monthly Recurring Revenue) graph - [ ] ARR (Annual Recurring Revenue) - [ ] Churn rate calculation and graph - [ ] Customer growth chart - [ ] Revenue trends (daily, monthly, yearly) - [ ] Popular plans and conversion rates - [ ] Outstanding invoices total - [ ] Overdue accounts list - [ ] Customer management: - [ ] Customer list (searchable, filterable) - [ ] Customer detail view (profile, services, billing history, notes) - [ ] Edit customer information - [ ] Impersonate customer (with audit logging) - [ ] Add admin notes to customer account - [ ] View customer audit log - [ ] Service management: - [ ] All services list (filter by type, status, platform) - [ ] Manually provision service - [ ] Suspend/unsuspend service - [ ] Terminate service - [ ] Modify service (change plan, extend expiry) - [ ] View provisioning logs - [ ] Order management: - [ ] Pending orders list - [ ] Approve/reject orders (for semi-automated provisioning) - [ ] View order details - [ ] Invoice management: - [ ] All invoices list (filter by status, date, customer) - [ ] Create manual invoice - [ ] Edit invoice (before sending) - [ ] Void/refund invoice - [ ] Resend invoice email - [ ] Coupon management: - [ ] Create coupon (percentage, fixed, applies to plans) - [ ] Edit coupon details - [ ] View redemption history - [ ] Deactivate/delete coupon - [ ] Plan management: - [ ] Create new plan (set pricing, features, billing cycle) - [ ] Edit existing plan - [ ] Archive/hide plan - [ ] Set stock quantity (for limited dedicated servers) - [ ] System configuration: - [ ] Email template editor - [ ] Tax rate configuration (by region) - [ ] Suspension policy settings (days before suspend/terminate) - [ ] Bandwidth overage rates - [ ] Discord webhook URLs - [ ] API credentials (VirtFusion, Pterodactyl, etc.) - [ ] Audit log viewer: - [ ] Filter by user, action, date - [ ] View changes (before/after state) - [ ] Export logs ## Phase 6: Bandwidth Monitoring & Billing - [ ] Set up NetFlow/sFlow export from Juniper switches - [ ] Deploy ElastiFlow collector - [ ] Build `BandwidthService` to query ElastiFlow API - [ ] Create scheduled job to collect daily bandwidth data - [ ] Store bandwidth usage in `bandwidth_usage` table - [ ] Build bandwidth usage graphs for customer dashboard - [ ] Implement multi-threshold alerts: - [ ] 75% quota warning email - [ ] 90% quota warning email - [ ] 100% quota reached email - [ ] Discord webhook for high usage customers - [ ] Implement automatic overage billing: - [ ] Calculate overages at end of billing cycle - [ ] Generate overage invoice - [ ] Email customer with overage details - [ ] Build admin bandwidth reports: - [ ] Top bandwidth users - [ ] Total bandwidth by service type - [ ] Overage revenue report ## Phase 7: SupportPal Integration - [ ] Implement SSO for SupportPal: - [ ] Laravel Passport OAuth2 integration - [ ] SupportPal SAML or custom SSO config - [ ] Test seamless login flow - [ ] Build SupportPal API integration: - [ ] Fetch user's recent tickets - [ ] Create ticket via API - [ ] Fetch ticket details and replies - [ ] Build webhook handlers for SupportPal: - [ ] New ticket created - [ ] Ticket reply added - [ ] Ticket status changed - [ ] Ticket closed - [ ] Display tickets in customer dashboard: - [ ] Recent tickets widget - [ ] Link to full ticket in SupportPal - [ ] Admin ticket overview: - [ ] Open tickets count - [ ] Tickets by priority - [ ] Link to SupportPal admin - [ ] Discord notifications for tickets: - [ ] New ticket opened - [ ] Ticket escalated (high priority) ## Phase 8: Marketing Frontend (ezscale.cloud) - [ ] Homepage: - [ ] Hero section with value proposition - [ ] Featured services/plans - [ ] Trust indicators (uptime, customers, years in business) - [ ] Call to action (Get Started, View Plans) - [ ] Product pages: - [ ] VPS hosting page with plan comparison - [ ] Dedicated servers page with configurations - [ ] Web hosting page with features - [ ] Game server hosting page with supported games - [ ] Pricing page: - [ ] Interactive plan comparison table - [ ] Currency selector (USD, EUR, GBP) - [ ] Coupon code application - [ ] Add to cart / checkout flow - [ ] About page - [ ] Contact page - [ ] Blog/news section (optional, or use WordPress?) - [ ] Knowledge base / FAQ: - [ ] Getting started guides - [ ] Tutorials - [ ] Troubleshooting - [ ] API documentation - [ ] Legal pages: - [ ] Terms of Service - [ ] Privacy Policy - [ ] Acceptable Use Policy - [ ] SLA (Service Level Agreement) - [ ] Signup flow: - [ ] Plan selection - [ ] Account creation - [ ] Payment information - [ ] Order confirmation - [ ] Redirect to account dashboard ## Phase 9: API Development - [ ] Customer API (RESTful, Sanctum auth): - [ ] GET /api/v1/services - List customer's services - [ ] GET /api/v1/services/{id} - Service details - [ ] POST /api/v1/services/{id}/reboot - Reboot server - [ ] GET /api/v1/invoices - Invoice history - [ ] GET /api/v1/invoices/{id}/pdf - Download invoice PDF - [ ] GET /api/v1/bandwidth - Bandwidth usage - [ ] POST /api/v1/subscriptions/{id}/cancel - Cancel subscription - [ ] POST /api/v1/tickets - Create support ticket - [ ] Admin API: - [ ] GET /api/v1/admin/customers - List all customers - [ ] GET /api/v1/admin/services - List all services - [ ] POST /api/v1/admin/services/{id}/suspend - Suspend service - [ ] GET /api/v1/admin/analytics - Analytics data - [ ] API documentation (OpenAPI/Swagger) - [ ] API rate limiting and throttling - [ ] API versioning strategy ## Phase 10: Testing, Migration & Launch - [ ] Unit tests for all services and models - [ ] Feature tests for critical user flows: - [ ] Signup and subscription creation - [ ] Payment processing (Stripe + PayPal) - [ ] Service provisioning (all platforms) - [ ] Upgrades/downgrades - [ ] Cancellations - [ ] Invoice generation - [ ] Bandwidth overage billing - [ ] Integration tests: - [ ] VirtFusion API integration - [ ] Pterodactyl API integration - [ ] SynergyCP API integration - [ ] Enhance API integration - [ ] ElastiFlow API integration - [ ] SupportPal API integration - [ ] Security testing: - [ ] Penetration testing (OWASP Top 10) - [ ] Dependency vulnerability scanning - [ ] CSRF and XSS testing - [ ] SQL injection testing - [ ] Rate limiting testing - [ ] Performance testing: - [ ] Load testing (100+ concurrent users) - [ ] Database query optimization - [ ] Redis caching implementation - [ ] CDN for static assets - [ ] WHMCS migration: - [ ] Create migration commands: - [ ] `migrate:whmcs-customers` - [ ] `migrate:whmcs-subscriptions` - [ ] `migrate:whmcs-invoices` - [ ] `migrate:whmcs-payments` - [ ] `migrate:whmcs-services` - [ ] `migrate:whmcs-tickets` - [ ] Test migration in staging - [ ] Verify data integrity - [ ] Map WHMCS product IDs to new plan IDs - [ ] Coordinate Stripe/PayPal subscription transfer - [ ] Pre-launch checklist: - [ ] Email customers about migration - [ ] Set up WHMCS URL redirects - [ ] Configure monitoring (Laravel Telescope, log aggregation) - [ ] Set up error tracking (Sentry, Bugsnag) - [ ] Configure backups (database, files, Redis) - [ ] DNS configuration for all domains - [ ] SSL certificates for all domains - [ ] Cloudflare Zero Trust for admin panel - [ ] Launch: - [ ] Execute final WHMCS migration during maintenance window - [ ] Enable production mode - [ ] Monitor for errors and performance issues - [ ] 30-day parallel operation (keep WHMCS read-only) - [ ] Gather customer feedback - [ ] Address bugs and issues - [ ] Post-launch: - [ ] Monitor analytics and revenue - [ ] Track customer satisfaction - [ ] Iterate based on feedback - [ ] Plan future features ## Phase 11: Future Enhancements (Post-Launch) - [ ] Mobile app (iOS/Android) using API - [ ] Advanced analytics (cohort analysis, LTV predictions) - [ ] Automated resource scaling (auto-upgrade when limits reached) - [ ] Custom server configurations (customer can configure RAM, CPU, disk) - [ ] Marketplace for add-ons (additional IPs, backups, snapshots) - [ ] Advanced bandwidth analytics (top talkers, traffic patterns) - [ ] Integration with accounting software (QuickBooks, Xero) - [ ] Advanced reporting (custom reports, scheduled exports) - [ ] Customer referral program (instead of affiliates) - [ ] Live chat support integration - [ ] Status page for service health - [ ] Automated security scanning for customer servers - [ ] Backup management interface - [ ] Server snapshots and restoration