Codapult
TarifsPluginsBlogDocsDémo

Le boilerplate SaaS pour les créateurs

© 2026 Codapult. Tous droits réservés.

Built with Codapult

Projet

  • Tarifs
  • Plugins
  • Documentation
  • Comparaison de templates SaaS

À propos

  • Contact

Mentions légales

  • Politique de confidentialité
  • Conditions d'utilisation
Tous les articles

Getting Started

  • Introduction
  • Quick Start
  • Project Structure
  • License and Permitted Use

Configuration

  • Environment Variables
  • App Configuration

Authentication

  • Authentication
  • OAuth Providers
  • Two-Factor & Passwordless
  • Enterprise SSO (SAML)

Database

  • Database
  • Migrations

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Payments

  • Payments & Billing
  • Stripe Setup
  • LemonSqueezy Setup
  • Polar Setup
  • Payment Webhooks

Api

  • API Layer
  • tRPC
  • GraphQL

Ai

  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

Email

  • Email
  • Email Templates

Infrastructure

  • Infrastructure
  • Self-Hosting
  • File Storage
  • Docker
  • Background Jobs
  • Terraform & Pulumi
  • Kubernetes

Ui

  • UI & Theming

I18n

  • Internationalization

Content Management

  • Content Management

Admin

  • Admin Panel

Security

  • Security

Monitoring

  • Analytics & Monitoring

Modules

  • Module Architecture
  • Waitlist
  • Audit Log
  • White-Labeling
  • Workflow Automation
  • A/B Testing
  • Welcome Page
  • Referrals
  • GDPR Export and Deletion
  • Outgoing Webhooks

Plugins

  • Plugin System
  • AI Kit Plugin
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Deployment

  • Deployment
  • Troubleshooting

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
Admin

Admin Panel

Manage users, subscriptions, feature flags, SSO, experiments, and more from the built-in admin dashboard.

The admin panel lives at /admin (implemented under src/app/[locale]/admin/) and is restricted to users whose session.user.role is "admin". It provides a central place to manage users, billing, experiments, and operational settings without touching the database directly.

Navigation items for the admin panel are configured in src/config/navigation.ts.


Features

FeatureDescription
User managementList all users, change roles, delete accounts
Subscription managementView active subscriptions and plan details
Feature flagsToggle features per user, per organization, or globally
WebhooksOutgoing webhook delivery log with retry status
Enterprise SSOSAML connection management (via BoxyHQ Jackson)
PerformanceCore Web Vitals dashboard (LCP, INP, CLS, FCP, TTFB)
A/B TestingExperiment management with weighted variants and conversion tracking
Email domainsCustom sending domain management (via Resend Domains API)
WaitlistManage waitlist signups and send invitations
Activity logAudit trail of admin actions
Drip campaignsAutomated email sequences triggered by user events
Background jobsRegistered job handlers, cron schedules, queue stats
Multi-region databaseTurso group/replica status and regional operations

Pages and Components

RouteComponentPurpose
/adminsrc/app/[locale]/admin/page.tsxAdmin overview and KPIs
/admin/usersUsersTableUser list, roles, deletion, export
/admin/subscriptionsSubscriptionsTableSubscription and billing state
/admin/feature-flagsFeatureFlagsManagerGlobal, org, and user flag controls
/admin/webhooksWebhookDeliveriesTableDelivery history and retries
/admin/ssoSSOManagerSAML connection management
/admin/performancePerformanceDashboardCore Web Vitals and performance metrics
/admin/experimentsExperimentManagerA/B experiments and variants
/admin/email-domainsEmailDomainManagerResend sending domain setup
/admin/waitlistWaitlistTableWaitlist signups and invitations
/admin/activityAdmin activity pageInternal admin action trail
/admin/jobsJobDashboardBackground jobs and cron status
/admin/multi-regionMultiRegionManagerTurso multi-region controls
/admin/drip-campaignsDripCampaignManagerAutomated email sequences

Access Control

Every admin route checks the session before rendering:

import { getAppSession } from '@/lib/auth';
import { redirect } from 'next/navigation';

const session = await getAppSession();
if (!session || session.user.role !== 'admin') {
  redirect('/');
}

Non-admin users who navigate to /admin are redirected away automatically.


Server Actions

Admin mutations are handled by server actions in src/lib/actions/admin.ts. Each action validates the caller's role before proceeding.

changeUserRole

Changes a user's role (e.g. "user" → "admin" or vice versa).

import { changeUserRole } from '@/lib/actions/admin';

await changeUserRole({ userId: 'usr_abc123', role: 'admin' });

deleteUser

Permanently deletes a user account and all associated data.

import { deleteUser } from '@/lib/actions/admin';

await deleteUser({ userId: 'usr_abc123' });

Both actions are protected with requireAuth() and an admin role check. Input is validated with Zod schemas from src/lib/validation.ts.


A/B Testing

The experiment framework in src/lib/experiments/ lets you run A/B tests with:

  • Weighted variants — assign traffic percentages to each variant
  • Conversion tracking — measure which variant performs better
  • Experiment lifecycle — create, start, pause, and conclude experiments

Manage all experiments from the admin panel under the A/B Testing section.


Feature Flags

Feature flags support three scoping levels:

ScopeDescription
GlobalAffects all users
OrganizationAffects all members of a specific organization
UserAffects a single user

Toggle flags from the admin UI. Check them in code with the utilities in src/lib/feature-flags.ts:

import { isFeatureEnabled } from '@/lib/feature-flags';

const enabled = await isFeatureEnabled('new-dashboard', { userId, orgId });

Adding Admin Pages

To add a new section to the admin panel:

  1. Create a page at src/app/[locale]/admin/<section>/page.tsx
  2. Add a navigation entry in src/config/navigation.ts
  3. Check session.user.role === 'admin' in the page component

Next Steps

  • Security — auth guards, rate limiting, and input validation
  • Environment Variables — configure SSO, email, and analytics providers
  • Customization — branding and white-label settings
Content ManagementSecurity