Skip to main content

web-admin Application

Administration & Platform Moderation
Application Type: Administrative Interface
Port: 3002
Users: reptidex admins, support staff
Status: Planned
Technology: Next.js 15 + Material UI + @reptidex/ui + @reptidex/core

Purpose & Responsibilities

web-admin provides comprehensive administrative tools for reptidex staff to manage the platform, moderate content, monitor system health, and ensure compliance. It serves as the operational control center for the entire reptidex ecosystem.

Core Features

User & Organization Management

  • User account administration
  • Organization oversight and management
  • Role and permission management
  • Account verification and suspension
  • Bulk user operations

Content Moderation

  • Content review and moderation queue
  • Automated content flagging
  • Community guidelines enforcement
  • Appeal processing and resolution
  • Moderation activity logging

System Monitoring

  • Real-time system health dashboards
  • Performance metrics and alerts
  • Business intelligence and analytics
  • SLA monitoring and reporting
  • Incident management and response

Compliance & Audit

  • GDPR and privacy compliance tools
  • Audit log management and search
  • Regulatory reporting and documentation
  • Data export and deletion workflows
  • Compliance evidence collection

Application Architecture

Technology Stack

Framework & Runtime:
  • Next.js 15 with App Router and Server Components
  • React 18 with concurrent features
  • TypeScript for comprehensive type safety
  • Material UI components via @reptidex/ui
Shared Dependencies:
  • @reptidex/ui: Material UI theme, admin-specific components
  • @reptidex/core: API clients, business logic, state management
Data & State:
  • React Query for server state with real-time updates
  • Zustand for complex admin UI state
  • Advanced data tables with sorting and filtering
  • Real-time notifications and alerts

Application Structure

app/
├── (auth)/                   # Authentication layout group
│   ├── login/               # Admin login
│   └── mfa/                 # Multi-factor authentication
├── dashboard/               # Main admin dashboard
├── users/                   # User management
│   ├── page.tsx            # User list and search
│   ├── [id]/               # User detail pages
│   │   ├── profile/        # User profile management
│   │   ├── activity/       # User activity logs
│   │   ├── permissions/    # Permission management
│   │   └── sanctions/      # Warnings and suspensions
│   └── bulk/               # Bulk user operations
├── organizations/           # Organization management
│   ├── page.tsx            # Organization list
│   ├── [id]/               # Organization details
│   │   ├── overview/       # Organization overview
│   │   ├── members/        # Member management
│   │   ├── billing/        # Billing and subscriptions
│   │   └── settings/       # Organization settings
│   └── verification/       # Organization verification
├── content/                 # Content moderation
│   ├── queue/              # Moderation queue
│   ├── reports/            # User reports
│   ├── appeals/            # Appeal processing
│   ├── guidelines/         # Community guidelines
│   └── automation/         # Automated moderation rules
├── system/                  # System management
│   ├── health/             # System health monitoring
│   ├── performance/        # Performance dashboards
│   ├── alerts/             # System alerts and incidents
│   ├── configuration/      # System configuration
│   └── maintenance/        # Maintenance tools
├── analytics/               # Business intelligence
│   ├── overview/           # High-level metrics
│   ├── users/              # User analytics
│   ├── content/            # Content analytics
│   ├── revenue/            # Revenue and billing
│   └── reports/            # Custom reports
├── compliance/              # Compliance and audit
│   ├── gdpr/               # GDPR management
│   ├── audit-logs/         # Audit log search
│   ├── data-export/        # Data export tools
│   ├── reporting/          # Compliance reporting
│   └── evidence/           # Evidence collection
└── settings/                # Admin settings
    ├── profile/            # Admin profile
    ├── permissions/        # Role management
    ├── notifications/      # Alert preferences
    └── integrations/       # External integrations

Administrative Features

User Management System

User Management Dashboard:
const UserManagementPage = () => {
  const [filters, setFilters] = useState<UserFilters>({
    status: 'all',
    role: 'all',
    registrationDate: null,
    lastActivity: null,
    searchQuery: ''
  });

  const { data: users, isLoading } = useUsers({
    filters,
    pagination: usePagination(),
    sorting: useSorting(['name', 'email', 'createdAt', 'lastActivity'])
  });

  const { mutate: bulkUpdateUsers } = useBulkUpdateUsers();

  return (
    <AdminLayout>
      <UserFilters filters={filters} onChange={setFilters} />
      
      <AdvancedDataTable
        data={users}
        columns={userTableColumns}
        selectable
        onBulkAction={handleBulkAction}
        onRowClick={handleUserClick}
      />
      
      <UserActionPanel 
        selectedUsers={selectedUsers}
        onAction={bulkUpdateUsers}
      />
    </AdminLayout>
  );
};
User Administration Features:
  • Advanced user search and filtering
  • User profile editing and management
  • Account status management (active, suspended, banned)
  • Role and permission assignment
  • Impersonation for support purposes
  • User activity and audit trails

Content Moderation System

Moderation Queue:
const ModerationQueue = () => {
  const { data: queue } = useModerationQueue({
    priority: 'high',
    type: 'all',
    status: 'pending'
  });

  const { mutate: moderateContent } = useModerateContent();

  const handleModeration = (itemId: string, action: ModerationAction) => {
    moderateContent({
      itemId,
      action,
      reason: action.reason,
      notes: action.notes,
      severity: action.severity
    });
  };

  return (
    <ModerationLayout>
      <QueueFilters />
      
      <ModerationGrid>
        {queue?.items.map(item => (
          <ModerationCard
            key={item.id}
            item={item}
            onApprove={() => handleModeration(item.id, { type: 'approve' })}
            onReject={() => handleModeration(item.id, { type: 'reject' })}
            onFlag={() => handleModeration(item.id, { type: 'flag' })}
          />
        ))}
      </ModerationGrid>
      
      <ModerationStats queue={queue} />
    </ModerationLayout>
  );
};
Moderation Features:
  • Automated content flagging and scoring
  • Manual review queue with priority handling
  • Bulk moderation operations
  • Appeal processing and resolution
  • Moderation rule configuration
  • Community guidelines management

System Monitoring Dashboard

System Health Dashboard:
const SystemHealthDashboard = () => {
  const { data: systemHealth } = useSystemHealth({
    refreshInterval: 30000 // 30 seconds
  });

  const { data: metrics } = useSystemMetrics({
    timeRange: '24h',
    granularity: '5m'
  });

  return (
    <MonitoringLayout>
      <Grid container spacing={3}>
        <Grid item xs={12} md={8}>
          <ServiceStatusGrid services={systemHealth.services} />
          <PerformanceCharts metrics={metrics} />
          <ErrorRateChart data={metrics.errors} />
        </Grid>
        
        <Grid item xs={12} md={4}>
          <AlertsPanel alerts={systemHealth.alerts} />
          <IncidentTracker incidents={systemHealth.incidents} />
          <SLAStatusCard sla={systemHealth.sla} />
        </Grid>
      </Grid>
    </MonitoringLayout>
  );
};
Monitoring Features:
  • Real-time service health monitoring
  • Performance metrics and trends
  • Custom alert configuration
  • Incident management and tracking
  • SLA compliance monitoring
  • Business intelligence dashboards

Data Management & Analytics

Business Intelligence

Analytics Dashboard:
const BusinessIntelligenceDashboard = () => {
  const [timeRange, setTimeRange] = useState('30d');
  const { data: analytics } = useBusinessAnalytics({ timeRange });

  return (
    <AnalyticsLayout>
      <MetricsOverview>
        <KPICard
          title="Total Users"
          value={analytics.users.total}
          change={analytics.users.growth}
          trend={analytics.users.trend}
        />
        <KPICard
          title="Active Organizations"
          value={analytics.organizations.active}
          change={analytics.organizations.growth}
          trend={analytics.organizations.trend}
        />
        <KPICard
          title="Monthly Revenue"
          value={analytics.revenue.monthly}
          change={analytics.revenue.growth}
          trend={analytics.revenue.trend}
          format="currency"
        />
        <KPICard
          title="Platform Health"
          value={analytics.system.healthScore}
          change={analytics.system.healthChange}
          trend={analytics.system.healthTrend}
          format="percentage"
        />
      </MetricsOverview>

      <ChartsGrid>
        <UserGrowthChart data={analytics.users.timeline} />
        <RevenueChart data={analytics.revenue.timeline} />
        <GeographicDistribution data={analytics.geography} />
        <FeatureAdoption data={analytics.features} />
      </ChartsGrid>
    </AnalyticsLayout>
  );
};
Analytics Features:
  • User growth and engagement metrics
  • Revenue and billing analytics
  • Content creation and consumption patterns
  • Geographic distribution analysis
  • Feature adoption and usage statistics
  • Custom report generation

Audit & Compliance Tools

Audit Log System:
const AuditLogManager = () => {
  const [filters, setFilters] = useState<AuditFilters>({
    service: 'all',
    eventType: 'all',
    userId: null,
    dateRange: { start: null, end: null },
    searchQuery: ''
  });

  const { data: auditLogs } = useAuditLogs({
    filters,
    pagination: usePagination({ pageSize: 50 })
  });

  const { mutate: exportAuditData } = useExportAuditData();

  return (
    <AuditLayout>
      <AuditFilters filters={filters} onChange={setFilters} />
      
      <AuditLogTable
        logs={auditLogs}
        onRowExpand={handleLogExpand}
        onExport={() => exportAuditData(filters)}
      />
      
      <AuditInsights logs={auditLogs} />
    </AuditLayout>
  );
};
Compliance Features:
  • Comprehensive audit log search and filtering
  • GDPR compliance tools and workflows
  • Data export and deletion management
  • Regulatory reporting automation
  • Evidence collection and documentation
  • Privacy impact assessments

Security & Access Control

Admin Authentication

Multi-Factor Authentication:
const AdminAuthProvider = ({ children }: { children: React.ReactNode }) => {
  const { user, isLoading } = useAuth();
  const { data: adminPermissions } = useAdminPermissions(user?.id);
  const router = useRouter();

  useEffect(() => {
    if (!isLoading && (!user || !adminPermissions?.isAdmin)) {
      router.push('/login');
    }
  }, [user, adminPermissions, isLoading]);

  const requiresElevatedAuth = (action: string) => {
    const sensitiveActions = ['user.delete', 'system.maintenance', 'data.export'];
    return sensitiveActions.includes(action);
  };

  const value = {
    user,
    permissions: adminPermissions,
    requiresElevatedAuth,
    hasPermission: (permission: string) => 
      adminPermissions?.permissions.includes(permission)
  };

  return (
    <AdminAuthContext.Provider value={value}>
      {children}
    </AdminAuthContext.Provider>
  );
};
Security Features:
  • Multi-factor authentication requirement
  • Role-based access control (RBAC)
  • Elevated authentication for sensitive actions
  • Session timeout and automatic logout
  • IP restriction and monitoring
  • Admin action audit logging

Permission Management

Role Management Interface:
const RoleManagement = () => {
  const { data: roles } = useAdminRoles();
  const { data: permissions } = useAvailablePermissions();
  const { mutate: updateRole } = useUpdateRole();

  const handlePermissionChange = (roleId: string, permission: string, granted: boolean) => {
    updateRole({
      roleId,
      permissions: granted 
        ? [...role.permissions, permission]
        : role.permissions.filter(p => p !== permission)
    });
  };

  return (
    <PermissionLayout>
      <RolesList roles={roles} />
      
      <PermissionMatrix
        roles={roles}
        permissions={permissions}
        onPermissionChange={handlePermissionChange}
      />
      
      <RoleAuditLog />
    </PermissionLayout>
  );
};
Permission Categories:
  • User management (view, edit, suspend, delete)
  • Content moderation (review, approve, reject)
  • System administration (config, maintenance, monitoring)
  • Financial operations (billing, refunds, adjustments)
  • Compliance and audit (export, delete, report)

User Interface Design

Administrative Dashboard

Main Dashboard:
const AdminDashboard = () => {
  const { data: overview } = useAdminOverview();
  const { data: alerts } = useSystemAlerts();
  const { data: recentActivity } = useRecentAdminActivity();

  return (
    <DashboardLayout>
      <DashboardHeader>
        <AlertBanner alerts={alerts.critical} />
        <QuickActions />
      </DashboardHeader>

      <Grid container spacing={3}>
        <Grid item xs={12} lg={8}>
          <SystemStatusCard status={overview.system} />
          <RecentActivityFeed activity={recentActivity} />
          <ModerationQueueSummary queue={overview.moderation} />
        </Grid>

        <Grid item xs={12} lg={4}>
          <AlertsPanel alerts={alerts} />
          <PendingTasksCard tasks={overview.pendingTasks} />
          <SystemMetricsCard metrics={overview.metrics} />
        </Grid>
      </Grid>
    </DashboardLayout>
  );
};
Dashboard Features:
  • Critical alert notifications
  • System health overview
  • Pending moderation queue summary
  • Recent administrative activity
  • Quick action shortcuts
  • Key performance indicators

Advanced Data Tables

Advanced Table Component:
const AdminDataTable = <T extends Record<string, any>>({
  data,
  columns,
  actions,
  bulkActions,
  filters,
  onRowClick
}: AdminDataTableProps<T>) => {
  const [selectedRows, setSelectedRows] = useState<string[]>([]);
  const [sortConfig, setSortConfig] = useState<SortConfig>();

  return (
    <TableContainer>
      <TableHeader>
        <TableFilters filters={filters} />
        <BulkActionBar 
          actions={bulkActions}
          selectedCount={selectedRows.length}
          onAction={handleBulkAction}
        />
      </TableHeader>

      <VirtualizedTable
        data={data}
        columns={columns}
        sortConfig={sortConfig}
        selectedRows={selectedRows}
        onSort={setSortConfig}
        onRowSelect={handleRowSelect}
        onRowClick={onRowClick}
      />

      <TablePagination />
    </TableContainer>
  );
};
Table Features:
  • Virtual scrolling for large datasets
  • Advanced filtering and sorting
  • Bulk operations with confirmation
  • Customizable column visibility
  • Export functionality
  • Row-level actions

Performance & Scalability

Optimization Strategies

Performance Features:
  • Virtual scrolling for large datasets
  • Lazy loading of dashboard components
  • Real-time data streaming for monitoring
  • Efficient caching of admin data
  • Background data prefetching
  • Progressive loading of analytics
Caching Strategy:
// Admin-specific React Query config
const adminQueryClient = new QueryClient({
  defaultOptions: {
    queries: {
      staleTime: 2 * 60 * 1000, // 2 minutes for admin data
      gcTime: 10 * 60 * 1000,   // 10 minutes cache
      refetchOnWindowFocus: true, // Always fresh for admin
      retry: (failureCount, error) => {
        // Don't retry auth errors
        if (error.status === 401 || error.status === 403) return false;
        return failureCount < 2;
      },
    },
  },
});

Testing & Quality Assurance

Testing Strategy

Security Testing:
describe('Admin Authentication', () => {
  it('redirects non-admin users', async () => {
    const regularUser = { id: '1', role: 'user' };
    render(<AdminApp />, { user: regularUser });
    
    await waitFor(() => {
      expect(mockRouter.push).toHaveBeenCalledWith('/login');
    });
  });

  it('requires MFA for sensitive actions', async () => {
    const adminUser = { id: '1', role: 'admin', mfaEnabled: true };
    render(<UserDeleteButton userId="target-user" />, { user: adminUser });
    
    await user.click(screen.getByRole('button', { name: 'Delete User' }));
    
    expect(screen.getByText('MFA Required')).toBeInTheDocument();
  });
});
Integration Testing:
  • Admin workflow testing
  • Permission system validation
  • Audit logging verification
  • Data export functionality
  • Moderation workflow testing

Deployment & Infrastructure

Production Deployment

Docker Configuration:
FROM node:18-alpine AS base
WORKDIR /app

# Install dependencies
COPY package.json pnpm-lock.yaml ./
RUN corepack enable pnpm && pnpm install --frozen-lockfile

# Build application
COPY . .
RUN pnpm build

# Production runtime
FROM node:18-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

COPY --from=base /app/public ./public
COPY --from=base --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=base --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs
EXPOSE 3002
ENV PORT 3002
CMD ["node", "server.js"]
Environment Variables:
# API Configuration
NEXT_PUBLIC_API_URL=https://api.reptidex.com
NEXT_PUBLIC_ADMIN_API_URL=https://admin-api.reptidex.com

# Authentication
NEXT_PUBLIC_AUTH_DOMAIN=admin.reptidex.com
NEXTAUTH_URL=https://admin.reptidex.com
NEXTAUTH_SECRET=xxx

# Security
NEXT_PUBLIC_MFA_REQUIRED=true
NEXT_PUBLIC_SESSION_TIMEOUT=3600

# Monitoring
NEXT_PUBLIC_MONITORING_KEY=xxx
NEXT_PUBLIC_ERROR_TRACKING_KEY=xxx

# Feature Flags
NEXT_PUBLIC_ADMIN_FEATURES=full

Monitoring & Observability

Admin-Specific Monitoring

Admin Action Tracking:
const useAdminActionTracking = () => {
  const { user } = useAuth();
  
  const trackAdminAction = (action: string, details: any) => {
    analytics.track('admin_action', {
      adminId: user.id,
      action,
      details,
      timestamp: new Date().toISOString(),
      ipAddress: getClientIP(),
      userAgent: navigator.userAgent
    });
  };

  return { trackAdminAction };
};
Monitoring Features:
  • Admin action tracking and auditing
  • Performance monitoring for admin operations
  • Error tracking with admin context
  • Security event monitoring
  • Compliance activity tracking

web-admin provides comprehensive administrative capabilities while maintaining security, compliance, and operational efficiency for the reptidex platform.