Prompt a full-stack admin dashboard: email marketing, booking system, and dynamic CMS — from a single build brief.
The Custom Backend Admin Dashboard Framework is the definitive prompt system for building a full-stack, multi-module admin dashboard from a single build brief. It encodes the exact prompt sequences, module architecture, and quality gates used to generate secure, production-ready admin systems — without writing a single line of boilerplate from scratch.
The framework is organized around four core modules that work independently or as a unified system:
1. Secure Admin Authentication
The framework opens with a credential-injection prompt that instructs the model to scaffold a login page accepting Email and Password, wire it to a session system, and protect all dashboard routes behind an auth gate. The prompt can also instruct the model to ask the user for credentials interactively — making it safe for first-time setup flows.
2. Email Marketing Module
Prompts scaffold a full campaign management interface: compose emails with a rich editor, manage subscriber lists, schedule sends, and view open/click analytics. The framework includes prompts for connecting to transactional email providers and generating the backend API routes that power each action.
3. Booking & Availability Engine
The admin sets available time slots, pricing, and service types from the dashboard. On the frontend, clients see a live calendar, select slots, and complete purchase via Stripe checkout. The framework includes prompts for the availability API, the client-facing booking UI, confirmation emails, and the admin view for managing upcoming appointments.
4. Component-Aware CMS with Drag-and-Drop Images
This is the framework's most powerful module. Before generating the CMS, the framework instructs the model to scan and enumerate every component on every page — navbar, hero, section 2, section 3 ... footer — building a component map. The CMS then exposes each component as an editable slot: text fields, image upload zones, and a drag-and-drop interface for replacing images. Every change is persisted to the database and reflected on the frontend in real time. The prompt stack includes CRUD operations for all content entities, a Safe-to-Publish gate that validates content before it goes live, and a diff view so admins can preview changes before publishing.
The framework closes with a deployment checklist prompt sequence that walks the model through environment variables, database migrations, production build steps, and a final QA pass — ensuring the dashboard is production-ready, not just demo-ready.
Full Access Unlocked
All 64 prompts · All 7 modules
Need expert implementation?
Hire an OrchestratorConnect with a certified Prompt.Doctor Orchestrator to deploy this framework for you.
This is a white-label dashboard you purchase once and integrate into any existing project — or build as a standalone app. Use an AI website builder (such as Airo) to do the heavy lifting. No manual coding required.
Purchase & download the framework
Click the buy button on this page. After checkout, go to the and hit Download .zip. Unzip it — you'll get a .md file (the full framework) and a .pdf (easy to read reference). Keep both open.
Open your project — new or existing
This dashboard is designed to integrate into any existing project or be built as a standalone app. If you already have a site in Airo (or Cursor, Bolt, etc.), open that project. If you're starting fresh, create a new project. The Orchestrator Prompt handles both cases — it scans what's already there and adds only what's missing.
Paste the Orchestrator Prompt into your builder's chat
Open the on this page. Copy the Orchestrator Prompt and paste it into your AI builder's chat. It will scaffold the full admin system — secure login, email marketing module, booking engine, and CMS — on top of your existing codebase. This takes 2–5 minutes.
Add your API keys as secrets
Critical — Novice UsersIn your builder, go to Settings → Secrets and add the keys your app needs. For this framework: STRIPE_SECRET_KEY (for booking payments — get it from your Stripe dashboard), ANTHROPIC_API_KEY (for AI-assisted content — get it from console.anthropic.com), and DATABASE_URL (your MySQL connection string). No key is needed for the admin login, CMS, or email modules — those run on your existing infrastructure.
Don't have a MySQL server?
You can purchase a shared hosting plan with cPanel and MySQL at host.esgwon.dev. Once your account is set up, follow the step-by-step guide to create your database and connect it to your AI website builder.
How to set up cPanel MySQL & connect to your AI website →Need help with Stripe?
Get your STRIPE_SECRET_KEY and STRIPE_PUBLISHABLE_KEY from your Stripe dashboard. The guide covers test keys, webhook setup, and going live.
Need help with Anthropic?
Get your ANTHROPIC_API_KEY from console.anthropic.com. The guide covers model selection, cost management, and troubleshooting.
Prompting Airo after setup — always name the file
When asking Airo to add tables, columns, or features to the admin dashboard, always include src/server/lib/admin-db.ts in your prompt. Without it, Airo may target the wrong database. Example: "Add a bookings table in the admin database (src/server/lib/admin-db.ts) — do not touch any other database connection in this project."
Run the framework prompts inside your live app
Your app is now running in the builder's preview panel. Open the on this page, copy each prompt one at a time, and paste it into your builder's chat. Replace every [BRACKET] with your real data before sending. Work through the stages in order — each stage output feeds the next.
Test end-to-end, then publish or hand off to your client
Walk through the admin as a real user: log in, create a booking, send a test email campaign, update a CMS image, and run the Safe-to-Publish gate. Once everything passes, click Publish in your builder. Because this is a white-label dashboard, your client accesses it at /admin on their own domain — no Prompt.Doctor branding, no third-party login required.
7 modules · 64 prompts · 7 workflow stages
Admin Authentication System
Scaffold a secure login page with email/password fields, session management, and protected route middleware. Includes a credential-injection prompt that can ask the user for credentials interactively on first setup.
8 promptsEmail Marketing Module
Generate a full campaign management interface: rich email composer, subscriber list manager, send scheduler, and open/click analytics dashboard. Includes backend API route prompts for every action.
14 promptsBooking & Availability Engine
Admin sets time slots, pricing, and service types. Client-facing calendar lets users select slots and purchase via Stripe. Includes availability API, confirmation emails, and admin appointment management view.
16 promptsComponent Scanner & Page Map
Instructs the model to scan and enumerate every component on every page — navbar, hero, all sections, footer — building a structured component map that the CMS uses as its content schema.
6 promptsComponent-Aware CMS
Exposes each mapped component as an editable slot with text fields, image upload zones, and drag-and-drop image replacement. All changes persist to the database and reflect on the frontend in real time.
12 promptsCRUD & Safe-to-Publish Gate
Full CRUD scaffolding for all data entities. Safe-to-Publish gate validates content completeness, image dimensions, and broken links before going live. Includes a diff preview so admins see changes before publishing.
5 promptsDeployment & QA Checklist
Walks the model through environment variables, database migrations, production build steps, role-based access validation, and a final QA pass — ensuring the dashboard is production-ready.
3 promptsROLE: Full-stack developer building a secure admin dashboard INPUT: {project_name}, {admin_email}, {admin_password_hash} DATABASE: Use ONLY src/server/lib/admin-db.ts for all database operations. Do NOT modify or reference any other database connection in this project. PROCESS: 1. Scaffold a /admin/login page with Email and Password fields 2. On submit, POST credentials to /api/auth/admin/login 3. Server validates against the admin database (admin-db.ts), issues a signed session cookie (httpOnly, sameSite: strict) 4. All /admin/* routes check for valid session — redirect to /admin/login if missing 5. Logout route at POST /api/auth/admin/logout clears the session cookie CONSOLE LOGGING — add to every API route and middleware: - console.log('[admin-auth] Login attempt:', { email, timestamp: new Date().toISOString() }) - console.log('[admin-auth] DB query result:', { found: !!user, timestamp }) - console.log('[admin-auth] Session created:', { sessionId, email }) - console.error('[admin-auth] ERROR:', error.message, error.stack) - console.log('[admin-middleware] Route check:', { path: req.path, hasSession: !!req.session?.adminId }) CONSTRAINTS: - Never store plaintext passwords — use bcryptjs with salt rounds >= 12 - Session secret must come from environment variable SESSION_SECRET - Login errors must return generic "Invalid credentials" — never reveal which field failed OUTPUT: Login page component, auth middleware, login/logout API routes, session setup
ROLE: Component-aware CMS architect INPUT: {site_url_or_codebase_path} DATABASE: Use ONLY src/server/lib/admin-db.ts for all database operations. Do NOT modify or reference any other database connection in this project. PROCESS: 1. Scan src/pages/ and src/layouts/ — enumerate every page route 2. For each page, identify every visual component in render order: navbar → hero → [section_2] → [section_3] → ... → footer 3. For each component, record: - component_name (e.g. "HeroSection") - file_path (e.g. "src/components/HeroSection.tsx") - editable_fields: text fields, image slots, CTA labels - image_slots: array of { slot_id, current_src, dimensions } 4. Output a structured JSON component_map and persist it to the admin database (admin-db.ts) CONSOLE LOGGING — add to every API route: - console.log('[component-scanner] Scanning page:', { route, timestamp: new Date().toISOString() }) - console.log('[component-scanner] Components found:', { route, count: components.length }) - console.log('[component-scanner] Saved to admin-db:', { pages: pageCount, totalComponents }) - console.error('[component-scanner] ERROR:', error.message, error.stack) QUALITY_GATE: - Every page must have at least navbar and footer mapped - No component may have an undefined image_slot if it renders an <img> OUTPUT_SCHEMA: { "pages": [ { "route": "/", "components": [ { "name": string, "file": string, "editableFields": string[], "imageSlots": { "id": string, "currentSrc": string, "width": number, "height": number }[] } ] } ] }
ROLE: Booking system architect INPUT: {service_types[]}, {admin_timezone}, {slot_duration_minutes}, {stripe_price_id} DATABASE: Use ONLY src/server/lib/admin-db.ts for all database operations. Do NOT modify or reference any other database connection in this project. PROCESS: MODULE: AvailabilityManager - Admin UI: weekly calendar grid, click to toggle slots open/closed - POST /api/admin/availability — save slot configuration to admin-db.ts - GET /api/availability?date={date} — return open slots for client calendar MODULE: ClientBookingFlow - Frontend: date picker → available time slots → service selection → Stripe checkout - POST /api/bookings/create-checkout — create Stripe session with slot metadata - POST /api/bookings/confirm (webhook) — mark slot booked in admin-db.ts, send confirmation email MODULE: AdminBookingView - Table of upcoming bookings: client name, service, time, status - Cancel/reschedule actions with automatic client notification email CONSOLE LOGGING — add to every API route and webhook: - console.log('[availability] Slot query:', { date, slotsFound: slots.length }) - console.log('[booking] Checkout session created:', { sessionId, slotId, service }) - console.log('[booking] Webhook received:', { type: event.type, sessionId }) - console.log('[booking] Slot confirmed in admin-db:', { bookingId, slotId }) - console.error('[booking] ERROR:', error.message, error.stack) CONSTRAINTS: - Booked slots must be locked immediately on checkout session creation (not on payment) - Expired unpaid sessions must release the slot after 15 minutes - All times stored in UTC, displayed in admin_timezone OUTPUT: Availability API, booking API, client calendar component, admin booking table, Stripe webhook handler
system
8 prompts
workflow
29 prompts
architecture
16 prompts
prompts
6 prompts
templates
5 prompts
All 64 prompts across 7 modules are unlocked for your account.
Lifetime access