Appearance
Historical snapshot archived 2026-09-25. This records an earlier review or plan, not current implementation or live ticket state. For current work, follow root AGENTS.md, the relevant BloxClips skill, and owning repository source/tests. Preserve approved decisions as evidence; verify their present authority before acting.
Feature Map
Use this as the first answer to “I need to work on X—where do I start?” Paths are relative to the parent directory.
| Feature | Frontend starting points | Backend starting points | Models / state | Jobs / external services |
|---|---|---|---|---|
| Public marketing | BloxClips-frontend/app/page.tsx, app/components/ | games/services/live routes where used | FeaturedGame, FeaturedService | Whop, Roblox, embeds, Vercel |
| Public case studies | app/campaigns/campaignData.ts, [slug]/page.tsx | None for case-study data | Static TypeScript objects | Roblox/social embeds |
| Login/session | app/login/page.tsx, app/dashboard/layout.tsx | src/api/routes/auth.ts, middleware auth.ts | WebUser, AuthAccount, Ban | Discord/Google OAuth |
| Onboarding/profile | app/onboarding/page.tsx, dashboard/profile/page.tsx | onboarding.ts, users.ts, profile utilities | WebUser, NotificationPreferences | Referral attribution |
| Operational campaigns | dashboard/campaigns, admin campaigns/manage/detail | campaigns.ts, admin campaign handlers, budget utilities | Campaign, Submission | Discord publishing, expiry scheduler (unwired) |
| Video submission | SubmitVideoModal.tsx, dashboard/submit, history | submissions.ts, validation schemas, scrapers | Submission, ViewSnapshot | YouTube, Apify |
| Social ownership | AccountVerificationModal.tsx, profile | verifications.ts, profileBio.ts | LinkedSocialAccount, PendingVerification, VerificationAttempt | YouTube/Apify profile bio |
| Submission review | admin submissions and SubmissionReviewRow.tsx | admin submission handlers, earnings/budget utilities | Submission, Campaign | Notifications, Discord sync |
| Metric tracking | history/admin UI consumes metrics | scheduler.ts, tracking/runTrackingTick.ts, poll scheduler | Submission, ViewSnapshot | YouTube/Apify; scheduler currently unwired |
| Creator stats/leaderboard | dashboard/page.tsx | stats.ts, admin stats/chart | submissions, payouts, ExternalLeaderboardPayment | None beyond DB |
| Payout request | dashboard/payout/page.tsx | payouts.ts, payouts/processRequest.ts, rescrape.ts | Payout, PayoutItem, Submission | in-process worker, social APIs |
| Payout review/send | admin payouts list/detail, TotpModal.tsx | adminPayoutReview.ts, rails/dispatcher.ts, preflight | Payout, PayoutItem, PaymentSystemConfig | Stripe, PayPal, NowPayments, TOTP |
| Payment methods | dashboard/payouts/method | methods.ts, stripe.ts, paypal.ts, usdt.ts | three method models | payment providers |
| Tax compliance | payout tax page, admin tax forms/FTIN/year-end | tax/admin routes, utils/tax, storage, export | TaxForm family, FtinCountryConfig | Tax1099, R2, Resend, timers |
| Affiliates/referrals | dashboard stats/link UI, admin affiliates | referral routes and utils/referrals | Referral, alias, commission, WebUser | frontend-origin rewrite/cookies |
| Notifications | NotificationCenter.tsx, admin announcements | notifications.ts, notification utilities/admin | Announcement, UserNotification, preferences | Resend |
| Website support chat | dashboard/support, SupportScreen.tsx | supportChat.ts, whopSupportChat.ts | WhopIdentity only; Whop owns feeds/messages | Whop Support Channels and embedded ChatElement for clippers and staff |
| Discord support/bot | No direct page | src/index.ts, commands/handlers | Ticket, GuildConfig | Discord |
| Contact leads | /contact, BookCallForm.tsx, Next contact route | parallel contact.ts | ContactAttempt only in backend path | Turnstile, Resend |
| Brand-call booking | /book-call Calendly embed; unused BookCallScheduler.tsx; admin bookings | bookings.ts, adminBookings.ts | BookingRequest/config | Calendly active public; Google/Twilio backend |
| PV tracker | admin PV page | adminPvTracker.ts, utils/pvTracker.ts | JSON state, not Prisma | YouTube, Apify, autosync timer |
| Featured games/services | public components/admin games | games.ts, services.ts, admin mutations | FeaturedGame, FeaturedService | Roblox/site image fetch |
| Whop count | BrandStats.tsx, Next live route | parallel live route | Memory cache only | Whop company API |
| Privacy/GDPR | privacy page/profile controls | gdpr.ts, auth/users | many user-owned rows | export/delete effects |
Feature ownership examples
Submission approval
Frontend owns display, input, confirmation, and refresh. Backend owns administrator authentication, transition validity, acceptance timestamps, budget computation/freezing, notifications/audit, and Discord synchronization. Changing only the UI does not change approval rules.
Campaign eligibility
Backend list responses calculate fields such as canSubmit; frontend filters/disables cards. Submission POST performs its own checks. Because those enforcement sets do not obviously match every campaign toggle, inspect both campaigns.ts and submissions.ts before changing eligibility.
Payout eligibility
Frontend explains balance, tax/method gates, cooldown, and status. Backend preflight and database constraints own minimum amount, open-request uniqueness, method validation, tax requirements, daily caps, rescrape, review, accounting, and dispatch.