How golamrabbi696/clipchopper works
1. Purpose and Deployment Shape
ClipChopper is a video-editing agency platform: public lead/booking acquisition, client production portal, admin operations, invoicing/payments, and support. It is a decoupled Astro frontend plus Laravel REST API, with generated frontend assets deployed under the backend public root for shared-hosting use.
• frontend/src/pages/index.astro
• backend/routes/api.php
• backend/public/install.php
2. Entry Points and Runtimes
Astro 5 provides static/SPA pages for public, client, invoice, and admin experiences. Laravel 11 is the API and server-side workflow runtime; its HTTP entry is public/index.php, CLI entry is Artisan, and scheduled reminders are a console command.
• frontend/src/pages/dashboard.astro
• backend/public/index.php
• backend/artisan
• backend/app/Console/Commands/SendBookingsReminders.php
3. API, Authentication, and Access Boundaries
routes/api.php is the main contract boundary between frontend and backend. JWT bearer authentication separates public routes from client portal routes; admin and superadmin middleware further restrict operational and platform-administration endpoints. Controllers are grouped by public, client, and admin concerns.
• backend/routes/api.php
• backend/app/Http/Middleware/AdminMiddleware.php
• backend/app/Http/Middleware/SuperAdminMiddleware.php
4. Booking-to-Client Production Flow
Public booking submission validates input, persists bookings, and can create client accounts. Booking status changes, meeting-link assignment, completion, and due reminders publish domain events that drive notifications. Bookings, users, leads, reminders, invoices, and deliverables form the central production record set.
• backend/app/Http/Controllers/PublicBookingController.php
• backend/app/Models/Booking.php
• backend/app/Events/BookingSubmitted.php
• backend/app/Listeners/SendBookingSubmittedMail.php
5. Client Portal and Operational Workflows
The client dashboard aggregates sessions, invoices, deliverables, profile data, and ticket conversations. Admin controllers manage the same production lifecycle: client accounts, bookings, deliverable uploads/feedback, invoice creation, and ticket status/replies. This is an API-driven portal rather than server-rendered Laravel UI.
• backend/app/Http/Controllers/Client/DashboardController.php
• backend/app/Http/Controllers/TicketController.php
• backend/app/Http/Controllers/Admin/DeliverableController.php
• backend/app/Models/ContentDeliverable.php
6. Payments, Mail, and External Notifications
Stripe Checkout is used for public invoice payment and webhook-driven payment processing. Configurable SMTP and templates support transactional mail; events/listeners encapsulate booking lifecycle delivery. Optional webhook settings and notifier service provide Discord/Telegram-style operational notifications.
• backend/app/Http/Controllers/StripeController.php
• backend/app/Services/DynamicMailerService.php
• backend/app/Services/WebhookNotifier.php
• backend/app/Models/Invoice.php
7. Persistence, Storage, and Administration
Eloquent models map a relational MySQL/MariaDB/SQLite schema, including Laravel cache/jobs tables. Public storage serves avatars and uploaded assets; private storage is reserved separately. Superadmin operations include backup/restore, cache/storage management, mail settings, and audit/email logs.
• backend/database/migrations/0001_01_01_000002_create_jobs_table.php
• backend/app/Http/Controllers/Admin/BackupController.php
• backend/app/Http/Controllers/Admin/MailSettingController.php
• backend/storage/app/private/.gitignore
Components 17
Astro frontend
- Public booking UI
frontend/src/pages/index.astro - Client and admin UI · Static/SPA portal experiences.
frontend/src/pages/dashboard.astro
Laravel API
- REST API contract · Public, client, admin, and superadmin endpoints.
backend/routes/api.php - Laravel HTTP runtime
backend/public/index.php - JWT and role access · Bearer auth plus admin and superadmin boundaries.
backend/app/Http/Middleware/AdminMiddleware.php - Shared-hosting installer · Frontend assets are deployed under the backend public root.
backend/public/install.php
Production workflows
- Booking intake · Validates submissions and may create client accounts.
backend/app/Http/Controllers/PublicBookingController.php - Client portal API · Aggregates sessions, invoices, deliverables, profile, and tickets.
backend/app/Http/Controllers/Client/DashboardController.php - Admin production operations · Manages clients, bookings, deliverables, invoices, and support.
backend/app/Http/Controllers/Admin/DeliverableController.php - Booking lifecycle events · Status, meeting, completion, and reminder notifications.
backend/app/Events/BookingSubmitted.php - Booking reminders · Scheduled due-reminder workflow.
backend/app/Console/Commands/SendBookingsReminders.php
External delivery
- Stripe payments · Checkout and webhook-driven invoice payment processing.
backend/app/Http/Controllers/StripeController.php - Transactional mail · Configurable SMTP and mail templates.
backend/app/Services/DynamicMailerService.php - Operational notifications · Optional Discord/Telegram-style delivery.
backend/app/Services/WebhookNotifier.php
Data and storage
- Production records · Bookings, users, leads, reminders, invoices, and deliverables.
backend/app/Models/Booking.php - Relational database · Also holds Laravel cache and jobs tables.
backend/database/migrations/0001_01_01_000002_create_jobs_table.php - Upload storage · Public assets and separately reserved private files.
backend/storage/app/private/.gitignore
Connections 19
- Public booking UI → REST API contract: booking requests
- Client and admin UI → REST API contract: portal API calls
- Laravel HTTP runtime → REST API contract: serves
- REST API contract → JWT and role access: protects portal routes
- REST API contract → Booking intake: public booking
- REST API contract → Client portal API: client endpoints
- REST API contract → Admin production operations: admin endpoints
- Booking intake → Production records: creates booking/client
- Admin production operations → Production records: manages lifecycle
- Client portal API → Production records: reads portal data
- Production records → Relational database: persists
- Booking intake → Booking lifecycle events: publishes
- Booking reminders → Booking lifecycle events: triggers reminders
- Booking lifecycle events → Transactional mail: sends lifecycle mail
- Booking lifecycle events → Operational notifications: sends optional alerts
- REST API contract → Stripe payments: checkout and webhooks
- Stripe payments → Production records: updates invoices
- Admin production operations → Upload storage: uploads deliverables
- Shared-hosting installer → Laravel HTTP runtime: installs deployment