Platform blueprint
Roles, profiles, programs, bookings, payments, favorites, and provider acquisition in one place.
Jump to blueprintReference documentation
Roles, profiles, programs, bookings, payments, favorites, and provider acquisition in one place.
Jump to blueprintDNS, SendGrid, cPanel, and troubleshooting guidance for outbound mail reliability.
Open runbookUse this page as the public-facing technical reference for how BookYoga’s core marketplace objects connect together.
# BookYoga Platform Blueprint
## 1. Roles & Profiles
- **User**: `id`, `email`, `passwordHash` (or SSO ID), `role` enum (STUDENT | TEACHER | SCHOOL | ADMIN), timestamps.
- **StudentProfile**: personal info, experience level, interests.
- **TeacherProfile**: bio, styles, languages, certifications, status (PENDING/APPROVED/etc.), ratings.
- **SchoolProfile**: organization info, branding, contact, approval status.
## 2. Programs & Associations
- **Retreat**: polymorphic owner (Teacher or School), schedule, pricing, capacity, status.
- **TeacherTrainingProgram (YTT)**: linked to SchoolProfile, credential type, hours, modality.
- **ProgramTeacher**: junction linking TeacherProfile to Retreat/YTT with role + associationStatus (INVITED/ACCEPTED/etc.).
- **TeacherInvite**: email-based invites for schools to onboard teachers; stores token and status.
- Ownership invariant: exactly one owner (teacher OR school) per retreat/program; `programType` must match the populated FK.
## 3. Booking & Payments
- **Booking**: studentId, program type (RETREAT/YTT), program FK, status (PENDING_PAYMENT/CONFIRMED/etc.), price.
- **Payment**: provider enum (PAYPAL), PayPal-specific fields (orderId, payerId), amount, status, raw payload. One payment provider entry per booking; orderId unique.
- Flow: create Booking → PayPal order → capture → mark Booking confirmed.
## 4. Registration Flows
- Student: multi-step wizard (account → personal info → preferences).
- Teacher: account → profile (bio, experience, certifications) with optional review.
- School: account → organization details → optional first program draft.
## 5. Program Creation
- Teachers create retreats; schools create retreats or YTT programs via multi-step forms (info, location, pricing, media).
- Attach Teacher step: search existing teacher profiles or invite via email (trigger TeacherInvite flow).
## 6. Dashboards
- Student dashboard: bookings, payments, favourites.
- Teacher dashboard: profile completion, retreats, invitations.
- School dashboard: retreats/YTTs, teacher roster, invite management.
## 6b. Favorites
- **StudentFavorite**: student bookmarks a retreat or YTT; unique per student/program. Mirrors discovery and dashboard favourites UI.
## 7. Discovery UX Principles
- BookYogaRetreats-inspired search (destination/date/budget filters, rich cards).
- Filter panel for level, style, duration, retreat vs YTT.
- Sorting options (price, rating, soonest start).
## 8. Tech Tasks
### Status snapshot (2025-12-09)
- [x] Expand Prisma schema with core entities (users, profiles, programs, bookings, payments, favorites).
- [x] Auth: role-based signup/login with sessions; SSO skeleton (Google/Auth0) and profile seeding; callbacks return `{ user, sessionToken }`.
- [x] Programs: retreats/YTT CRUD + filters; favorites filters; APIs and frontend `/programs` page with filters.
- [x] ProgramTeacher + TeacherInvite scaffolding and services.
- [x] Payments: Stripe adapter with signature verification + webhook e2e; PaymentIntent creation; PayPal stub pending.
- [x] CI: lint/test/build/typecheck wired; API/web builds green; wait-for-api script; e2e job ready.
- [ ] Replace remaining direct Prisma model access with repositories in API modules.
- [ ] Flesh out PayPal flow (create/capture) and webhook handling.
- [ ] Frontend: wire SSO entry points, dashboards data, favorites/program filters in UI.
- [x] Frontend public-route extraction started:
- `/` now also delegates to `apps/web/src/features/home/public-home`
- organizer profiles moved behind `apps/web/src/features/public-profiles`
- public program detail moved behind `apps/web/src/features/programs/public-program-detail`
- neutralized shared location helpers behind `apps/web/src/features/locations/location-utils.ts`
- public discovery, sitemap, and shared-header routes now import location helpers from the canonical feature module instead of an `app/` utility path
- `/programs` listing client and CSS moved behind `apps/web/src/features/programs/public-program-list`
- `/retreats` and `/teacher-trainings` now share a single feature-owned discovery landing implementation
- `/blog`, `/blog/authors`, and `/blog/author/[authorSlug]` now delegate to `apps/web/src/features/blog/public-blog`
- `/blog/categories`, `/blog/tags`, and `/blog/[slug]` now also delegate to the same public blog feature module
- owner blog post routes for schools, teachers, and students now share one feature-owned public article page
- owner tag routes for schools, teachers, and students now also share one feature-owned public tag page
- owner blog index routes for schools, teachers, and students now also share one feature-owned public blog index page
- `/tag/[tagSlug]` and `/blog/category/[categorySlug]` now also delegate to the same public blog feature module
- `/profile`, `/settings`, `/reviews`, `/wishlist`, `/manage/student`, and `/dashboard/student` now delegate to `apps/web/src/features/customer-account`
- `/bookings`, `/messages`, and `/notifications` now also delegate to the same customer-account feature boundary
- `/bookings/[id]` and `/receipts/[bookingId]` now also delegate to that same customer-account feature boundary
- `/checkout/[bookingId]` now also delegates to `apps/web/src/features/checkout/booking-checkout`
- `/login`, `/forgot-password`, and `/reset-password` now delegate to `apps/web/src/features/auth/public-auth`
- `/onboarding` now also delegates to that same public auth feature boundary
- `/classes/confirmation` now delegates to `apps/web/src/features/daily-classes/confirmation`
- `/classes` now also delegates to `apps/web/src/features/daily-classes/timetable`
- `/contact` now also delegates to `apps/web/src/features/support/contact`
- `/locations`, `/locations/[country]`, and `/locations/[country]/[city]` now delegate to `apps/web/src/features/locations/public-locations`
- `/host-program` now also delegates to `apps/web/src/features/partnerships/host-program`
- `/partner` now also delegates to `apps/web/src/features/partnerships/partner`
- `/coming-soon` and `/coming-soon/thank-you` now also delegate to `apps/web/src/features/marketing/coming-soon`
- `/seo/top-2025-yoga-retreats` and `/seo/top-2025-yoga-retreats/[region]` now also delegate to `apps/web/src/features/seo/top-retreats`
- `/seo/guides` and `/seo/guides/[slug]` now also delegate to `apps/web/src/features/seo/guides`
- `/sitemap.xml` now also delegates to `apps/web/src/features/seo/sitemap`
- `/robots.txt` and `/rss.xml` now also delegate to `apps/web/src/features/seo/site-metadata`
- `apps/web/src/lib/bookyogaApi.ts` is now a thin compatibility facade over domain-oriented namespace modules in `apps/web/src/lib/bookyoga-api/*`
- the admin client surface behind `bookyogaApi.admin.*` is now further decomposed by concern under `apps/web/src/lib/bookyoga-api/admin/*`
- the public client surface behind `bookyogaApi.public.*` is now further decomposed by concern under `apps/web/src/lib/bookyoga-api/public/*`
- the editorial client surface behind `bookyogaApi.blog.*` is now further decomposed by concern under `apps/web/src/lib/bookyoga-api/blog/*`
- the school/teacher dashboard client surface behind `bookyogaApi.dashboard.*` is now further decomposed by concern under `apps/web/src/lib/bookyoga-api/dashboard/*`
- the programs client surface behind `bookyogaApi.programs.*` is now further decomposed by concern under `apps/web/src/lib/bookyoga-api/programs/*`
- feature modules that still need paged API results now import the canonical `PagedResult<T>` from `apps/web/src/lib/bookyoga-api/core.ts` instead of redefining it locally
- `apps/web/src/features/blog/public-blog/server/public-blog.server.ts` is now a thin facade over explicit shared, queries, metadata, and structured-data modules instead of one oversized server helper file
- `apps/web/src/features/daily-classes/timetable/daily-classes-page.client.tsx` now delegates its inline types and pure helpers to dedicated `daily-classes.types.ts` and `daily-classes.utils.ts` modules inside the same feature boundary
- `apps/web/src/features/programs/public-program-list/public-program-list.client.tsx` now delegates its inline types and pure filter/formatting helpers to dedicated `public-program-list.types.ts` and `public-program-list.utils.ts` modules inside the same feature boundary
- `apps/web/src/features/programs/public-program-detail/program-detail-page.tsx` now delegates its inline types, pure helpers, and server-side loaders to dedicated `program-detail.types.ts`, `program-detail.utils.ts`, and `program-detail.data.ts` modules inside the same feature boundary
- `apps/web/src/features/customer-account/booking-detail/booking-detail-page.client.tsx` now delegates its inline booking, review, and message types plus pure status/review display helpers to dedicated `booking-detail.types.ts` and `booking-detail.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/receipts/receipt-page.client.tsx` now delegates its inline receipt/session-user types plus pure billing/date/title helpers to dedicated `receipt-page.types.ts` and `receipt-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/bookings/bookings-page.client.tsx` now delegates its inline booking/session/tab types plus pure booking classification, search, expiry, review-eligibility, and sorting helpers to dedicated `bookings-page.types.ts` and `bookings-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/workspace/student-workspace-page.client.tsx` now delegates its inline workspace/session/tab types plus pure booking-derived summary and featured-program pricing helpers to dedicated `student-workspace-page.types.ts` and `student-workspace-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/notifications/notifications-page.client.tsx` now delegates its inline notifications list types plus pure status/timestamp/CTA/snippet helpers to dedicated `notifications-page.types.ts` and `notifications-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/messages/messages-page.client.tsx` now delegates its inline thread/participant response types plus pure inbox search, start-link, timestamp, participant-label, and preview helpers to dedicated `messages-page.types.ts` and `messages-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/wishlist/wishlist-page.client.tsx` now delegates its inline session/favorite/saved-program types plus pure wishlist mapping, uniqueness, pricing, date, location, and stats helpers to dedicated `wishlist-page.types.ts` and `wishlist-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/reviews/reviews-page.client.tsx` now delegates its inline session/booking/review-row types plus pure review eligibility, status-label, and stats helpers to dedicated `reviews-page.types.ts` and `reviews-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/profile/profile-page.client.tsx` now delegates its inline session/booking/profile-stat types plus pure upcoming-booking, location, and account-stat helpers to dedicated `profile-page.types.ts` and `profile-page.utils.ts` modules inside the same customer-account feature boundary
- `apps/web/src/features/customer-account/settings/settings-page.client.tsx` now delegates its inline session/count-response types plus pure unread-count normalization helper to dedicated `settings-page.types.ts` and `settings-page.utils.ts` modules inside the same customer-account feature boundary
- repeated customer-account role/session/student-profile contracts now live in `apps/web/src/features/customer-account/shared/customer-account-session.types.ts`, and the bookings/workspace/profile/reviews/wishlist/settings feature type modules now import that shared contract instead of redefining it locally
- repeated customer-account session bootstrap, student-session checks, student-profile id/name extraction, and unread activity loading now live in `apps/web/src/features/customer-account/shared/customer-account-session.utils.ts`, and the customer-account leaf clients now consume that shared helper instead of reimplementing the same bootstrap flow locally
- repeated customer-account bookings/favorites response normalization and leaf-level data loading now also live in `apps/web/src/features/customer-account/shared/customer-account-data.utils.ts`, and the bookings/workspace/profile/reviews/wishlist clients now consume that shared helper instead of reimplementing small response adapters locally
- repeated customer-account query-string parsing, bounded integer parsing, serialization, and URL replacement now also live in `apps/web/src/features/customer-account/shared/customer-account-query-state.utils.ts`, and the bookings/notifications clients now consume feature-local query-state adapters instead of reimplementing `URLSearchParams` plumbing locally
- the booking-detail feature now also uses that shared customer-account query-state helper for one-time `success` and `review` flag cleanup, so another pocket of direct `window.history.replaceState` usage has been removed from the customer-account feature family
- repeated customer-account activity loading now also lives in `apps/web/src/features/customer-account/shared/customer-account-activity.utils.ts`, and the messages/notifications clients now consume shared loaders instead of wiring raw thread and paged notification requests locally
- repeated customer-account featured-program and wishlist-catalog loading now also lives in `apps/web/src/features/customer-account/shared/customer-account-programs.utils.ts`, and the workspace/wishlist clients now consume shared program loaders instead of wiring raw discovery requests locally
- repeated customer-account booking response normalization and booking-by-id loading now also lives in `apps/web/src/features/customer-account/shared/customer-account-bookings.utils.ts`, and the booking-detail/receipts clients now consume that shared booking loader instead of normalizing `bookings.get(...)` responses locally
- the customer profile and reviews features now each own dedicated `*.data.ts` bootstrap modules, so their multi-step orchestration lives outside the client components without forcing an over-shared account bootstrap abstraction
- the customer wishlist and workspace features now each own dedicated `*.data.ts` bootstrap modules, so their multi-step orchestration lives outside the client components without forcing an over-shared account bootstrap abstraction across unrelated account screens
- the customer messages and notifications features now each own dedicated `*.data.ts` bootstrap modules, so their activity bootstrap orchestration lives outside the client components without forcing a brittle over-shared account bootstrap abstraction across unrelated account screens
- the customer bookings, booking-detail, and receipts features now each own dedicated `*.data.ts` bootstrap modules, so their booking-history orchestration lives outside the client components without forcing a brittle over-shared account bootstrap abstraction across unrelated account screens
- the customer-account shared session seam now also owns optional-session loading and student-session snapshot derivation, so the feature-owned account loaders stop repeating the same session bootstrap and student-profile extraction logic across unrelated account screens
- the customer settings feature now also owns a dedicated `settings-page.data.ts` bootstrap module, so the last remaining account leaf page no longer wires session and unread activity bootstrap directly inside its client component
- the customer-account shared loader seam now also owns user-bearing snapshot assembly plus settled-result fallback/error extraction, so the feature-owned account loaders stop repeating the same result-shaping boilerplate while keeping their domain-specific bootstrap logic local
- the core server-side architecture boundaries are now also explicit Nx projects (`domain`, `infrastructure-prisma`, and `application-diagnostics`) instead of falling back to the generic workspace project, and the root `@nx/enforce-module-boundaries` rule now enforces pragmatic layer tags (`type:e2e`, `type:app`, `type:application`, `type:infrastructure`, `type:domain`, `type:shared`) that match the current dependency graph
- the browser-side API seam is now also a first-class Nx project under `libs/web/api-client`, and `apps/web` now consumes it through `@bookyoga/web-api-client/*` instead of an app-local `src/lib` data-access layer
- the shared browser presentation seam is now also a first-class Nx project under `libs/web/ui`, and `apps/web` now consumes it through `@bookyoga/web-ui/*` instead of an app-local `src/components` shared layer
- the shared browser analytics seam is now also a first-class Nx project under `libs/web/analytics`, and `apps/web` now consumes it through `@bookyoga/web-analytics` instead of an app-local `src/components/analytics` helper
- the public daily-classes feature seam is now also a first-class Nx project under `libs/web/daily-classes`, and `apps/web` now consumes it through `@bookyoga/web-daily-classes/*` instead of an app-local `src/features` boundary
- the public auth feature seam is now also a first-class Nx project under `libs/web/public-auth`, and `apps/web` now consumes it through `@bookyoga/web-public-auth` instead of an app-local `src/features` boundary
- the public content feature seam is now also a first-class Nx project under `libs/web/content`, and `apps/web` now consumes it through `@bookyoga/web-content/*` instead of an app-local `src/features` boundary
- the public partnerships feature seam is now also a first-class Nx project under `libs/web/partnerships`, and `apps/web` now consumes it through `@bookyoga/web-partnerships` instead of an app-local `src/features` boundary
- the public support feature seam is now also a first-class Nx project under `libs/web/support`, and `apps/web` now consumes it through `@bookyoga/web-support` instead of an app-local `src/features` boundary
- the public marketing feature seam is now also a first-class Nx project under `libs/web/marketing`, and `apps/web` now consumes it through `@bookyoga/web-marketing` instead of an app-local `src/features` boundary
- the shared public web helper seam is now also a first-class Nx project under `libs/web/shared`, and both `apps/web` and promoted web feature libraries now consume it through `@bookyoga/web-shared/*` instead of app-local helper paths
- the public home feature seam is now also a first-class Nx project under `libs/web/home`, and `apps/web` now consumes it through `@bookyoga/web-home` instead of app-local `src/features` and `src/components/home` boundaries
- the public SEO feature seam is now also a first-class Nx project under `libs/web/seo`, and `apps/web` now consumes it through `@bookyoga/web-seo` instead of an app-local `src/features` boundary
- the shared client utility cluster (`asyncState`, `status`, `useInterval`, `usePolling`) now also lives in `libs/web/shared`, which gives promoted browser features a stable web-specific utility layer without depending on `apps/web/src/lib`
- `/about`, `/help`, `/faq`, `/privacy`, `/terms`, and `/booking-policy` now also delegate to `apps/web/src/features/content/static-pages`
- `/docs` and `/docs/email-delivery` now also delegate to `apps/web/src/features/content/docs-reference`
- [ ] Promote the next most stable `apps/web/src/features/*` seams into real Nx libs/projects now that browser data-access, shared UI, analytics, and the first promoted web feature seam are all first-class Nx libraries.
- [x] Remove the stale `libs/application/src/booking/booking.service.ts` leftover so booking application logic lives only behind the dedicated `libs/application/booking` Nx project boundary.
- [ ] Add booking/payment flows end-to-end (checkout, status updates).
- [ ] Add more e2e for SSO and payments once secrets are available.
### Tech Tasks
1. Expand Prisma schema with the entities above.
2. Build auth + role-based signup endpoints.
3. Implement program CRUD & publish workflows.
4. Build ProgramTeacher + TeacherInvite APIs.
5. Integrate PayPal create/capture endpoints.
6. Implement dashboards & discovery pages in Next.js.
## 9. Provider Acquisition (Schools/Teachers)
- Target: curate 10–20 reputable schools/teachers per region to seed high-quality retreats/YTTs.
- Value props: yoga-focused discovery (better filters, SEO), clean checkout (deposits/splits optional), roster/invite tools, early featured placement, clear payouts.
- Outreach: personalized emails/DMs with a 15-minute demo offer; include a 1-page or Loom walkthrough and a concrete offer (list 3 upcoming retreats/YTTs, no fees until first bookings, featured placement).
- Public route strategy: `/partner` explains positioning and value; `/host-program` is the structured intake form for property and host submissions.
- Landing page: “Host with us” explaining benefits, fees/payout timing, and a short intake form (dates, pricing, photos, bio) plus a call booking link.
- Content/SEO: publish “Top 2025 Yoga Retreats/YTTs in <Region>” featuring partners; share for reposting.
- Trust: clearly state cancellation/refund handling, payout timelines, data ownership; add testimonials once live.
- Follow-up: 3-touch cadence over ~10 days (intro, value/demo link, final “can I feature your next retreat?”). Communities: post offers in yoga teacher/school groups.
## 10. Operational Next Actions
- Upload travel preferences for Goa retreat concierge.
- Review wellness goal check-ins before mentor calls.
- Add dietary notes so teachers can tailor meal plans.
## 11. Current Architecture Progress
- the public customer-account feature seam used by `/profile`, `/settings`, `/reviews`, `/wishlist`, `/bookings`, `/messages`, `/notifications`, `/receipts/[bookingId]`, `/manage/student`, and `/dashboard/student` now also lives in `libs/web/customer-account` and is imported through `@bookyoga/web-customer-account`, which promotes another stable browser feature boundary into a real Nx project without changing public behavior.
- the shared public blog presentation seam used by the public editorial route family now also lives in `libs/web/blog` and is imported through `@bookyoga/web-blog`, which promotes another stable browser feature boundary into a real Nx project while preserving compatibility shims for old admin/editor component imports.
- the public editorial feature family under `apps/web/src/features/blog/public-blog/*` now also consumes `@bookyoga/web-blog` directly instead of app-local component paths, which makes the public blog dependency flow match the new library boundary while keeping admin/editor compatibility shims in place.
- the public blog route-facing feature and server boundary now also lives in `libs/web/public-blog` and is imported through `@bookyoga/web-public-blog`, which turns the remaining public editorial composition layer into a real Nx project without changing public behavior.
- the public locations guide family used by `/locations`, `/locations/[country]`, and `/locations/[country]/[city]` now also lives in `libs/web/locations` and is imported through `@bookyoga/web-locations`, which promotes another stable browser feature boundary into a real Nx project without changing public behavior.
- the public school and teacher profile surface used by `/public/schools/[slug]` and `/public/teachers/[slug]` now also lives in `libs/web/public-profiles` and is imported through `@bookyoga/web-public-profiles`, which promotes another stable browser feature boundary into a real Nx project without changing public behavior.
- the public programs browse and detail surface used by `/programs`, `/programs/[slug]`, `/public/programs/[slug]`, `/retreats`, and `/teacher-trainings` now also lives in `libs/web/programs` and is imported through `@bookyoga/web-programs`, which promotes another stable browser feature boundary into a real Nx project without changing public behavior.
- the public checkout surface used by `/checkout/[bookingId]` now also lives in `libs/web/checkout` and is imported through `@bookyoga/web-checkout`, which promotes another stable browser feature boundary into a real Nx project without changing public behavior.
- the remaining app-layer browser helper consumers under dashboard surfaces, `/locations`, nav badges, and `proxy.ts` now import directly from `@bookyoga/web-shared/*`, and the obsolete `apps/web/src/lib/{asyncState,comingSoon,seo,status,useInterval,usePolling}.ts` shims have been removed so the shared browser helper layer is the single source of truth.
- the largest remaining admin browser monolith, `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx`, now delegates its contracts and pure calendar/date/time helpers to `apps/web/src/components/admin-portal/daily-classes/*`, which starts the admin-side decomposition without changing runtime behavior or prematurely forcing a new library boundary.
- that same admin daily-classes seam now also owns the console’s form state contracts, reservation/payout/calendar selectors, and recurring-template/exception payload shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces mixed business logic inside the UI component while preserving the existing admin behavior.
- that same admin daily-classes seam now also owns reservation attendance row normalization plus payout transition action-key, scope-label, and payload shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces inline request/normalization logic inside the console while preserving the existing admin behavior, GA events, confirmation prompts, and API contracts.
- the largest remaining API-side admin monolith, `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts`, now delegates its pure string/date/env/payout/attendance/scope helpers to `apps/api/src/app/daily-classes/admin/daily-classes-admin.helpers.ts`, which starts the controller-side decomposition without changing endpoint contracts or repository behavior.
- that same API-side daily-classes seam now also delegates Stripe Connect destination resolution and missing-destination warning generation to `apps/api/src/app/daily-classes/admin/daily-classes-admin-connect.helpers.ts`, which further reduces controller-side infrastructure branching while preserving the existing warning payloads and env-driven routing behavior.
- that same API-side daily-classes connect helper seam now also owns coverage grouping, env+DB mapping merge logic, and mapping response row shaping for the connect coverage/settings endpoints, which further reduces inline aggregation logic inside the controller while preserving the current payload contracts.
- the API-side daily-classes payout seam now also owns payout summary/reconciliation aggregation plus payout transition payload/response shaping in `apps/api/src/app/daily-classes/admin/daily-classes-admin-payout.helpers.ts`, which further reduces inline financial normalization logic inside the controller while preserving the repository write loop and audit behavior.
- the API-side daily-classes notification seam now also owns cancellation/waitlist recipient selection plus outbox row construction in `apps/api/src/app/daily-classes/admin/daily-classes-admin-notification.helpers.ts`, which further reduces inline email payload building inside the controller while preserving repository snapshot fetches and outbox writes.
- the API-side daily-classes scope seam now also owns template/session in-scope lookup plus session cancellation write orchestration in `apps/api/src/app/daily-classes/admin/daily-classes-admin-scope.helpers.ts`, which further reduces controller-local guard flow while preserving the current not-found/forbidden errors and repository behavior.
- the API-side daily-classes attendance seam now also owns reservation attendance validation, bulk reservation-id normalization, attendance note update shaping, and no-show grace-window/selection helpers in `apps/api/src/app/daily-classes/admin/daily-classes-admin-attendance.helpers.ts`, which further reduces inline attendance flow logic inside the controller while preserving the current endpoint contracts, error semantics, repository writes, and audit behavior.
- the API-side daily-classes reservation seam now also owns reservation-in-scope lookup, already-inactive response shaping, cancellation status gating, and successful cancellation response shaping in `apps/api/src/app/daily-classes/admin/daily-classes-admin-reservation.helpers.ts`, which further reduces inline reservation-cancel flow logic inside the controller while preserving the current endpoint contracts, error semantics, transaction writes, and email queueing behavior.
- the API-side daily-classes export seam now also owns reservations CSV header definition, export row shaping, coupon/attendance metadata projection, body assembly, and filename formatting in `apps/api/src/app/daily-classes/admin/daily-classes-admin-export.helpers.ts`, which further reduces inline export formatting logic inside the controller while preserving the current endpoint contracts, session scope enforcement, response headers, and CSV payload shape.
- the API-side daily-classes payout seam now also owns superadmin payout-transition guarding plus month/currency/status/request normalization for transition endpoints in `apps/api/src/app/daily-classes/admin/daily-classes-admin-payout.helpers.ts`, which further reduces inline payout-transition validation logic inside the controller while preserving the current endpoint contracts, validation messages, write loop, and audit behavior.
- the API-side daily-classes connect seam now also owns connect-mapping superadmin guarding, upsert/deactivate request normalization, and connect-mapping response shaping in `apps/api/src/app/daily-classes/admin/daily-classes-admin-connect.helpers.ts`, which further reduces inline connect-mapping validation logic inside the controller while preserving the current endpoint contracts, forbidden/validation messages, repository writes, and audit behavior.
- the API-side daily-classes payout seam now also owns payout-transition counters plus audit target/metadata shaping in `apps/api/src/app/daily-classes/admin/daily-classes-admin-payout.helpers.ts`, which further reduces inline bookkeeping logic inside the controller while preserving the current endpoint contracts, write loop behavior, audit semantics, and response payload shape.
- the admin daily-classes browser seam now also owns optimistic reservation attendance updates plus attendance, bulk-attendance, cancellation, and no-show action-key/message normalization in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces dense inline action logic inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, request contracts, GA events, and prompt flow.
- that same admin daily-classes browser seam now also owns Connect mapping payload validation, action-key formatting, success-message shaping, and reset patch shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces deterministic settings logic inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, request contracts, GA events, and prompt flow.
- that same admin daily-classes browser seam now also owns month-generation and duplicate-week request validation, action-key formatting, and success-message shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces deterministic schedule orchestration logic inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, request contracts, GA events, and loading flow.
- that same admin daily-classes browser seam now also owns template-create, exception-save, and session cancel/reopen action-key formatting plus success-message shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces deterministic admin action orchestration inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, request contracts, warning handling, GA events, and prompt flow.
- that same admin daily-classes browser seam now also owns role-based console copy, month-range validation, filter reset-state shaping, week-range derivation, and reservation export filename shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces deterministic filter/calendar/export orchestration inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, filter semantics, and loading flow.
- that same admin daily-classes browser seam now also owns status-tone normalization and reservation export blob-download orchestration in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces pure presentation/download plumbing inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, status-pill semantics, and browser export flow.
- that same admin daily-classes browser seam now also owns options/templates/sessions/monthly-scope query shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces inline request assembly inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, loader contracts, and loading flow.
- that same admin daily-classes browser seam now also owns options response normalization, template load-state/default-id shaping, generic items fallback normalization, and connect-mapping load-state shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces inline loader result normalization inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, loader contracts, and loading flow.
- that same admin daily-classes browser seam now also owns `401` redirect detection and fallback error-message shaping in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces repeated auth/error plumbing inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, loader/action contracts, login redirect flow, and error message semantics.
- that same admin daily-classes browser seam now also owns session, reservation, payout, no-show, and connect-mapping prompt copy plus reservation cancellation success copy in `apps/web/src/components/admin-portal/daily-classes/*`, which further reduces inline prompt/copy assembly inside `DailyClassesAdminConsole.tsx` while preserving the current admin behavior, prompt flow, and action contracts.
- the main admin API controller now also delegates pending teacher/school audit mapping, pending payload shaping, and admin user-list pagination/filter shaping to `apps/api/src/app/admin/admin-controller.helpers.ts`, which starts decomposing `apps/api/src/app/admin/admin.controller.ts` without changing pending/users endpoint contracts or existing pagination/filter semantics.
- that same main admin API helper seam now also owns webhook list parsing, booking list/export parsing, and admin bookings CSV header shaping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic query/export plumbing inside `apps/api/src/app/admin/admin.controller.ts` while preserving webhook/bookings endpoint contracts and pagination/filter/export semantics.
- that same main admin API helper seam now also owns programs-list parsing, retreat/training `where` shaping, completeness and owner payload mapping, plus in-memory search/ready-only filtering/sorting/pagination in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces read-side list orchestration inside `apps/api/src/app/admin/admin.controller.ts` while preserving the programs-list endpoint contract and filter/search/paging semantics.
- that same main admin API helper seam now also owns disputes-list parsing/`where` shaping plus teachers-list parsing/order shaping and teacher payload mapping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces read-side list orchestration inside `apps/api/src/app/admin/admin.controller.ts` while preserving disputes/teachers endpoint contracts and existing validation/sorting/pagination semantics.
- that same main admin API helper seam now also owns admin user display-id generation plus user-detail payload shaping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic response assembly inside `apps/api/src/app/admin/admin.controller.ts` while preserving the user list/detail endpoint contracts and summary/recent payload semantics.
- that same main admin API helper seam now also owns schools-list pagination/filter parsing, schools-list `where` shaping, school list item payload mapping, and school detail payload shaping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic school read-side response assembly inside `apps/api/src/app/admin/admin.controller.ts` while preserving schools list/detail endpoint contracts and existing list/summary payload semantics.
- that same main admin API helper seam now also owns audit scoped/global query parsing, notification drain/list parsing, and rendered notification payload shaping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic audit/outbox response assembly inside `apps/api/src/app/admin/admin.controller.ts` while preserving audit/notifications endpoint contracts and existing pagination/filter/rendered payload semantics.
- that same main admin API helper seam now also owns teacher detail payload shaping plus teacher create/profile update list item payload mapping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic teacher response assembly inside `apps/api/src/app/admin/admin.controller.ts` while preserving teachers detail/create/profile endpoint contracts and existing stats/list payload semantics.
- that same main admin API helper seam now also owns teacher/school status transition validation plus school/teacher profile patch building and non-empty patch assertions in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic write-path normalization inside `apps/api/src/app/admin/admin.controller.ts` while preserving teacher/school status and profile endpoint contracts plus existing validation/write semantics.
- that same main admin API helper seam now also owns admin email normalization plus teacher/school create payload shaping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic create-flow normalization inside `apps/api/src/app/admin/admin.controller.ts` while preserving school/teacher create endpoint contracts and existing trim/default payload semantics.
- that same main admin API helper seam now also owns status change template/subject selection plus notification payload shaping in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic notification assembly inside `apps/api/src/app/admin/admin.controller.ts` while preserving teacher/school status notification flow and existing outbox payload/subject semantics.
- that same main admin API helper seam now also owns bulk mutation result recording plus password-hash and unique-slug generation helpers in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic create/bulk utility logic inside `apps/api/src/app/admin/admin.controller.ts` while preserving school/teacher create and bulk-status endpoint contracts plus existing slug/error/default semantics.
- that same main admin API helper seam now also owns admin session cookie shaping, request metadata extraction, session token parsing, and date parsing in `apps/api/src/app/admin/admin-controller.helpers.ts`, which further reduces deterministic request/session/date plumbing inside `apps/api/src/app/admin/admin.controller.ts` while preserving impersonation/session cookie flow and existing date validation semantics for admin endpoints.
- the public daily-classes API seam now also delegates pure date normalization, coupon/config parsing, seat calculation, ICS formatting, and web-base/env parsing to `apps/api/src/app/daily-classes/public/daily-classes-public.helpers.ts`, which starts decomposing `apps/api/src/app/daily-classes/daily-classes.public.controller.ts` without changing public reservation/filter/calendar endpoint contracts or existing validation/formatting semantics.
- that same public daily-classes API seam now also delegates reservation/waitlist outbox row construction plus feed/session/reservation ICS document assembly to `apps/api/src/app/daily-classes/public/daily-classes-public.helpers.ts`, which further reduces inline notification and calendar formatting inside `apps/api/src/app/daily-classes/daily-classes.public.controller.ts` while preserving current waitlist/reservation/calendar endpoint contracts and existing outbox subject/payload plus ICS formatting semantics.
- that same public daily-classes API seam now also delegates public sessions/calendar range normalization, scheduled-session `where` shaping, and session item response mapping to `apps/api/src/app/daily-classes/public/daily-classes-public.helpers.ts`, which further reduces repeated timetable query plumbing inside `apps/api/src/app/daily-classes/daily-classes.public.controller.ts` while preserving current sessions/calendar feed endpoint contracts and existing validation/filter/response semantics.
- that same public daily-classes API seam now also delegates session/reservation detail responses, waitlist/reservation status responses, checkout completion/session responses, missing Connect destination payload shaping, and Stripe webhook event reference extraction to `apps/api/src/app/daily-classes/public/daily-classes-public.helpers.ts`, which further reduces inline checkout and webhook normalization inside `apps/api/src/app/daily-classes/daily-classes.public.controller.ts` while preserving current reservation/checkout/webhook endpoint contracts and existing validation, URL, and webhook semantics.
- that same public daily-classes API seam now also delegates DB/env connect-mapping normalization, connect-destination requirement parsing, checkout cancel URL shaping, and Stripe Checkout request assembly to `apps/api/src/app/daily-classes/public/daily-classes-public.helpers.ts`, which further reduces inline connect-routing and request-payload branching inside `apps/api/src/app/daily-classes/daily-classes.public.controller.ts` while preserving current checkout endpoint contracts and existing routing, URL, and Stripe payload semantics.
- the admin daily-classes browser seam now also delegates options/templates/sessions/reservations plus payout/connect loader fetch+normalization to `apps/web/src/components/admin-portal/daily-classes/daily-classes.data.ts`, which further reduces transport/query boilerplate inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current loader contracts, normalization semantics, and role-based connect-mapping behavior.
- that same admin daily-classes browser seam now also delegates template, session, reservation, payout, connect-mapping, and export request execution to `apps/web/src/components/admin-portal/daily-classes/daily-classes.actions.ts`, which further reduces raw mutation/fetch plumbing inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current prompts, busy/success/error handling, GA tracking, and loader refresh behavior.
- that same admin daily-classes browser seam now also delegates the monthly payout summary, payout reconciliation, connect coverage, and connect-mapping settings render tree to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payouts-card.tsx`, which further reduces render-density inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current payout/connect handlers, busy states, and role-based admin rendering behavior.
- that same admin daily-classes browser seam now also delegates the sessions list/calendar render tree to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-card.tsx`, which further reduces render-density inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current session handlers, selection flow, and list/calendar view semantics.
- that same admin daily-classes browser seam now also delegates the reservations table and toolbar render tree to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-card.tsx`, which further reduces render-density inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current reservation handlers, attendance filter semantics, and selected-session behavior.
- that same admin daily-classes browser seam now also delegates the recurring template create form, month-generation/duplicate-week forms, exception form, and template list render tree to `apps/web/src/components/admin-portal/daily-classes/daily-classes-templates-panel.tsx`, which further reduces render-density inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current template/session selection flow, action handlers, and busy-state semantics.
- that same admin daily-classes browser seam now also delegates the heading actions, success/error/connect-warning banners, and filter toolbar render tree to `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-panel.tsx`, which further reduces render-density inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current filter semantics, refresh behavior, and warning display semantics.
- that same admin daily-classes browser seam now also delegates loaded entities, loading-state ownership, refresh methods, and auto-loading effects to `apps/web/src/components/admin-portal/daily-classes/daily-classes.hooks.ts`, which further reduces mixed loader/effect orchestration inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current loader contracts, selected-session refresh flow, and template-id defaulting semantics.
- that same admin daily-classes browser seam now also delegates filter state, selection state, template/generation/exception form state, and month/reset/week-jump helpers to `apps/web/src/components/admin-portal/daily-classes/daily-classes.state.hooks.ts`, which further reduces local state sprawl inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current invalid-month handling, filter reset semantics, and template scheduling selection semantics.
- that same admin daily-classes browser seam now also delegates the template create, month generation, duplicate-week, and exception-save mutation flow to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-actions.hooks.ts`, which further reduces mutation orchestration density inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current GA tracking, refresh behavior, warning handling, and busy-state semantics.
- that same admin daily-classes browser seam now also delegates session cancel/reopen plus reservation export, attendance, cancellation, bulk-attendance, and no-show mutation flow to `apps/web/src/components/admin-portal/daily-classes/daily-classes-session-actions.hooks.ts`, which further reduces operational mutation orchestration inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current prompts, GA tracking, refresh behavior, login redirect behavior, and busy-state semantics.
- that same admin daily-classes browser seam now also delegates payout transition plus Connect mapping save/deactivate mutation flow to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-actions.hooks.ts`, which further reduces payout/settings orchestration inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current prompts, GA tracking, refresh behavior, and busy-state semantics.
- that same admin daily-classes browser seam now also delegates its derived template-selection, reservation-stats, payout-total, pending-currency, calendar-cell, and role-copy view-model logic to `apps/web/src/components/admin-portal/daily-classes/daily-classes-view-model.hooks.ts`, which further reduces mixed derived-state assembly inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current filter semantics, calendar rendering, and payout summary display behavior.
- that same admin daily-classes browser seam now also delegates busy/error/success/Connect-warning state ownership plus login-redirect error normalization to `apps/web/src/components/admin-portal/daily-classes/daily-classes-console-feedback.hooks.ts`, which further reduces local UI-state and auth-error handling inside `apps/web/src/components/admin-portal/DailyClassesAdminConsole.tsx` while preserving current busy-state semantics, warning display behavior, and unauthorized redirect handling.
- the admin shell browser seam now also delegates session bootstrap, unread-count polling, and impersonation restore orchestration to `apps/web/src/components/admin-portal/admin-portal-shell-session.hooks.ts`, which reduces live session/polling logic inside `apps/web/src/components/admin-portal/AdminPortalShell.tsx` while preserving current unread badge behavior, impersonation restore semantics, and session-loading labels.
- that same admin shell browser seam now also delegates nav/icon/config ownership plus collapsed/mobile/menu state, localStorage persistence, and close-on-route/outside-click behavior to `apps/web/src/components/admin-portal/admin-portal-shell.config.tsx` and `apps/web/src/components/admin-portal/admin-portal-shell-ui.hooks.ts`, which reduces layout-state and config sprawl inside `apps/web/src/components/admin-portal/AdminPortalShell.tsx` while preserving current active-nav highlighting, dev-only system links, and sidebar/menu interaction behavior.
- the admin blog API seam now also delegates owner-type parsing, owner checks, optional text/social-link normalization, revision snapshot metadata shaping, snapshot meta readers, and superadmin email-list parsing to `apps/api/src/app/blog/blog-admin.helpers.ts`, which reduces deterministic helper sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current endpoint contracts, revision restore behavior, author update behavior, and notification recipient semantics.
- that same admin blog API seam now also delegates site-base URL normalization plus moderation review/dashboard/public URL builders and email payload shaping to `apps/api/src/app/blog/blog-admin-notification.helpers.ts`, which reduces notification-template sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current recipient resolution, owner slug fallback behavior, and email send flow semantics.
- that same admin blog API seam now also delegates author-list query parsing, grouped author row mapping/sorting/pagination, and school/teacher/student author patch/payload shaping to `apps/api/src/app/blog/blog-admin-author.helpers.ts`, which reduces author-management mapping sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current author sorting/filter semantics, update behavior, and payload shapes.
- that same admin blog API seam now also delegates taxonomy create/list/delete/update flows plus tag merge validation/result shaping to `apps/api/src/app/blog/blog-admin-taxonomy.helpers.ts`, which reduces tag/category management sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current validation semantics and merge result payload shape.
- that same admin blog API seam now also delegates multer upload config, crop/focal-point parsing, image variant generation, OG asset generation, and image-asset input shaping to `apps/api/src/app/blog/blog-admin-image.helpers.ts`, which reduces upload-processing sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current upload validation, variant naming, and asset payload semantics.
- that same admin blog API seam now also delegates posts list filtering, post access guards for get/revisions/restore, revision snapshot input shaping, and revision restore update assembly to `apps/api/src/app/blog/blog-admin-post.helpers.ts`, which reduces post read/restore normalization sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current post ownership/access behavior, ready-to-publish filtering semantics, and revision restore payload semantics.
- that same admin blog API seam now also delegates submit-for-review, approve/reject, and publish/unpublish/archive workflow orchestration to `apps/api/src/app/blog/blog-admin-workflow.helpers.ts`, which reduces post moderation workflow sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current moderation status-transition semantics, notification trigger points, and publish-time owner/header validation behavior.
- that same admin blog API seam now also delegates draft post create/update orchestration plus slug/redirect handling and revision snapshot creation during edits to `apps/api/src/app/blog/blog-admin-editor.helpers.ts`, which reduces editor mutation sprawl inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current owner/role editing semantics, slug uniqueness semantics, and revision/redirect side effects.
- that same admin blog API seam now also delegates superadmin moderation recipient resolution plus review-submission and author moderation-decision notification orchestration to `apps/api/src/app/blog/blog-admin-notification-flow.helpers.ts`, which reduces email-flow orchestration inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current recipient fallback semantics, owner-slug fallback behavior, and email send failure logging behavior.
- the daily-classes admin API seam now also delegates cancelled-session, cancelled-reservation, and waitlist-seat-open notification queue orchestration to `apps/api/src/app/daily-classes/admin/daily-classes-admin-outbox.helpers.ts`, which reduces outbox-write plumbing inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current notification row semantics, recipient selection, and outbox write behavior.
- that same daily-classes admin API seam now also delegates template month-generation and duplicate-week scheduling orchestration plus duplicate-week audit payload shaping to `apps/api/src/app/daily-classes/admin/daily-classes-admin-schedule.helpers.ts`, which reduces schedule-engine sprawl inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current exception handling, session upsert/create behavior, and duplicate-week result semantics.
- that same daily-classes admin API seam now also delegates sessions list query parsing, session update validation/patch assembly, session update response shaping, and reservation row mapping to `apps/api/src/app/daily-classes/admin/daily-classes-admin-session.helpers.ts`, which reduces session read/write normalization sprawl inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current session filter semantics, teacher-scope validation, and reservation payload behavior.
- that same daily-classes admin API seam now also delegates templates list filtering/response mapping, template create validation/input assembly, and template exception validation/upsert/response mapping to `apps/api/src/app/daily-classes/admin/daily-classes-admin-template.helpers.ts`, which reduces template read/write normalization sprawl inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current template date/status validation, connect-warning behavior, and exception payload semantics.
- that same daily-classes admin API seam now also delegates single-reservation attendance, bulk session attendance, and no-show mutation orchestration to `apps/api/src/app/daily-classes/admin/daily-classes-admin-attendance-flow.helpers.ts`, which reduces attendance-operation sprawl inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current attendance validation, audit-log behavior, and returned attendance/no-show payload semantics.
- that same daily-classes admin API seam now also delegates explicit session cancellation plus explicit reservation cancellation, audit logging, and notification queue orchestration to `apps/api/src/app/daily-classes/admin/daily-classes-admin-cancellation-flow.helpers.ts`, which reduces cancellation write-flow plumbing inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current cancellation validation, audit-log behavior, and notification queue side effects.
- that same daily-classes admin API seam now also delegates payout summary, payout reconciliation, and payout Connect coverage month/scope loading to `apps/api/src/app/daily-classes/admin/daily-classes-admin-payout-read.helpers.ts`, which reduces payout read-side orchestration inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current month validation semantics, scope filtering semantics, and payout/connect payload shapes.
- that same daily-classes admin API seam now also delegates settlement and generic payout transition write-loop orchestration plus payout-transition audit writes to `apps/api/src/app/daily-classes/admin/daily-classes-admin-payout-transition.helpers.ts`, which reduces payout write-side orchestration inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current status-transition validation semantics, audit metadata semantics, and payout raw-payload update behavior.
- that same daily-classes admin API seam now also delegates role-aware options loading plus Connect mapping upsert/deactivate orchestration to `apps/api/src/app/daily-classes/admin/daily-classes-admin-options.helpers.ts` and `apps/api/src/app/daily-classes/admin/daily-classes-admin-connect-flow.helpers.ts`, which reduces options/connect mutation plumbing inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current role-scoped option semantics, Connect mapping audit semantics, and response payload shapes.
- that same daily-classes admin API seam now also delegates template list/create/exception upsert orchestration plus session list/update/reservations orchestration and reservation CSV export assembly to `apps/api/src/app/daily-classes/admin/daily-classes-admin-template-flow.helpers.ts`, `apps/api/src/app/daily-classes/admin/daily-classes-admin-session-flow.helpers.ts`, and `apps/api/src/app/daily-classes/admin/daily-classes-admin-export-flow.helpers.ts`, which reduces session/template write and export plumbing inside `apps/api/src/app/daily-classes/daily-classes.admin.controller.ts` while preserving current scope enforcement semantics, Connect warning semantics, cancellation side effects, and CSV payload/header semantics.
- the admin blog API seam now also delegates post list/get/revisions/restore orchestration plus author list/update orchestration to `apps/api/src/app/blog/blog-admin-post-flow.helpers.ts` and `apps/api/src/app/blog/blog-admin-author-flow.helpers.ts`, which reduces read-side and author-management orchestration inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current post access and revision restore semantics, author filter/sort semantics, and author payload shapes.
- the main admin API seam now also delegates booking list/get/export orchestration plus booking expire/cancel/resend/force-confirm and booking-driven program reschedule orchestration to `apps/api/src/app/admin/admin-booking-flow.helpers.ts`, which reduces booking-management orchestration inside `apps/api/src/app/admin/admin.controller.ts` while preserving current booking status guard semantics, CSV export semantics, and audit metadata payload shapes.
- that same main admin API seam now also delegates program list orchestration plus program publish/unpublish/archive/restore and get/update/soft-delete orchestration to `apps/api/src/app/admin/admin-program-flow.helpers.ts`, which reduces program-management orchestration inside `apps/api/src/app/admin/admin.controller.ts` while preserving current program filtering semantics, admin service calls, and audit metadata payload shapes.
- that same main admin API seam now also delegates teacher and school list/create/detail/profile/status/bulk-status orchestration to `apps/api/src/app/admin/admin-teacher-flow.helpers.ts` and `apps/api/src/app/admin/admin-school-flow.helpers.ts`, which reduces school/teacher management sprawl inside `apps/api/src/app/admin/admin.controller.ts` while preserving current slug generation semantics, profile patch validation, status transition rules, audit-log payloads, and status-change notification behavior.
- that same main admin API seam now also delegates webhook log list/replay, payment refund/event replay, and disputes list orchestration to `apps/api/src/app/admin/admin-payments-flow.helpers.ts`, which reduces payments/webhooks/disputes sprawl inside `apps/api/src/app/admin/admin.controller.ts` while preserving current webhook replay validation semantics, dispute filtering behavior, and audit metadata payload shapes.
- that same main admin API seam now also delegates user list/detail/update plus impersonation session/cookie orchestration to `apps/api/src/app/admin/admin-user-flow.helpers.ts`, which reduces user-management sprawl inside `apps/api/src/app/admin/admin.controller.ts` while preserving current detail snapshot behavior, impersonation guard/cookie semantics, and audit metadata payload shapes.
- that same main admin API seam now also delegates audit list plus notification drain/list/render/retry orchestration to `apps/api/src/app/admin/admin-ops-flow.helpers.ts`, which reduces admin audit/outbox operations sprawl inside `apps/api/src/app/admin/admin.controller.ts` while preserving current audit filter semantics, rendered notification payload behavior, and notification retry/drain semantics.
- that same main admin API seam now also delegates pending/summary overview orchestration plus admin audit-log creation and status-change notification side effects to `apps/api/src/app/admin/admin-overview-flow.helpers.ts` and `apps/api/src/app/admin/admin-side-effect-flow.helpers.ts`, which reduces remaining overview and side-effect logic inside `apps/api/src/app/admin/admin.controller.ts` while preserving current pending audit shaping, summary count semantics, admin audit-log payloads, and status-change email/outbox behavior.
- the admin blog API seam now also delegates post create/update plus submit/approve/reject/publish/unpublish/archive orchestration to `apps/api/src/app/blog/blog-admin-post-controller.helpers.ts`, which reduces remaining post moderation/controller flow inside `apps/api/src/app/blog/blog.admin.controller.ts` while preserving current moderation notification semantics, fetched post payload behavior, and existing editor/workflow side effects.
- the admin daily-classes browser seam now also delegates recurring template create, generation/duplicate-week/exception, and template list/table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-card.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-scheduling-card.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-card.tsx`, which reduces remaining templates-panel sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-templates-panel.tsx` while preserving current form state semantics, busy-action behavior, template generation flow, and table payload rendering.
- that same admin daily-classes browser seam now also delegates payout summary/reconciliation rendering plus Connect coverage and mapping-management rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payouts-card.types.ts`, which reduces remaining payouts/connect view sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payouts-card.tsx` while preserving current payout transition behavior, Connect mapping form semantics, busy-action keys, and payout/connect table payload rendering.
- that same admin daily-classes browser seam now also delegates month generation/duplicate-week rendering plus exception editor rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-scheduling-card.types.ts`, which reduces remaining scheduling-card sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-scheduling-card.tsx` while preserving current generation flow behavior, duplicate-week form semantics, exception form behavior, and busy-action keys.
- that same admin daily-classes browser seam now also delegates details/ownership field rendering plus schedule/recurrence/capacity/pricing field rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-details-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-schedule-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-card.types.ts`, which reduces remaining template-create form sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-card.tsx` while preserving current template-create semantics, field normalization behavior, and create-template busy-action flow.
- that same admin daily-classes browser seam now also delegates calendar grid rendering plus list/table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-card.types.ts`, which reduces remaining sessions-card sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-card.tsx` while preserving current session selection behavior, calendar week-jump flow, cancel/reopen actions, and availability row rendering.
- that same admin daily-classes browser seam now also delegates attendance summary/bulk-action toolbar rendering plus reservation table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-toolbar-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-card.types.ts`, which reduces remaining reservations-card sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-card.tsx` while preserving current attendance toggle behavior, cancellation behavior, attendance-filter semantics, and reservation row rendering.
- that same admin daily-classes browser seam now also delegates payout controls/grouped summary rendering plus reconciliation table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-overview-section.tsx` and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-reconciliation-section.tsx`, which reduces remaining payout-summary sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-section.tsx` while preserving current payout transition controls, batch transition semantics, reconciliation status rendering, and payout row actions.
- that same admin daily-classes browser seam now also delegates coverage table rendering plus mapping-management form/table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-coverage-section.tsx` and `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-manager-section.tsx`, which reduces remaining Connect section sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-section.tsx` while preserving current Connect coverage semantics, mapping upsert/deactivate behavior, env-fallback handling, and mapping status rendering.
- that same admin daily-classes browser seam now also delegates heading/alerts/connect-warning rendering plus filter-controls card rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-header-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-filter-controls-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-panel.types.ts`, which reduces remaining filters-panel sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-panel.tsx` while preserving current filter state semantics, warning rendering, month-apply behavior, and scope/status filter behavior.
- that same admin daily-classes browser seam now also delegates payout transition controls rendering plus grouped payout summary table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-overview-controls-section.tsx` and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-table-section.tsx`, which reduces remaining payout-overview sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-overview-section.tsx` while preserving current payout target/note/reference controls, batch transition semantics, row-level payout actions, and summary table rendering.
- that same admin daily-classes browser seam now also delegates mapping form rendering plus mappings table rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-manager-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-form-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-table-section.tsx`, which reduces remaining Connect manager sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-manager-section.tsx` while preserving current mapping upsert semantics, deactivate semantics, env-fallback handling, busy-action keys, and mapping status rendering.
- that same admin daily-classes browser seam now also delegates exception identity/teacher-selection rendering plus override fields/notes rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-basics-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-overrides-section.tsx`, which reduces remaining template-exception sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-section.tsx` while preserving current exception save semantics, busy-action keys, override field behavior, and notes rendering.
- that same admin daily-classes browser seam now also delegates generation template/month controls plus selected-template summary rendering and duplicate-week form rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-controls-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-section.tsx`, which reduces remaining template-generation sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-section.tsx` while preserving current generation semantics, duplicate-week semantics, quick-target behavior, and busy-action keys.
- that same admin daily-classes browser seam now also delegates core class title/style/level rendering plus school-teacher-location-room and weekday selection rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-details-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-basics-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-placement-section.tsx`, which reduces remaining template-details sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-details-section.tsx` while preserving current template field semantics, weekday toggle behavior, superadmin school-selection behavior, and teacher/location rendering.
- that same admin daily-classes browser seam now also delegates time/recurrence/timezone/status rendering plus capacity/price/currency rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-schedule-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-timing-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-pricing-section.tsx`, which reduces remaining template-schedule sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-schedule-section.tsx` while preserving current schedule field semantics, status rendering, capacity/pricing behavior, and currency uppercasing.
- that same admin daily-classes browser seam now also delegates template count/loading header rendering plus template table, empty state, and row action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-card.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-header-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-section.tsx`, which reduces remaining template-list sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-card.tsx` while preserving current template table semantics, empty/loading states, status rendering, and generate/select actions.
- that same admin daily-classes browser seam now also delegates create/scheduling two-card grid composition to `apps/web/src/components/admin-portal/daily-classes/daily-classes-templates-panel.types.ts` and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-editor-grid-section.tsx`, which reduces remaining templates-panel sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-templates-panel.tsx` while preserving current template create semantics, scheduling semantics, list-card behavior, and panel composition.
- that same admin daily-classes browser seam now also delegates loading/empty/body rendering plus per-reservation row rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-body-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-row.tsx`, which reduces remaining reservations-table sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-section.tsx` while preserving current reservation row semantics, attendance/cancel actions, payment rendering, and loading/empty states.
- that same admin daily-classes browser seam now also delegates loading/empty/body rendering plus per-session row rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-body-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-session-row.tsx`, which reduces remaining sessions-list sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-section.tsx` while preserving current session row semantics, availability rendering, cancel/reopen actions, and loading/empty states.
- that same admin daily-classes browser seam now also delegates loading/empty/body rendering plus per-template row rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-body-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-row.tsx`, which reduces remaining template-list-table sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-section.tsx` while preserving current template row semantics, generate/select actions, status rendering, and loading/empty states.
- that same admin daily-classes browser seam now also delegates school/teacher/location/room field rendering plus weekday toggle rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-placement-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-placement-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-weekdays-section.tsx`, which reduces remaining template-placement sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-placement-section.tsx` while preserving current template placement semantics, superadmin school selection, weekday toggle behavior, and teacher/location rendering.
- that same admin daily-classes browser seam now also delegates loading/empty/body rendering plus per-summary-row rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-table-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-table-body-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-row.tsx`, which reduces remaining payout-summary-table sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-table-section.tsx` while preserving current payout summary semantics, stale-row loading behavior, settlement/status rendering, and row-level transition actions.
- that same admin daily-classes browser seam now also delegates heading/month rendering plus superadmin transition control rendering and role-aware scope note rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-overview-controls-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-header-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-transition-controls-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-scope-note-section.tsx`, which reduces remaining payout-overview-controls sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-overview-controls-section.tsx` while preserving current payout target/note/reference semantics, batch transition actions, and role-aware layout/copy ordering.
- that same admin daily-classes browser seam now also delegates month/date control rendering plus status/scope select rendering and options summary rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-filter-controls-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-date-filter-controls-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-scope-filter-controls-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-filter-options-summary-section.tsx`, which reduces remaining filter-controls sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-filter-controls-section.tsx` while preserving current month/date/status/scope filter semantics, superadmin school filter behavior, and options summary rendering.
- that same admin daily-classes browser seam now also delegates template/source/target field rendering plus quick-target offset rendering and duplicate action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-fields-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-quick-target-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-actions-section.tsx`, which reduces remaining duplicate-week sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-section.tsx` while preserving current duplicate-week layout semantics, quick-target behavior, and busy-action handling.
- that same admin daily-classes browser seam now also delegates override field rendering plus notes rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-overrides-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-override-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-notes-section.tsx`, which reduces remaining exception-overrides sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-overrides-section.tsx` while preserving current exception override semantics, notes behavior, and the parent form submit boundary.
- that same admin daily-classes browser seam now also delegates reconciliation summary/totals rendering plus per-row table-body rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-reconciliation-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-reconciliation-summary-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-reconciliation-table-body-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-reconciliation-row.tsx`, which reduces remaining payout-reconciliation sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-reconciliation-section.tsx` while preserving current reconciliation totals, aging/status rendering, and row-level diagnostic copy.
- that same admin daily-classes browser seam now also delegates explanatory summary rendering plus calendar grid rendering and per-day cell rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-summary-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-grid-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-cell.tsx`, which reduces remaining sessions-calendar sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-section.tsx` while preserving current week-jump semantics, list-view jump behavior, and calendar session-pill rendering.
- that same admin daily-classes browser seam now also delegates session/attendance summary rendering plus bulk-action/filter control rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-toolbar-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-summary-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-actions-section.tsx`, which reduces remaining reservations-toolbar sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-toolbar-section.tsx` while preserving current export/bulk-attendance/no-show/refresh semantics and attendee-filter behavior.
- that same admin daily-classes browser seam now also delegates session detail/status cell rendering plus row action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-session-row.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-session-details-cells.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-session-actions-cell.tsx`, which reduces remaining session-row sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-session-row.tsx` while preserving current seat-open/status rendering and cancel/reopen/reservations actions.
- that same admin daily-classes browser seam now also delegates reservation detail/status/payment/attendance cell rendering plus row action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-row.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-details-cells.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-actions-cell.tsx`, which reduces remaining reservation-row sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-row.tsx` while preserving current payment/status rendering and check-in/cancel reservation actions.
- that same admin daily-classes browser seam now also delegates start/end/timezone field rendering plus recurrence/status field rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-timing-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-time-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-recurrence-section.tsx`, which reduces remaining template-timing sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-timing-section.tsx` while preserving current template timing, recurrence, and status semantics.
- that same admin daily-classes browser seam now also delegates override timing/capacity field rendering plus override location/room/price field rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-override-fields-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-override-timing-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-override-location-pricing-section.tsx`, which reduces remaining exception-override-fields sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-override-fields-section.tsx` while preserving current exception override timing, location, and pricing semantics.
- that same admin daily-classes browser seam now also delegates template selection rendering plus date/type field rendering and override-teacher field rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-basics-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-template-field.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-date-type-fields.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-teacher-field.tsx`, which reduces remaining exception-basics sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-exception-basics-section.tsx` while preserving current exception template/date/type/teacher semantics.
- that same admin daily-classes browser seam now also delegates school/teacher assignment rendering plus location/room venue rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-placement-fields-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-assignment-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-venue-fields-section.tsx`, which reduces remaining template-placement-fields sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-placement-fields-section.tsx` while preserving current template school/teacher/location/room semantics.
- that same admin daily-classes browser seam now also delegates session/template status filter rendering plus school/teacher/template owner filter rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-scope-filter-controls-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-status-filter-controls-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-owner-template-filter-controls-section.tsx`, which reduces remaining scope-filter-controls sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-scope-filter-controls-section.tsx` while preserving current session/template/school/teacher filter semantics.
- that same admin daily-classes browser seam now also delegates target/note/reference control rendering plus per-currency batch transition action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-transition-controls-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-transition-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-transition-batch-actions-section.tsx`, which reduces remaining payout-transition-controls sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-transition-controls-section.tsx` while preserving current payout target/note/reference and batch-transition semantics.
- that same admin daily-classes browser seam now also delegates loading/empty-aware table body rendering plus per-mapping row rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-table-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-table-body-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mapping-row.tsx`, which reduces remaining connect-mappings-table sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-table-section.tsx` while preserving current connect mapping loading/empty behavior and deactivate-action semantics.
- that same admin daily-classes browser seam now also delegates bulk/export/refresh action rendering plus attendee filter rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-actions-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-action-buttons-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-attendance-filter-section.tsx`, which reduces remaining reservations-actions sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-actions-section.tsx` while preserving current reservation export, attendance, no-show, refresh, and attendee-filter semantics.
- that same admin daily-classes browser seam now also delegates heading/count/view-toggle rendering plus calendar-vs-list active view selection to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-header-section.tsx` and `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-active-view-section.tsx`, which reduces remaining sessions-card wrapper sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-card.tsx` while preserving current sessions count copy, view-toggle semantics, and list/calendar routing behavior.
- that same admin daily-classes browser seam now also delegates explanatory/loading/empty-state rendering plus loading/empty-aware table-shell rendering and per-coverage-row rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-coverage-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-coverage-summary-section.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-coverage-table-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-coverage-row.tsx`, which reduces remaining connect-coverage sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-coverage-section.tsx` while preserving current connect-coverage copy, loading/empty semantics, and row status rendering.
- that same admin daily-classes browser seam now also delegates template detail/schedule/status cell rendering plus row action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-row.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-details-cells.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-actions-cell.tsx`, which reduces remaining template-row sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-row.tsx` while preserving current template detail/schedule copy, status rendering, and select/generate action semantics.
- that same admin daily-classes browser seam now also delegates scope selector/scope-id field rendering plus destination-account/notes/submit rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-form-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mapping-scope-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mapping-details-section.tsx`, which reduces remaining connect-mappings-form sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-connect-mappings-form-section.tsx` while preserving current connect-mapping scope, destination, notes, and save-action semantics.
- that same admin daily-classes browser seam now also delegates template field rendering plus source/target week field rendering and quick-target rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-fields-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-template-field-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-date-fields-section.tsx`, which reduces remaining duplicate-week-fields sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-duplicate-week-fields-section.tsx` while preserving current duplicate-week template selection, source/target date, and quick-target semantics.
- that same admin daily-classes browser seam now also delegates template/month field rendering plus generate-action and selected-template summary rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-controls-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-fields-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-action-section.tsx`, which reduces remaining template-generation-controls sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-generation-controls-section.tsx` while preserving current template-generation selection, month input, generate-action, and selected-template summary semantics.
- that same admin daily-classes browser seam now also delegates export/refresh button rendering plus bulk-attendance and no-show button rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-action-buttons-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-export-refresh-buttons-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-bulk-attendance-buttons-section.tsx`, which reduces remaining reservations-action-buttons sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-action-buttons-section.tsx` while preserving current reservation export, bulk-attendance, no-show, and refresh action semantics.
- that same admin daily-classes browser seam now also delegates day/week-jump header rendering plus session-count and session-pill rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-cell.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-cell-header.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-cell-sessions.tsx`, which reduces remaining sessions-calendar-cell sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-calendar-cell.tsx` while preserving current week-jump, session-pill, list-switch, and overflow-count semantics.
- that same admin daily-classes browser seam now also delegates title/subtitle and clear/refresh action rendering plus feedback-banner and connect-warning rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-header-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-heading-actions-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-feedback-section.tsx`, which reduces remaining filters-header sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-filters-header-section.tsx` while preserving current heading copy, clear/refresh actions, feedback banners, and connect-warning semantics.
- that same admin daily-classes browser seam now also delegates loading/empty-state row rendering plus mapped session-row body rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-body-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-state-row-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-rows-section.tsx`, which reduces remaining sessions-list-body sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-sessions-list-body-section.tsx` while preserving current sessions-list loading/empty copy and session-row action/status semantics.
- that same admin daily-classes browser seam now also delegates payout detail/status cell rendering plus payout transition action rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-row.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-details-cells.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-actions-cell.tsx`, which reduces remaining payout-summary-row sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-payout-summary-row.tsx` while preserving current payout row copy, status rendering, and transition action semantics.
- that same admin daily-classes browser seam now also delegates loading/empty-state row rendering plus mapped template-row body rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-body-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-state-row-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-rows-section.tsx`, which reduces remaining template-list-table-body sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-list-table-body-section.tsx` while preserving current template-list loading/empty copy and template-row action/status semantics.
- that same admin daily-classes browser seam now also delegates loading/empty-state row rendering plus mapped reservation-row body rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-body-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-state-row-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-rows-section.tsx`, which reduces remaining reservations-table-body sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservations-table-body-section.tsx` while preserving current reservations-table loading/empty copy and reservation-row action/status semantics.
- that same admin daily-classes browser seam now also delegates attendee/status cell rendering plus payment/attendance cell rendering and timestamp cell rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-details-cells.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-attendee-cells.tsx`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-payment-attendance-cells.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-timestamp-cells.tsx`, which reduces remaining reservation-details-cells sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-reservation-details-cells.tsx` while preserving current reservation row copy, payment status rendering, attendance state rendering, and timestamp semantics.
- that same admin daily-classes browser seam now also delegates template title field rendering plus style/level field rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-basics-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-title-field-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-style-level-fields-section.tsx`, which reduces remaining template-create-basics sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-basics-section.tsx` while preserving current template title, style, level, and level-option semantics.
- that same admin daily-classes browser seam now also delegates superadmin school filter rendering plus teacher/template filter rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-owner-template-filter-controls-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-school-filter-field-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-teacher-template-filter-fields-section.tsx`, which reduces remaining owner-template-filter-controls sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-owner-template-filter-controls-section.tsx` while preserving current school, teacher, and template filter semantics.
- that same admin daily-classes browser seam now also delegates superadmin school assignment rendering plus teacher assignment rendering to `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-assignment-fields-section.types.ts`, `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-school-assignment-field-section.tsx`, and `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-teacher-assignment-field-section.tsx`, which reduces remaining template-create-assignment-fields sprawl inside `apps/web/src/components/admin-portal/daily-classes/daily-classes-template-create-assignment-fields-section.tsx` while preserving current school and teacher assignment semantics.