zen-server

byUmang Suthar

crete an app to track my server logs at one places with alerting system

LandingAlertsLoginUsersProfileSupervisorLogDetailLogsAnalyticsDashboardSettings
Landing

Comments (0)

No comments yet. Be the first!

Project Tasks76

#1

Implement LoginNavbar for Login

To Do

As a frontend developer, implement the LoginNavbar section for the Login page. This reuses the shared Navbar component (likely already created from prior pages) located at '../styles/Navbar.css'. The component uses useState to manage mobile menu open/close state (open boolean), with a NAV_LINKS array of 7 routes (Dashboard, Analytics, Alerts, Logs, Users, Supervisor, Settings). Renders a header with nv-root/nv-inner classes, an Activity icon brand mark with 'zen-server' + 'Log Intelligence' sub-text, a desktop nv-links ul mapping NAV_LINKS, and an nv-actions div containing a LogIn icon CTA pointing to /Login. A burger button (nv-burger) toggles between Menu and X icons via aria-expanded, and a mobile drawer (nv-mobile / nv-open) renders each nav link with ChevronRight icons plus a mobile CTA. Verify component is shared/reusable across pages and not duplicated.

AI 90%
Human 10%
Medium Priority
0.5 days
Frontend Developer
#37

Implement LogsHeader for Logs

To Do

As a frontend developer, implement the LogsHeader section for the Logs page. Build the `lh-root` section with a two-column top row: left side shows page title 'Logs' (`lh-page-title`) and animated count badge (`lh-count`) with `lh-count-dot` and 1,423 entries. Right side is `lh-actions` container with a `useRef` (`actionsRef`) tracking `onMouseMove` events feeding `useMotionValue` (mouseX, mouseY) and `useSpring` (stiffness:120, damping:20) for a `motion.div` radial gradient glow effect (`lh-glow-track`) that follows the cursor. Implement Refresh button with `RefreshCw` icon that sets `refreshing` state true for 800ms via `setTimeout`, applying `lh-spin` class and CSS `lh-spin-keyframes` animation. Implement export dropdown (`lh-export-wrap`) toggled by `exportOpen` state, rendering CSV/JSON/TSV options with FileText, FileJson, Table2 icons via `handleExport(format)`. View mode toggle between 'table' (Table2) and 'list' (List) icons via `handleViewChange` setting `viewMode` state. Info button with tooltip. Uses framer-motion `motion`, `useMotionValue`, `useSpring`; lucide-react RefreshCw, Download, FileText, FileJson, Table2, List, Info.

AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#38

Implement LogsAlertBanner for Logs

To Do

As a frontend developer, implement the LogsAlertBanner section for the Logs page. Build the `lab-root` div with conditional classes `lab-visible`/`lab-hidden` controlled by `isVisible` (false when `dismissed` or no alerts/filters). Render 4 initial alerts (2 critical with AlertCircle, 2 warning with AlertTriangle) from `initialAlerts` state and 4 active filter chips from `initialFilters` state. Left icon block (`lab-icon-wrap`) uses dynamic severity class (`lab-critical`/`lab-warning`) and `lab-icon-anim` animation on the icon. Body (`lab-body`) shows critical alert messages — first critical message plus overflow count (`+N more critical issues`), then warning messages similarly. Filter chips row renders each filter with remove button via `removeFilter(id)` and a 'Clear All' button via `clearFilters`. Summary badge shows total alert count and breakdown of critical/warning counts. Dismiss button (X icon) calls `handleDismiss` setting `dismissed:true`. Dismissed state can be reset via `handleReset`. `hasAlerts`, `hasFilters`, `criticalAlerts`, `warningAlerts` computed from state. `severityBadge` determined by presence of critical alerts. Icons: AlertTriangle, AlertCircle, X from lucide-react.

AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#39

Implement LogsTable for Logs

To Do

As a frontend developer, implement the LogsTable section for the Logs page. Build the data table rendering 12 LOG_ENTRIES with columns: timestamp (date + time), server name with `serverStatus` badge (online/warn/offline), log level badge (info/warn/error/debug/critical with distinct color classes), message text, tags array rendered as chips, and row action buttons (Eye, Trash2, ChevronRight from lucide-react). Implement row expansion via `expandedRow` state — clicking a row or ChevronRight reveals a detail panel showing the full message. Implement row selection via `selectedRows` Set state with checkbox column enabling multi-select. Implement `sortField`/`sortDir` state for column header click sorting. Empty state renders a `SearchX` icon with 'No logs found' message when entries are empty. Server status indicator uses colored dot with online (green)/warn (amber)/offline (red) variants. Level badges use distinct CSS classes per level (`lt-level--info`, `lt-level--warn`, `lt-level--error`, `lt-level--critical`, `lt-level--debug`). Tags rendered as small pill chips. Row hover highlights. Uses `useState` for expandedRow, selectedRows, sortField, sortDir. Icons: Eye, Trash2, ChevronRight, SearchX from lucide-react.

AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#53

Auth API Endpoints

To Do

As a Backend Developer, implement authentication API endpoints using FastAPI. Create POST /api/auth/login (JWT token generation), POST /api/auth/logout (token invalidation), POST /api/auth/refresh (token refresh), GET /api/auth/me (current user profile). Implement JWT middleware, password hashing with bcrypt, and role-based access control (RBAC) for 'admin' and 'regular_user' roles. Note: Frontend tasks that depend on this include LoginForm (5aca2c24) and ProfileSecurity (9f20e483).

AI 60%
Human 40%
High Priority
2 days
Backend Developer
#62

Database Models Migrations

To Do

As a Backend Developer, define all SQLAlchemy ORM models and Alembic migrations for the zen-server MySQL/MariaDB database. Models required: User (id, username, email, password_hash, role, status, created_at, last_active, permissions JSON), Session (id, user_id, device, browser, ip, location, created_at, last_active, is_current), LogEntry (id, timestamp, server_id, level, message, tags JSON, error_code, source_service, environment, triggered_by, raw_payload JSON), Server (id, name, status, region, type), Alert (id, log_entry_id, severity, type, message, server_id, acknowledged, acknowledged_by, created_at, updated_at, status), AlertConfig (id, threshold_type, threshold_value, criteria JSON, created_by), SupervisorRecommendation (id, title, description, confidence, risk_level, category, source, status, detected_at, resolved_by, resolved_at, notes), SupervisorHistory (id, recommendation_id, action, approver_id, date, impact, notes), NotificationPreferences (user_id, email_alerts, log_digests, critical_alerts, weekly_reports), UserPreferences (user_id, theme, language, timezone, severity_threshold, density). Create Alembic initial migration and seed script with sample data.

AI 50%
Human 50%
High Priority
2 days
Backend Developer
#64

Design System Theme Setup

To Do

As a Frontend Developer, set up the global design system and theme foundation for zen-server. Create a global CSS variables file (e.g. src/styles/theme.css or src/styles/variables.css) defining all SRD color tokens: --primary: #2E86C1, --primary-light: #AED6F1, --secondary: #F39C12, --accent: #E74C3C, --highlight: #F1C40F, --bg: #ECF0F1, --surface: rgba(255,255,255,0.8), --text: #2C3E50, --text-muted: #95A5A6, --border: rgba(44,62,80,0.2). Set up typography scale, spacing tokens, breakpoints, and shared utility classes. Configure global CSS reset/base styles. Ensure theme variables are imported in the root App component and available to all page components. Set up shared animation keyframes (spin, pulse, fade-in) used across multiple sections.

AI 70%
Human 30%
High Priority
0.5 days
Frontend Developer
#2

Implement LoginForm for Login

To Do

As a frontend developer, implement the LoginForm section for the Login page using '../styles/LoginForm.css'. The component manages six state hooks: email, password, remember, showPassword, loading, and error/success strings. The handleSubmit handler validates that both email and password are non-empty (setting inline error messages), then sets loading=true and simulates an async login via setTimeout(1400ms) — to be replaced with a real API call — before setting a hardcoded invalid-credentials error. The lf-root section contains a three-layer parallax star-field decoration (lf-starfield with lf-stars-deep, lf-stars-mid, lf-stars-near divs, aria-hidden). The lf-card houses: an lf-header with LogIn icon (size 24), h1 'Welcome back', and subtitle; conditional lf-error div (role=alert) with AlertCircle icon and conditional lf-success div (role=status) with CheckCircle icon; a form with noValidate containing an email field (lf-input has-icon-left, Mail icon left, autocomplete=email) and a password field with Eye/EyeOff toggle button for showPassword state, a remember-me checkbox, and a submit button that shows a loading spinner when loading=true. Ensure CSS parallax animation for star layers is implemented.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#3

Implement DashboardSidebar for Dashboard

To Do

As a frontend developer, implement the DashboardSidebar section for the Dashboard page. Build the responsive sidebar using the `dsb-` CSS class namespace with `useState` managing the `open` boolean for mobile drawer behavior. Render two NAV_SECTIONS ('Main' and 'Administration') from the static config, each with lucide-react icons (LayoutDashboard, FileText, Bell, BarChart3, Users, ShieldCheck). Display numeric badges (42 for Logs, 7 for Alerts) on nav items and an 'Admin' role label on the Administration section. Include a mobile backdrop overlay (`dsb-backdrop`/`dsb-visible`), a hamburger toggle button (`dsb-toggle-btn`) with Menu icon, a close button (`dsb-close-btn`) with X icon, and a sidebar header branding area showing the Activity icon alongside 'zen-server' and 'Dashboard' text. Render a Settings footer link via the FOOTER_LINK constant. The component may already exist from a previous page — check for reuse. This section must depend on the LoginNavbar task from the Login page to establish page-level chaining.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#40

Implement LogsPagination for Logs

To Do

As a frontend developer, implement the LogsPagination section for the Logs page. Build the `lgp-root` container with `lgp-inner` two-column layout: left shows result count text ('Showing X–Y of 847 results' with bold ranges computed from `page` and `perPage` state), right shows navigation controls. Implement `buildPageNumbers(current, total)` utility that returns page array with ellipsis ('...') strings — handles edge cases for total ≤ 1, total ≤ 7 (full list), and larger ranges showing first/last pages with surrounding pages and ellipsis gaps. Render page buttons with `lgp-nav-btn` class, active page gets `lgp-nav-btn--active` with `aria-current='page'`, ellipsis items render as `lgp-nav-ellipsis` spans. Previous/Next arrow buttons (ChevronLeft/ChevronRight, size:16, strokeWidth:2.4) disabled at boundaries. Rows-per-page select (`lgp-rpp`) with label 'Rows' and RESULTS_PER_PAGE_OPTIONS [10,25,50,100] — changing resets to page 1 via `handlePerPageChange`. `totalPages` computed as `Math.ceil(847 / perPage)`. Uses `useState` for page (initial:1) and perPage (initial:25). TOTAL_RESULTS constant is 847. Icons: ChevronLeft, ChevronRight from lucide-react.

Depends on:#39
Waiting for dependencies
AI 90%
Human 10%
Medium Priority
0.5 days
Frontend Developer
#54

Logs API Endpoints

To Do

As a Backend Developer, implement server log API endpoints using FastAPI. Create GET /api/logs (paginated list with filters: severity, server, date range, tags, keyword search), GET /api/logs/{id} (single log detail), GET /api/logs/{id}/related (related log entries by correlation), DELETE /api/logs/{id} (delete log entry), GET /api/logs/export (export as CSV/JSON/TSV). Support query params: page, per_page, sort_field, sort_dir, level, server, date_from, date_to, tags, q. Note: Frontend tasks that depend on this include LogsTable (331ea2a4), LogsPagination (610f4387), LogsFilterSidebar (b5feb999), LogsHeader (cccff9fd), LogDetailHeader (dc88e7a1), LogDetailContent (b99ad3b1), LogDetailRelated (0caefd67), DashboardRecentLogs (f363b7de).

Depends on:#53
Waiting for dependencies
AI 55%
Human 45%
High Priority
3 days
Backend Developer
#55

Alerts API Endpoints

To Do

As a Backend Developer, implement alerts API endpoints using FastAPI. Create GET /api/alerts (paginated list with filters: severity, type, server, time range), GET /api/alerts/{id} (alert detail with timeline, resources, related), POST /api/alerts/{id}/acknowledge (acknowledge alert), POST /api/alerts/{id}/resolve (mark resolved), POST /api/alerts/{id}/snooze (snooze alert), DELETE /api/alerts/{ids} (bulk delete), GET /api/alerts/stats (summary counts: total, critical, unacknowledged), PUT /api/alerts/config (configure thresholds and criteria for admin). Support real-time alert delivery via WebSocket endpoint WS /api/alerts/stream. Note: Frontend tasks that depend on this include AlertsHeader (af69c21e), AlertsList (dc69607c), AlertsDetail (c209e5b3), AlertsFilters (1ea6328b), AlertsActions (5f42682a), DashboardAlertsSummary (0ca1c04b), DashboardWelcomeBanner (217e0578).

Depends on:#53
Waiting for dependencies
AI 55%
Human 45%
High Priority
3.5 days
Backend Developer
#56

Users Management API

To Do

As a Backend Developer, implement user management API endpoints using FastAPI. Create GET /api/users (paginated list with filters: role, status, permission, search), GET /api/users/{id} (user detail), POST /api/users (create user - admin only), PUT /api/users/{id} (update user profile, role, permissions), DELETE /api/users/{id} (delete user - admin only), PUT /api/users/{id}/permissions (update permissions array), GET /api/users/{id}/sessions (active sessions), DELETE /api/users/{id}/sessions/{session_id} (revoke session). Admin-only endpoints must enforce RBAC middleware. Note: Frontend tasks that depend on this include UsersTable (ae939f55), UsersDetailPanel (72305ac3), UsersHeader (fffbd840), UsersSidebar (e64d54e6).

Depends on:#53
Waiting for dependencies
AI 55%
Human 45%
High Priority
2.5 days
Backend Developer
#57

User Profile API

To Do

As a Backend Developer, implement user profile API endpoints using FastAPI. Create GET /api/profile (current user's full profile), PUT /api/profile (update profile fields: firstName, lastName, email, phone, location, bio), PUT /api/profile/password (change password with strength validation), PUT /api/profile/2fa (enable/disable two-factor authentication), GET /api/profile/sessions (list active sessions), DELETE /api/profile/sessions/{id} (revoke a session), GET /api/profile/activity (login activity history), PUT /api/profile/notifications (update notification preferences), PUT /api/profile/preferences (update UI preferences: theme, language, timezone, severity), DELETE /api/profile (account deletion - danger zone). Note: Frontend tasks that depend on this include ProfileHeader (23579ba3), ProfileInfo (06ee55ea), ProfileSecurity (9f20e483), ProfileNotifications (af63c73c), ProfilePreferences (ba154106).

Depends on:#53
Waiting for dependencies
AI 55%
Human 45%
Medium Priority
2 days
Backend Developer
#59

Supervisor Recommendations API

To Do

As a Backend Developer, implement the API Supervisor endpoints using FastAPI. Create GET /api/supervisor/recommendations (list with filters: status pending/approved/rejected, severity, sort), GET /api/supervisor/recommendations/{id} (single recommendation detail including affectedServers, riskFactors, confidence score), POST /api/supervisor/recommendations/{id}/approve (admin approves a recommendation), POST /api/supervisor/recommendations/{id}/reject (admin rejects with optional notes), GET /api/supervisor/history (audit log of all past approval/rejection actions with approver info, date, impact). Endpoints are admin-only and require RBAC enforcement. Note: Frontend tasks that depend on this include SupervisorRecommendations (8f7f3797), SupervisorApprovalModal (726e4c87), SupervisorHistory (1b51f100), DashboardSupervisorWidget (5d03c7d4).

Depends on:#53
Waiting for dependencies
AI 60%
Human 40%
High Priority
2.5 days
Backend Developer
#60

Settings API Endpoints

To Do

As a Backend Developer, implement system settings API endpoints using FastAPI. Create GET /api/settings (current system settings), PUT /api/settings/account (update account: username, profile picture upload via multipart), PUT /api/settings/notifications (update notification toggles: log_alerts, system_alerts, email_notifications, push_notifications), PUT /api/settings/preferences (update UI preferences: theme, timezone, language, density), PUT /api/settings/security/password (change password), PUT /api/settings/security/2fa (toggle 2FA), GET /api/settings/security/sessions (active sessions), DELETE /api/settings/security/sessions/{id} (revoke session), GET /api/settings/security/login-history (recent login activity). Note: Frontend tasks that depend on this include AccountSettings (e1641c89), NotificationSettings (b7f181e5), PreferenceSettings (82e36aa2), SecuritySettings (aa0e3e24), DangerZone (24835ad8).

Depends on:#53
Waiting for dependencies
AI 55%
Human 45%
Medium Priority
2 days
Backend Developer
#65

Frontend API Client Setup

To Do

As a Frontend Developer, set up the global API client layer for the zen-server frontend. Create an Axios (or fetch-based) API client configured with the backend base URL from environment variables (REACT_APP_API_URL). Implement request interceptors that attach JWT Authorization headers from localStorage/sessionStorage. Implement response interceptors that handle 401 (redirect to login, clear token), 403 (show permission denied), and network errors globally. Create typed API service modules: authService (login, logout, refresh, me), logsService (getLogs, getLog, getRelatedLogs, exportLogs), alertsService (getAlerts, getAlert, acknowledgeAlert, resolveAlert, snoozeAlert, getStats), usersService (getUsers, getUser, updateUser, deleteUser, updatePermissions), analyticsService (getOverview, getRequestData, getErrorsByServer, getServerBreakdown, getServers), supervisorService (getRecommendations, getRecommendation, approve, reject, getHistory), profileService, settingsService, dashboardService. Also set up WebSocket client for real-time alerts.

Depends on:#53
Waiting for dependencies
AI 65%
Human 35%
High Priority
1.5 days
Frontend Developer
#4

Implement DashboardWelcomeBanner for Dashboard

To Do

As a frontend developer, implement the DashboardWelcomeBanner section for the Dashboard page. Build a card (`dwb-card`) using `useState` initialized via `formatDateTime()` and a `useEffect` that calls `setInterval` every 30,000ms to refresh the live date/time display using `toLocaleDateString` and `toLocaleTimeString`. Render a greeting block with a wave emoji, hardcoded username 'John', and subtitle text. Display a simulated system status badge (`dwb-status-online`/`dwb-status-offline`) with an animated dot (`dwb-status-dot-online`) driven by the `systemOnline` boolean. Show a datetime row using the Calendar lucide-react icon with a separator between date and time strings. Include a CTA anchor link to '/Alerts' styled as `dwb-cta` with a ChevronRight icon. This section is independent of DashboardSidebar and can be built in parallel.

Depends on:#3
Waiting for dependencies
AI 88%
Human 12%
High Priority
0.5 days
Frontend Developer
#5

Implement DashboardQuickStats for Dashboard

To Do

As a frontend developer, implement the DashboardQuickStats section for the Dashboard page. Build a four-card stats grid (`dqs-grid`) from the static STAT_CARDS array containing keys: 'servers' (248), 'alerts' (17), 'acknowledged' (94), and 'uptime' (99.87). Implement the `AnimatedValue` sub-component using `useRef` and `useEffect` with GSAP (`gsap.to`) animating from 0 to the target value over 1.2s with `power2.out` easing; handle decimal formatting for the uptime card with `.toFixed(2)`. Implement the `TrendArrow` sub-component rendering TrendingUp (green), TrendingDown (red), or Minus (neutral) lucide-react icons with percentage labels using `dqs-trend--up/down/neutral` classes. Each card header includes the stat's lucide icon (Server, Bell, CheckCircle, Clock) and the trend arrow. Render an eyebrow label 'System Overview' above the grid. This section is independent of DashboardWelcomeBanner and can be built in parallel.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#6

Implement DashboardAlertsSummary for Dashboard

To Do

As a frontend developer, implement the DashboardAlertsSummary section for the Dashboard page. Build a horizontal strip (`das-strip`) from the static ALERT_DATA array containing three entries: critical (count 3, `--accent` color var), warning (count 7, `--secondary`), and info (count 12, `--primary`). Render each as a `das-badge` element with a colored dot (`das-dot--critical/warning/info`), a numeric count span, and a label span using BEM-style `das-badge--critical/warning/info` modifier classes. Include a 'View All Alerts' anchor link to '/Alerts' with an ArrowRight lucide-react icon (`das-view-all-arrow`). The section uses no local state — it is purely presentational. This section is independent of DashboardWelcomeBanner and DashboardQuickStats and can be built in parallel.

Depends on:#3
Waiting for dependencies
AI 90%
Human 10%
Medium Priority
0.5 days
Frontend Developer
#7

Implement DashboardRecentLogs for Dashboard

To Do

As a frontend developer, implement the DashboardRecentLogs section for the Dashboard page. Build a paginated, searchable log table from the static LOG_ENTRIES array (20+ entries with id, timestamp, server, level, message fields). Implement `useState` for `searchQuery` and `currentPage`, and `useMemo` to derive filtered/paginated results. Render a search input with the Search lucide-react icon that filters across server name and message text. Display log rows with level badges styled per severity (ERROR, WARNING, INFO) and truncated message text. Include client-side pagination controls using ChevronLeft/ChevronRight icons showing current page and total pages. Render an empty state using the Inbox lucide-react icon when no results match the search query. Include a 'View All Logs' link with an ArrowRight icon navigating to '/Logs'. This section is independent of DashboardAlertsSummary and can be built in parallel.

Depends on:#3
Waiting for dependencies
AI 82%
Human 18%
High Priority
1.5 days
Frontend Developer
#8

Implement DashboardSupervisorWidget for Dashboard

To Do

As a frontend developer, implement the DashboardSupervisorWidget section for the Dashboard page. Build an interactive recommendations card (`dsw-card`) using `useState` for the `recommendations` array (initialized from INITIAL_RECOMMENDATIONS with 4 items: 'Restart Service X', 'Clear Cache Y', 'Rotate Logs for Node Z', 'Renew SSL Certificate') and a `dismissed` Set. Implement `handleApprove(id)` which filters the item out of `recommendations` state, and `handleDismiss(id)` which adds the id to the `dismissed` Set and also filters it out. Render each recommendation as a `dsw-item` list element with an indicator dot, title, description, an approve button (Check icon, `dsw-btn-approve`), and a dismiss button (X icon, `dsw-btn-dismiss`). Display a badge on the header (`dsw-badge`) showing the remaining recommendation count. Render an empty state (`dsw-empty`) with CheckCircle2 icon and 'All systems optimal' message when `isEmpty` is true. The header uses the ShieldAlert lucide-react icon. This section is independent of DashboardRecentLogs and can be built in parallel.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#9

Implement AnalyticsSidebar for Analytics

To Do

As a frontend developer, implement the AnalyticsSidebar section for the Analytics page. Build the aside.asb-root component with collapsible mobile drawer (asb-mobile-drawer, asb-mobile-toggle) toggled via mobileOpen useState. Render MAIN_NAV items (Overview, Server Performance, API Health, Alerts) with lucide-react icons (LayoutDashboard, Cpu, Globe, AlertTriangle) and badge support (asb-badge, asb-badge-warn showing count of 3 on Alerts). Implement two collapsible accordion groups — 'Monitoring' (monitoringOpen state, defaulting true) and 'Details' (detailsOpen state, defaulting false) — using ChevronDown/ChevronRight icons and keyboard accessibility (Enter/Space onKeyDown). DETAIL_NAV items include Logs (HardDrive), Alerts Configuration (Bell), Users (Shield), Supervisor (Zap). Note: DashboardSidebar component may already exist from a previous page and should be referenced for shared patterns.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#16

Implement AlertsHeader for Alerts

To Do

As a frontend developer, implement the AlertsHeader section for the Alerts page. This section renders a stats dashboard with three stat cards (Total Alerts: 1,247; Critical: 23; Unacknowledged: 94), each with custom SVG icons (bell, circle-info, triangle-warning). Uses `useState` for `mode` toggle between 'view' and 'manage' modes with an `ah-mode-toggle` button group (aria-label, aria-pressed). Uses `useRef` on `statsRef` to query `.ah-stat-card` elements and `useEffect` with GSAP + ScrollTrigger to animate cards in with `gsap.fromTo` (opacity 0→1, y 20→0, stagger 0.12, power2.out easing), with proper `ctx.revert()` cleanup. Registers ScrollTrigger plugin at module level. References `AlertsHeader.css` for `.ah-root`, `.ah-inner`, `.ah-title-row`, `.ah-title-group`, `.ah-page-title`, `.ah-page-subtitle`, `.ah-mode-toggle`, `.ah-mode-btn`, `.ah-mode-active`, `.ah-stat-card`, `.ah-stat-icon` styles.

Depends on:#3
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#21

Implement UsersSidebar for Users

To Do

As a frontend developer, implement the UsersSidebar section for the Users page. Build the collapsible sidebar component with useState hooks managing search, activeRole, activeStatus, activePermission, and mobileOpen state. Render NAV_ITEMS array with lucide-react icons (Users, Shield, UserCheck, Settings) and active badge showing '42' count. Implement three filter groups (roleFilters: Admin/Operator/Viewer/Auditor, statusFilters: Active/Inactive/Suspended/Pending, permissionFilters: Full/Read/Write/Audit) as clickable pill buttons with toggle selection. Include a search input with Search icon, a resetFilters function that clears all state, and a hasActiveFilters computed boolean. Render decorative SVG dots (decorDots array, 10 items with top/left positioning) and angled lines (decorLines array, 5 items with angle/width). The sidebar uses CSS class prefix 'usb-' and imports UsersSidebar.css. Note: DashboardSidebar exists from Dashboard page — reuse structural patterns but implement as a distinct Users-focused component.

Depends on:#3
Waiting for dependencies
AI 88%
Human 12%
High Priority
1.5 days
Frontend Developer
#22

Implement UsersHeader for Users

To Do

As a frontend developer, implement the UsersHeader section for the Users page. Build a section element with glowRef attached and onMouseMove/onMouseLeave handlers using useRef and useCallback hooks. Track glowPos state ({x, y, visible}) and render a ush-glow-spot div whose left/top CSS are set dynamically from glowPos coordinates and opacity toggled via glowPos.visible. Render a title row containing an 'Admin Panel' badge with animated ush-badge-dot, an h1 with 'Manage Users & Permissions' where 'Users' uses ush-title-accent span, and a description paragraph. Render three action buttons as anchor tags: primary 'Add User' with UserPlus icon, outline 'Import' with Upload icon, and ghost 'Export' with Download icon, all linking to /Users. CSS class prefix is 'ush-' and imports UsersHeader.css.

Depends on:#3
Waiting for dependencies
AI 90%
Human 10%
High Priority
0.5 days
Frontend Developer
#23

Implement UsersTable for Users

To Do

As a frontend developer, implement the UsersTable section for the Users page. Build a data table using a static USERS array of 12 user objects (id, name, email, role, permissions array, status, lastActive). Manage useState hooks for search, roleFilter (default 'All'), sortKey (default 'name'), sortDir ('asc'), selected (Set), page, and hoveredRow. Use useMemo to derive filtered+sorted rows from search input and roleFilter dropdown. Implement GSAP animations via useRef and useEffect to animate rows on mount/update (gsap import required). Render role badges using ROLE_CLASS map (ut-role-admin, ut-role-user, ut-role-viewer, ut-role-supervisor) and status dots using STATUS_CLASS map (ut-dot-active, ut-dot-inactive, ut-dot-suspended). Implement getInitials(name) helper for avatar fallback. Include sortable column headers with ChevronUp/ChevronDown icons, pagination at ROWS_PER_PAGE=8, multi-row checkbox selection, and Edit3/Trash2 action icons per row. The component accepts an onSelectUser prop for detail panel integration. CSS prefix 'ut-' imports UsersTable.css.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
2 days
Frontend Developer
#25

Implement SupervisorHeader for Supervisor

To Do

As a frontend developer, implement the SupervisorHeader section for the Supervisor page. This section renders a page header with a subtle 3D animated particle field background using Three.js (60 particles with AdditiveBlending, rotation on Y/X axes, sinusoidal Y drift, and pulsing opacity). It uses useRef for the canvas and animationRef, useCallback for initCanvas, and useEffect for setup/cleanup with requestAnimationFrame. Includes a FilterChip sub-component rendering five filter buttons (All, Pending, Approved, Rejected, Critical) with active state toggled via useState(activeFilter), and a sort dropdown controlled by useState(sortBy). GSAP is imported for potential entrance animations. Styles are in SupervisorHeader.css. Note: DashboardSidebar may already exist from the Dashboard page.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#29

Implement SettingsSidebar for Settings

To Do

As a frontend developer, implement the SettingsSidebar section for the Settings page. Build the `SettingsSidebar` component using the `SETTINGS_CATEGORIES` array (account, notifications, preferences, security) with inline SVG icons for each category. Implement `useState(false)` for `mobileOpen` mobile drawer toggle, `useRef` for the toggle button, and `useCallback` for `handleItemClick` and `handleToggle` handlers. The sidebar renders a mobile toggle button (`ssb-toggle--mobile`) with `aria-expanded` and the active category label, plus the full nav list with `ssb-root` layout. The Notifications category includes a `badge: 3` indicator. Active state is tracked via `activeSection` prop (defaulting to 'account'), with `onSectionChange` callback prop for cross-section communication. Apply `SettingsSidebar.css` styles. Note: this is a new shared navigation component for the Settings page. Depends on DashboardSidebar task to establish page-level chain.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#36

Implement LogsFilterSidebar for Logs

To Do

As a frontend developer, implement the LogsFilterSidebar section for the Logs page. Build the collapsible aside panel (`lfs-root`) with a mobile toggle button (`lfs-toggle-btn`). Implement five collapsible filter groups using `openGroups` state (server, level, date, tags, saved), each toggled via `toggleGroup`. Render SERVER_OPTIONS (5 servers with counts), LOG_LEVEL_OPTIONS (ERROR/WARN/INFO/DEBUG/TRACE with color-coded counts using CSS vars --accent/--secondary/--primary/--text_muted), TAG_OPTIONS (6 tags), and DATE_PRESETS ('1h','6h','24h','7d','30d','Custom'). Multi-select checkboxes with Check icon (lucide-react) for servers, levels, and tags via `toggleOption` helper. Date range shows preset buttons and custom date inputs (`dateFrom`/`dateTo`) when 'Custom' is selected. Saved filters section renders 3 default filters with Bookmark, Trash2, Plus icons — supports `saveFilter`, `deleteSavedFilter`, `applySavedFilter`. Active filter badge count (`activeFilterCount`) computed from all selected state. `clearAll` resets all filters. `sidebarOpen` controls mobile drawer visibility. Uses `useState` for keyword, sidebarOpen, openGroups, selectedServers, selectedLevels, selectedTags, datePreset, dateFrom, dateTo, savedFilters. Icons: Search, SlidersHorizontal, ChevronDown, Check, Bookmark, Trash2, Plus, X, Server, AlertTriangle from lucide-react.

Depends on:#3
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#41

Implement ProfileHeader for Profile

To Do

As a frontend developer, implement the ProfileHeader section for the Profile page. This section renders a `<header className="ph-root">` with a `ph-inner` flex container. Key features: (1) Avatar block using `motion.div` from framer-motion with `whileHover={{ scale: 1.04 }}` spring animation (stiffness 350, damping 20), an `avatarWrapRef` ref, and `avatarError` state managed via `useState` + `useCallback(handleAvatarError)` — falls back to initials `SJ` span when image fails to load from `https://i.pravatar.cc/200?u=zen-server-profile`; (2) `ph-status-dot` online indicator overlaid on the avatar; (3) `ph-info` block displaying name (`Sarah Johnson`), role (`Senior DevOps Engineer`), email as a `<a href="mailto:">` with `Mail` lucide icon (size 15), a `ph-status-badge` with inline green dot (#27AE60, 7×7px circle), and `ph-joined` member-since text; (4) `ph-edit-btn` button with `Edit3` icon (size 16, strokeWidth 2.2). Uses `useState`, `useRef`, `useCallback` from React and `motion` from framer-motion. Import `ProfileHeader.css`. Note: this is the first section of the Profile page — include Dashboard page dependency task IDs in depends_on.

Depends on:#3
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#58

Analytics API Endpoints

To Do

As a Backend Developer, implement analytics and reporting API endpoints using FastAPI. Create GET /api/analytics/overview (summary metrics: total requests, error rate, avg response time, server uptime), GET /api/analytics/requests (time-series request volume data by range: 24h/7d/30d/90d), GET /api/analytics/errors-by-server (error breakdown per server: 4xx/5xx/timeout), GET /api/analytics/server-breakdown (pie chart distribution by server type), GET /api/analytics/servers (paginated server performance table with CPU%, memory%, request count, error rate), all supporting date range and filter query params. Note: Frontend tasks that depend on this include AnalyticsOverview (47b945f8), AnalyticsCharts (2f3ee987), AnalyticsTable (2b737213), AnalyticsHeader (813702ef), AnalyticsFilters (f00d0b75).

Depends on:#53#54
Waiting for dependencies
AI 55%
Human 45%
Medium Priority
2.5 days
Backend Developer
#61

Dashboard Summary API

To Do

As a Backend Developer, implement dashboard summary API endpoints using FastAPI. Create GET /api/dashboard/stats (quick stats: servers count, active alerts, acknowledged count, uptime percentage with trend data), GET /api/dashboard/alerts-summary (alert counts by severity: critical, warning, info), GET /api/dashboard/recent-logs (latest 20 log entries for the recent logs widget), GET /api/dashboard/supervisor-widget (pending supervisor recommendations count and top 4 items for dashboard widget). Note: Frontend tasks that depend on this include DashboardQuickStats (8d5273f6), DashboardAlertsSummary (0ca1c04b), DashboardRecentLogs (f363b7de), DashboardSupervisorWidget (5d03c7d4), DashboardWelcomeBanner (217e0578).

Depends on:#59#55#53#54
Waiting for dependencies
AI 55%
Human 45%
High Priority
1.5 days
Backend Developer
#63

Log Ingestion Pipeline

To Do

As a Backend Developer, implement a log ingestion pipeline using FastAPI background tasks or a dedicated service. Create POST /api/ingest/logs (bulk ingest endpoint accepting structured log payloads from server agents), POST /api/ingest/logs/single (single log entry ingest). Implement log parsing middleware that normalizes incoming log formats, extracts severity/level, associates with known servers, and triggers alert evaluation rules. Implement an alert evaluation engine that checks ingested logs against AlertConfig thresholds and creates Alert records when criteria are met, then broadcasts via WebSocket to connected clients. Integrate with the existing Server model for server registration and status updates. This pipeline supports the core SRD requirement of consolidating server logs from existing server infrastructure.

Depends on:#55#62
Waiting for dependencies
AI 50%
Human 50%
High Priority
3 days
Backend Developer
#66

Global State Management Setup

To Do

As a Frontend Developer, set up global state management for the zen-server React application using React Context API or Zustand. Implement AuthContext/store: current user object, JWT token, isAuthenticated, login action, logout action, refreshToken action. Implement AlertsContext/store: real-time alert feed connected to WebSocket, unread count, acknowledge action. Implement a global notification/toast store for cross-component toast messages. Set up React Router v6 with protected routes (PrivateRoute component) that redirect unauthenticated users to /Login. Implement route-level code splitting with React.lazy/Suspense for each page. Configure the router with all 11 page routes: /, /Login, /Dashboard, /Analytics, /Alerts, /Logs, /LogDetail/:id, /Profile, /Supervisor, /Users, /Settings.

Depends on:#65
Waiting for dependencies
AI 60%
Human 40%
High Priority
1.5 days
Frontend Developer
#10

Implement AnalyticsHeader for Analytics

To Do

As a frontend developer, implement the AnalyticsHeader section for the Analytics page. Build section.ah-root with three interactive control zones: (1) a breadcrumb row (Dashboard / Analytics links) with an ah-live-dot live indicator and an h1 title; (2) a VIEW_OPTIONS tab list (Overview/BarChart3, Trends/TrendingUp, Real-time/Activity) using role='tablist' with activeView useState; (3) a DATE_PRESETS row (24h, 7d, 30d, 90d, Custom) with activePreset useState. Implement handlePreset() logic that computes startDate/endDate via daysAgoStr() and todayStr() helpers and updates them with useState. When preset is 'custom', reveal date input fields for startDate and endDate. The subtitle dynamically renders the formatted date range via formatRange(activePreset). Include a Download button. Import lucide-react icons: Download, BarChart3, TrendingUp, Activity, Calendar.

Depends on:#9
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#11

Implement AnalyticsOverview for Analytics

To Do

As a frontend developer, implement the AnalyticsOverview section for the Analytics page. Render four MetricCard components from the METRICS array: Total Requests (Activity icon, primary accent, aov-glow-primary), Error Rate (AlertTriangle icon, error accent, aov-glow-error), Avg Response Time (Clock icon, warning accent, aov-glow-warning), and Server Uptime (Server icon, success accent, aov-glow-success). Each MetricCard uses a cardRef with useRef and useEffect to attach mousemove/mouseleave event listeners that compute tilt angles and drive GSAP animations (gsap.to with rotationX/rotationY, power2.out ease on move, elastic.out on leave). Cards also set CSS custom properties --mx and --my for the shine/glow gradient effect. Implement TrendIcon sub-component rendering TrendingUp, TrendingDown, or Minus based on direction prop. Each card displays value, trend badge (aov-trend-up/down/stable classes), detailLabel, and a detailPercent progress bar.

Depends on:#9
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#12

Implement AnalyticsCharts for Analytics

To Do

As a frontend developer, implement the AnalyticsCharts section for the Analytics page. Register all Chart.js modules (CategoryScale, LinearScale, PointElement, LineElement, BarElement, ArcElement, Title, Tooltip, Legend, Filler) via ChartJS.register(). Render three chart types from react-chartjs-2: (1) a Line chart for request volume using REQUEST_DATA keyed by TIME_RANGES ('24h','7d','30d','90d') with successful/failed/latency datasets and gradient fills; (2) a Bar chart for ERROR_BY_SERVER breakdown across 8 servers (Web-01 through Queue-01) with 4xx/5xx/timeout stacked series; (3) a Pie chart for SERVER_BREAKDOWN showing 6 server-type slices with custom colors array. Implement activeRange useState driving useMemo to recompute chart datasets, and zoom level state with ZoomIn/ZoomOut lucide buttons. Apply commonTooltipStyle and commonAxisStyle shared config objects for consistent theming across all charts.

Depends on:#9
Waiting for dependencies
AI 80%
Human 20%
High Priority
2 days
Frontend Developer
#13

Implement AnalyticsTable for Analytics

To Do

As a frontend developer, implement the AnalyticsTable section for the Analytics page. Render a paginated server data table from SERVER_DATA array (16 rows: web-prod-01, api-gateway-01, db-primary-01, cache-redis-01, worker-batch-02, cdn-edge-01, etc.) with columns for server name, status badge (STATUS_META mapping Healthy/Warning/Critical to at-status-healthy/warning/critical CSS classes), CPU% and memory% with inline progress bars using getMetricBarClass() (danger ≥80, warning ≥60), requests count, error rate colored by getErrorRateClass() (bad ≥3, warn ≥1), and last updated timestamp. Implement search filtering via useState with a Search (lucide) input. Support PAGE_SIZE_OPTIONS [10,25,50] via dropdown. Paginate with ChevronLeft/ChevronRight controls and useMemo for filtered+sliced rows. Use gsap from 'gsap' for row entry animations via useRef/useEffect. Include a MoreHorizontal action button per row. Import Server, Database, Cpu, HardDrive icons from lucide-react.

Depends on:#9
Waiting for dependencies
AI 82%
Human 18%
High Priority
2 days
Frontend Developer
#14

Implement AnalyticsFilters for Analytics

To Do

As a frontend developer, implement the AnalyticsFilters section for the Analytics page. Build a collapsible filter panel (expanded useState, panelRef useRef) with a Filter icon header showing activeCount badge computed by countActiveFilters(). Implement four filter controls: (1) SERVER_STATUSES dropdown (All Statuses/Online/Degraded/Offline/Maintenance) with serverStatus useState; (2) ERROR_TYPES multi-select checkboxes (Connection Timeout×142, 500 Internal×87, 404×64, 403×31, 502×19, SSL×11) with errorTypes array useState; (3) REGIONS multi-select with region counts and regions array useState defaulting to all selected; (4) DATE_PRESETS chip row (Today/24h/7d/30d/Custom) with datePreset useState and dateRange object for custom from/to inputs via getDefaultDateRange(). Implement magnetic hover effect on preset chips via chipRefs useRef array and handleChipMove useCallback using cursor distance math. Include a RotateCcw reset button and Check icons for selected states. Import ChevronDown, Filter, RotateCcw, Check, Search from lucide-react.

Depends on:#9
Waiting for dependencies
AI 83%
Human 17%
Medium Priority
1.5 days
Frontend Developer
#15

Implement Footer for Analytics

To Do

As a frontend developer, implement the Footer section for the Analytics page. Build footer.ftr-root containing an animated ftr-starfield div with 8 absolutely positioned ftr-star span elements (positions/delays defined in stars array, e.g. top:'18%' left:'8%' delay:'0s') rendered with aria-hidden. Render ftr-inner with an ftr-grid containing: (1) ftr-brand-col with ftr-logo-mark, ftr-brand-name ('zen<server>'), and ftr-tagline paragraph; (2) ftr-links-wrap with three navColumns (Platform: Dashboard/Analytics/Logs/Alerts, Management: Users/Supervisor/Settings, Account: Profile/Login/LogDetail) each as ftr-link-col with ftr-col-title h3 and ftr-link-list ul. Below ftr-divider, render ftr-bottom with dynamic copyright year via new Date().getFullYear() and a ftr-status indicator with ftr-status-dot span. Import Activity from lucide-react. Note: this Footer component may already exist from a previous page and can be reused.

Depends on:#9
Waiting for dependencies
AI 90%
Human 10%
Low Priority
0.5 days
Frontend Developer
#17

Implement AlertsFilters for Alerts

To Do

As a frontend developer, implement the AlertsFilters section for the Alerts page. This section renders a composable filter bar using a reusable `FilterDropdown` component with four filter axes: Severity (critical/warning/info with color indicators via `severity-critical`, `severity-warning`, `severity-info` CSS classes), Type (7 options: cpu_spike, memory_leak, disk_full, service_down, auth_failure, rate_limit, cert_expiry), Server (6 options including prod/staging/dev regions), and Time Range (1h/6h/24h/7d/30d/all). Each `FilterDropdown` uses local `useState` for `open` state, `useRef` for click-outside detection via `document.addEventListener('mousedown', ...)` with cleanup. Imports `Search`, `ChevronDown`, `X`, `Check`, `RotateCcw` from `lucide-react`. Trigger buttons support `aria-haspopup='listbox'` and `aria-expanded`. Dropdown menus support `alignRight` prop and `showColor` prop for severity color dots. Includes a reset/clear-filters control using `RotateCcw` icon. References `AlertsFilters.css` for `.af-dropdown-wrapper`, `.af-dropdown-trigger`, `.af-dropdown-menu`, `.af-dropdown-option`, `.af-dropdown-option-color`, `.af-dropdown-label`, `.af-dropdown-value`, `.af-dropdown-icon` styles.

Depends on:#16
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#24

Implement UsersDetailPanel for Users

To Do

As a frontend developer, implement the UsersDetailPanel section for the Users page. Build a detail panel component accepting a user prop and syncing it via useEffect to internal selectedUser state (also setting role and perms from user.role and user.permissions). Manage useState hooks for selectedUser, editMode, role (dropdown from ROLES array: admin/supervisor/operator/viewer), perms (array from PERMISSIONS config of 6 items with key/label/desc/icon), modalOpen, modalPerms, confirmDelete, and toast. Implement showToast(msg) that sets toast and auto-clears after 2800ms. Build togglePerm(key) for inline permission toggling, openPermsModal() that copies perms to modalPerms, toggleModalPerm(key) for modal editing, and applyModalPerms() that commits modal selections and calls showToast('Permissions updated'). Render empty udp-empty state when no user selected. In edit mode render role select dropdown and permission checkboxes using PERMISSIONS array with icons (UserCheck, Shield, Eye, Bell, FileText, Settings from lucide-react). Include handleSave (calls showToast('User profile saved')) and handleDelete with confirmDelete guard (calls showToast('User removed')). Wire to UsersTable via the user prop passed from onSelectUser callback. CSS prefix 'udp-' imports UsersDetailPanel.css.

Depends on:#23
Waiting for dependencies
AI 85%
Human 15%
High Priority
2 days
Frontend Developer
#26

Implement SupervisorRecommendations for Supervisor

To Do

As a frontend developer, implement the SupervisorRecommendations section for the Supervisor page. This section renders a list of AI supervisor recommendations sourced from a MOCK_RECOMMENDATIONS array (8+ items) using useState for local state. Each recommendation card displays: title, severity badge (critical/warning/info/low), serviceLabel, summary text, timestamp, and current status (pending/approved/rejected). Cards are rendered with conditional severity-based styling classes. The section uses SupervisorRecommendations.css for layout and visual hierarchy. Interactions include status-driven card state updates to wire into the approval modal trigger. No external API calls — all data is local mock.

Depends on:#25
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#28

Implement SupervisorHistory for Supervisor

To Do

As a frontend developer, implement the SupervisorHistory section for the Supervisor page. This section renders a historical audit table/list from a local historyData array (8+ entries), each containing: id, title, approverName, approverInitials (for avatar chip), action (approved/rejected), date, time (UTC), serverNode, impact, and notes. Uses useState for any local filter/sort state and useRef for DOM access or scroll behavior via useEffect. Action badges render conditionally styled classes for 'approved' vs 'rejected' states. Approver avatar chips display initials (e.g. 'AC', 'SK', 'MP'). The impact field displays an em dash for rejected items. Styles in SupervisorHistory.css. All data is local mock with no API calls.

Depends on:#25
Waiting for dependencies
AI 88%
Human 12%
Medium Priority
1 day
Frontend Developer
#30

Implement SettingsHeader for Settings

To Do

As a frontend developer, implement the SettingsHeader section for the Settings page. Build the `SettingsHeader` component with a `BREADCRUMBS` array containing Dashboard and Settings links rendered via `React.Fragment` with a `/` separator (`sh-breadcrumb-sep`). The current page renders as `sh-breadcrumb-current` (non-linked), while prior crumbs use `sh-breadcrumb-link` anchor tags. Implement `useState('')` for `search` with a live-controlled `sh-search-input` input and a clear handler (`handleClear`). The title row includes a gear SVG icon (`sh-icon`), an `<h1>` with `sh-title-accent` span for 'Settings', and a search wrapper with a search SVG icon. Apply `SettingsHeader.css` styles. Independent of other content sections; can be built in parallel.

Depends on:#29
Waiting for dependencies
AI 88%
Human 12%
High Priority
0.5 days
Frontend Developer
#31

Implement AccountSettings for Settings

To Do

As a frontend developer, implement the AccountSettings section for the Settings page. Build the `AccountSettings` component with `useState` hooks for `username` ('james_carter'), `pfpPreview` (null), and `toast` ('') for success/error feedback. Implement a profile picture upload flow using `useRef(null)` for `fileInputRef` with a file input triggering image preview via FileReader. Hardcode `email` as 'james.carter@zenserver.io' (read-only display). Render a `linkedAccounts` array (GitHub connected as 'jcarter-dev', Google connected as 'james.carter', Microsoft and GitLab disconnected) with provider-specific SVG icons mapped via `iconMap` and CSS class variants via `iconClassMap`. Include connect/disconnect action buttons per account. Show a toast notification on save. Apply `AccountSettings.css` styles. Independent content section parallel to NotificationSettings, PreferenceSettings, SecuritySettings, and DangerZone.

Depends on:#29
Waiting for dependencies
AI 82%
Human 18%
High Priority
1.5 days
Frontend Developer
#32

Implement NotificationSettings for Settings

To Do

As a frontend developer, implement the NotificationSettings section for the Settings page. Build the `NotificationSettings` component with a `notificationItems` array of four entries: Log Alerts, System Alerts, Email Notifications, and Push Notifications — each with id, label, and description. Implement `useState` for `toggles` object with initial values (log_alerts: true, system_alerts: true, email_notifications: true, push_notifications: false). Render each item as an `ns-item` div with conditional `active` class, item info (label + description), and a custom CSS toggle (`ns-toggle` label with `ns-toggle-slider` span) controlling a hidden checkbox. The `handleToggle` function spreads previous state and flips the targeted key. Apply `NotificationSettings.css` styles. Independent content section parallel to AccountSettings, PreferenceSettings, SecuritySettings, and DangerZone.

Depends on:#29
Waiting for dependencies
AI 90%
Human 10%
Medium Priority
0.5 days
Frontend Developer
#33

Implement PreferenceSettings for Settings

To Do

As a frontend developer, implement the PreferenceSettings section for the Settings page. Build the `PreferenceSettings` component with four `useState` hooks: `theme` ('light'), `timezone` ('UTC−05:00 (Eastern)'), `language` ('English'), and `density` ('comfortable'). Render a Theme row with a `ps-theme-toggle` radiogroup containing two `ps-theme-btn` buttons (☀️ Light and 🌙 Dark) toggling `ps-active` class and `aria-pressed`. Render a Timezone row with a `ps-select` dropdown populated from the `timezones` array (11 options from UTC−12 to UTC+10). Render a Language row with a `ps-select` dropdown from the `languages` array (9 languages including Japanese, Chinese, Korean). Render a Density row with selectable options for 'comfortable' and compact variants. Apply `PreferenceSettings.css` with `ps-root`, `ps-inner`, `ps-group`, `ps-row`, `ps-label-col`, `ps-emphasis`, and `ps-hint` class structure. Independent content section parallel to other settings sections.

Depends on:#29
Waiting for dependencies
AI 88%
Human 12%
Medium Priority
1 day
Frontend Developer
#34

Implement SecuritySettings for Settings

To Do

As a frontend developer, implement the SecuritySettings section for the Settings page. Build the `SecuritySettings` component importing `Shield, Key, Monitor, Smartphone, Globe, Clock, CheckCircle, XCircle, Eye, EyeOff` from lucide-react. Implement a `getPasswordStrength(pw)` scorer (0–5) checking length ≥8, ≥12, uppercase, digits, and special chars, with `strengthLabels` and `strengthColors` arrays for visual feedback. Manage state with `useState` for `currentPassword`, `newPassword`, `confirmPassword`, and three visibility toggles (`showCurrent`, `showNew`, `showConfirm`) rendered with Eye/EyeOff icons. Implement `twoFA` boolean toggle with a `useState(false)`. Render `sessions` state from `initialActiveSessions` (4 entries: MacBook Pro current, iPhone, Windows Desktop, Linux Server) with device/browser/IP/lastActive display and individual revoke buttons via `setSessions` filter. Render `loginHistory` (5 entries) with `CheckCircle`/`XCircle` icons for success/failure, IP, location, and time. Include a `handleChangePassword` handler with validation and `feedback` state for error/success messages. Apply `SecuritySettings.css` styles.

Depends on:#29
Waiting for dependencies
AI 80%
Human 20%
High Priority
2 days
Frontend Developer
#35

Implement DangerZone for Settings

To Do

As a frontend developer, implement the DangerZone section for the Settings page. Build the `DangerZone` component with three `useState` hooks: `showModal` (false), `acknowledged` (false), and `understood` (false). Implement `openModal` which sets `showModal(true)` and locks scroll via `document.body.style.overflow = 'hidden'`; `closeModal` which resets all three states and restores scroll; and `handleOverlayClick` for backdrop dismissal. Render a `dz-header` with a triangle-warning SVG icon and 'Danger Zone' title. Render a `dz-card` containing a `dz-warning-block` with a circle-info SVG, warning title 'Delete your account permanently', descriptive paragraph, and a `dz-warning-list` of four bullet consequences (subscriptions, alert configs, analytics history, user profile). Render a `dz-action-row` with a `dz-btn-delete` button (trash SVG icon) triggering `openModal`. The confirmation modal (when `showModal`) requires both `acknowledged` and `understood` checkboxes to be checked before the destructive delete button enables, with overlay click-outside-to-close behavior. Apply `DangerZone.css` styles.

Depends on:#29
Waiting for dependencies
AI 85%
Human 15%
Medium Priority
1 day
Frontend Developer
#42

Implement ProfileNav for Profile

To Do

As a frontend developer, implement the ProfileNav section for the Profile page. This is a sticky sidebar navigation using a `<nav className="pnv-root">` with GSAP-animated active indicator. Key features: (1) `NAV_ITEMS` array with 4 entries — Info (User icon, sectionId `profile-info`), Notifications (Bell icon, badge `'3'`, sectionId `profile-notifications`), Security (Shield icon), Preferences (Sliders icon); (2) `active` state (`useState('info')`) tracks selected tab; (3) `glowPos` state (`{ x, y }`) drives a `pnv-glow` div that follows cursor via `handleMouseMove`/`handleMouseLeave` callbacks, resetting to `{ x: -200, y: -200 }` on leave; (4) `navRef` refs the `<ul className="pnv-list">` — on `active` change, a `useEffect` reads the `.pnv-active` element's bounding rect relative to the list and uses `gsap.to()` (duration 0.35, ease `power2.out`) to animate CSS custom properties `--indicator-top` and `--indicator-height` for a sliding pill indicator; (5) `handleNavClick` uses `gsap.to(window, { scrollTo: { y: target, offsetY: 80 }, duration: 0.5, ease: 'power2.out' })` for smooth section scrolling; (6) badge count rendered on Notifications item. Import `ProfileNav.css`, uses `gsap` and lucide icons.

Depends on:#41
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#43

Implement ProfileInfo for Profile

To Do

As a frontend developer, implement the ProfileInfo section for the Profile page. This is a complex editable form section rendered as `<section id="profile-info">`. Key features: (1) `FORM_FIELDS` array of 6 field configs (firstName, lastName, email, phone, location, bio) each with `key`, `label`, lucide `icon`, `type` (text/email/tel/textarea), `placeholder`, `hint`, optional `maxLength`; (2) `initialFormData` object with pre-filled Aiko Tanaka data; (3) State: `formData` (useState(initialFormData)), `focusedField` (string|null), `dirtyFields` (Set), `errors` (object), `saved` (boolean); (4) `validate()` useCallback runs regex for email, length checks for phone (min 8) and name fields (min 2); (5) `handleChange()` updates formData, manages dirtyFields Set, calls validate and sets/clears errors per field; (6) `cardRef` and `inputRefs` (keyed object) refs; (7) `hasChanges` computed by JSON.stringify comparison; (8) `hasErrors` from Object.keys(errors).length; (9) GSAP animations on card mount/save; (10) Save/cancel actions with `saved` state feedback; (11) Field-level dirty indicators, error messages with `AlertCircle` icon, and `Check` confirmation icons. Lucide icons: User, Mail, Phone, MapPin, BookOpen, Save, X, Check, AlertCircle. Import `ProfileInfo.css`.

Depends on:#41
Waiting for dependencies
AI 82%
Human 18%
High Priority
2 days
Frontend Developer
#44

Implement ProfileNotifications for Profile

To Do

As a frontend developer, implement the ProfileNotifications section for the Profile page. Rendered as `<section className="pn-root" id="profile-notifications">`. Key features: (1) `NOTIFICATION_ITEMS` array of 4 items — email_alerts (Mail), log_digests (FileText), critical_alerts (AlertTriangle, `critical: true`), weekly_reports (BarChart3) — each with id, label, desc, icon, and critical flag; (2) `prefs` state (`useState`) maps each item id to boolean, defaulting critical_alerts and email_alerts/log_digests to true, weekly_reports to false; (3) `saving` and `saved` boolean states; (4) `togglePref(id)` useCallback flips the relevant pref and clears saved state; (5) `handleSave()` useCallback sets saving, then after 600ms timeout sets saved=true and auto-clears after 2500ms via nested setTimeout; (6) `activeCount` computed from Object.values(prefs).filter(Boolean).length for header subtitle; (7) Header shows `pn-save-badge` with `CheckCircle2` icon that becomes visible (`pn-visible` class) when saved, with `aria-live="polite"`; (8) Items rendered with conditional `pn-critical` and `pn-active` classes, toggle switch UI, BellOff/Bell icons. Import `ProfileNotifications.css`.

Depends on:#41
Waiting for dependencies
AI 87%
Human 13%
High Priority
1 day
Frontend Developer
#45

Implement ProfileSecurity for Profile

To Do

As a frontend developer, implement the ProfileSecurity section for the Profile page — the most complex section on this page. Rendered as `<section id="profile-security">` with 5 accordion-style sub-panels defined in `PASSWORD_SECTIONS`: (1) **Change Password** (Lock icon, `ps-icon-blue`) — password input with `Eye`/`EyeOff` toggle, `getStrength(w)` function computing a score 0–6 from length (≥8, ≥12), uppercase, lowercase, digits, special chars, returning `{ pct, color, label }` for a strength meter bar; (2) **Two-Factor Authentication** (ShieldCheck, `ps-icon-amber`) — 2FA enable/disable UI; (3) **Active Sessions** (Monitor, `ps-icon-green`) — `SESSIONS_DATA` array of 4 sessions (MacBook/Chrome current, iPhone/Safari, Workstation/Edge, Pixel/Chrome) each with device type, location, IP; `DEVICE_ICON_MAP` maps device strings to Monitor/Smartphone/Tablet lucide icons; session revoke with `XCircle`/`Trash2` icons; (4) **Login Activity** (LogIn, `ps-icon-blue`) — `ACTIVITY_DATA` array of 5 entries with action, detail, IP, time, status (success/failed); `CheckCircle2` for success, `AlertTriangle` for failed; (5) **Danger Zone** (AlertTriangle, `ps-icon-red`) — destructive actions with `LogOut` icon, confirmation flow. GSAP used for accordion open/close animations. State: password fields, show/hide toggles, sessions list, 2FA toggle. Import `ProfileSecurity.css`. Lucide: Eye, EyeOff, Lock, ShieldCheck, Monitor, Smartphone, Tablet, LogIn, XCircle, CheckCircle2, AlertTriangle, Trash2, LogOut.

Depends on:#41
Waiting for dependencies
AI 80%
Human 20%
High Priority
2.5 days
Frontend Developer
#46

Implement ProfilePreferences for Profile

To Do

As a frontend developer, implement the ProfilePreferences section for the Profile page. Rendered as `<section id="profile-preferences">`. Key features: (1) State: `theme` ('light'|'dark'), `language` ('en'), `timezone` ('America/New_York'), `severity` ('medium'), `saved` (boolean), `activeRow` (string|null); (2) `THEMES` array — Light (Sun icon) and Dark (Moon icon) — rendered as toggle buttons with active styling; (3) `LANGUAGES` array of 6 options (en, es, fr, de, ja, zh) rendered as a `<select>` or custom dropdown; (4) `TIMEZONES` array of 10 timezone entries with UTC offset labels, rendered as `<select>`; (5) `SEVERITIES` array of 4 levels (low/medium/high/critical) each with a `cssClass` (ppr-sev-low etc.) for colored chip styling, rendered as clickable chips; (6) **Canvas particle background** — `canvasRef` with `initCanvas` useCallback that reads parent bounding rect, sets up DPR-aware canvas, spawns `Math.min(floor(w*h/18000), 40)` particles each with `{ x, y, r, vx, vy, a }`, runs a `tick` animation loop using `ctx.clearRect` + per-particle draw + boundary wrapping; ResizeObserver triggers reinit; (7) Save button sets `saved=true` and auto-clears after 2.5s with `Check` icon feedback; (8) `activeRow` highlights the currently interacted preference row. Lucide: Sun, Moon, Globe, Clock, AlertTriangle, Check, Save. Import `ProfilePreferences.css`.

Depends on:#41
Waiting for dependencies
AI 83%
Human 17%
High Priority
2 days
Frontend Developer
#47

Implement LogDetailHeader for LogDetail

To Do

As a frontend developer, implement the LogDetailHeader section for the LogDetail page. This section uses multiple GSAP refs (backRef, severityRef, logIdRef, titleRef, sourceRef, dividerRef) to orchestrate a staggered entrance animation timeline with power3.out easing. Elements animate from opacity 0 with x/y offsets in sequence: back link slides in from left, severity badge and log ID fade up with 0.08s stagger, title fades up, source fades up, and the bottom divider scales in via scaleX. The section renders a navigation breadcrumb using ChevronLeft icon linking back to /Logs, a severity badge with a pulsing dot classed 'ldh-severity--critical', a log ID display using the Hash icon, an h1 title for 'Database Connection Pool Exhaustion Detected on Primary Node', a source line using the Server icon with a fully qualified internal hostname, and a horizontal divider. Note: LogDetailHeader establishes the page-level dependency on the Logs page.

Depends on:#36
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#67

Integrate Login Authentication

To Do

As a Tech Lead, verify the end-to-end integration between the Login frontend implementation and the Auth backend API. Ensure the LoginForm submits credentials to POST /api/auth/login, JWT token is stored and attached to subsequent requests, redirect to Dashboard on success, and error messages display correctly for invalid credentials. Verify the Navbar reflects authenticated state.

Depends on:#1#65#53#2#66
Waiting for dependencies
AI 40%
Human 60%
High Priority
0.5 days
Tech Lead
#18

Implement AlertsList for Alerts

To Do

As a frontend developer, implement the AlertsList section for the Alerts page. This is the most complex section, rendering a list of 12 static `ALERTS` objects (ids ALT-001 through ALT-012+) each with severity (critical/warning/info), message, server, timestamp, and acknowledged flag. Uses `useState`, `useEffect`, `useRef`, `useMemo`, and `useCallback` for list management and filtering. Integrates a Three.js 3D canvas via `@react-three/fiber` `Canvas` component with `useFrame` and `useThree` hooks for a 3D background or severity visualization element, and `OrbitControls` from `@react-three/drei`. Uses `gsap` for row entrance animations. Imports `* as THREE` for geometry/material construction. Each alert row displays severity badge, message text, server name, timestamp, and acknowledged status indicator. List is filterable/sortable using `useMemo` derived state. References `AlertsList.css` for `.al-root`, alert row, severity badge, and 3D canvas overlay styles.

Depends on:#17
Waiting for dependencies
AI 80%
Human 20%
High Priority
2 days
Frontend Developer
#27

Implement SupervisorApprovalModal for Supervisor

To Do

As a frontend developer, implement the SupervisorApprovalModal section for the Supervisor page. This modal uses D3.js to render a ConfidenceGauge SVG sub-component: a dual-arc gauge (innerRadius/outerRadius via d3.arc, cornerRadius 4) with a linearGradient fill keyed by risk level (high=#E74C3C, medium=#F39C12, low=#27AE60) and animated opacity reveal. The modal displays recommendationData (id REC-2026-0842) including: title, description, detectedAt, source, category, confidence score (89), risk level (medium), a table of affectedServers (4 nodes with status/errors/lastIncident), and riskFactors chips. Uses useState for modal open/close and useRef for svgRef and containerRef. D3 selectAll/remove pattern ensures clean re-renders. Styles in SupervisorApprovalModal.css. RISK_LABELS maps high/medium/low to display strings.

Depends on:#26
Waiting for dependencies
AI 82%
Human 18%
High Priority
2 days
Frontend Developer
#48

Implement LogDetailMetadata for LogDetail

To Do

As a frontend developer, implement the LogDetailMetadata section for the LogDetail page. This section renders a static metadata card using a METADATA_FIELDS constant array with 6 fields: Timestamp (monospace span), Log Level (colored badge with dot using lmd-level--error class), Source Service (plain text), Environment (badge using lmd-env--production class), Triggered By (plain text), and Tags (array rendered as individual lmd-tag spans). The renderValue() switch function dispatches rendering per field.type ('monospace', 'level', 'env', 'tags', default). The lmd-grid layout arranges fields in a responsive grid within an lmd-card container. No animations or state hooks are used — this is a pure presentational section.

Depends on:#47
Waiting for dependencies
AI 92%
Human 8%
High Priority
0.5 days
Frontend Developer
#49

Implement LogDetailContent for LogDetail

To Do

As a frontend developer, implement the LogDetailContent section for the LogDetail page. This section features a custom JSON syntax highlighter via the highlightJSON() function using a regex replace to wrap tokens in span elements with classes ldc-tok-key, ldc-tok-str, ldc-tok-num, ldc-tok-bool, ldc-tok-null, and ldc-tok-punc. Includes three custom SVG icon components: CopyIcon, CheckIcon, and ChevronIcon. The section manages useState for copy state and a collapsed/expanded toggle for long log content. It uses useCallback for the copy-to-clipboard handler and useRef+useEffect with GSAP for entrance animations. The LOG_MESSAGE constant contains a multi-line Python traceback sample demonstrating DatabaseConnectionError. The content panel renders line-numbered, syntax-highlighted log output with a copy button that swaps from CopyIcon to CheckIcon on success and a chevron toggle to expand/collapse the raw log block.

Depends on:#47
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#50

Implement LogDetailTimeline for LogDetail

To Do

As a frontend developer, implement the LogDetailTimeline section for the LogDetail page. This section renders a 4-step incident timeline using the milestonesData array with entries: 'Log Entry Created' (Clock icon, ltl-node--created), 'Alert Triggered' (AlertTriangle icon, ltl-node--alert, ltl-card--alert highlight), 'Alert Acknowledged' (CheckCircle2 icon, ltl-node--acknowledged), and 'Issue Resolved' (CircleCheckBig icon, ltl-node--resolved). Uses a formatDuration() utility to compute human-readable elapsed time (e.g. '1m 51s') between consecutive milestone timestamps using Date arithmetic. Animation is IntersectionObserver-gated via sectionRef and hasAnimated state — on first intersection, GSAP animates ltl-milestone, ltl-card, and ltl-node elements from opacity 0 / x: -20 with stagger. The ArrowRight icon is used for duration connectors between milestones. Badge classes (ltl-badge--created, ltl-badge--alert, etc.) style each milestone distinctly.

Depends on:#47
Waiting for dependencies
AI 87%
Human 13%
High Priority
1 day
Frontend Developer
#51

Implement LogDetailRelated for LogDetail

To Do

As a frontend developer, implement the LogDetailRelated section for the LogDetail page. This section renders a list of 9 related log entries from the RELATED_ENTRIES constant, grouped into three relation categories: 'preceding' (3 entries: pool limit warning, slow query, health check), 'error' (3 critical entries: ERR_AUTH_FAILURE x2, ERR_CONN_REFUSED), and 'subsequent' (3 info entries: pool recovery, rate normalization, health restored). Uses useState to manage an active filter tab between relation groups. getSeverityIcon() dispatches AlertCircle, AlertTriangle, or Info (all size=13) based on severity string. The Link2 icon is used in the section header. Each log row displays severity icon, log ID, source service, message text, errorCode badge, and timestamp. ArrowRight icon appears on hover for navigation affordance. Severity-specific CSS classes style rows for critical/warning/info differentiation.

Depends on:#47
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#52

Implement LogDetailActions for LogDetail

To Do

As a frontend developer, implement the LogDetailActions section for the LogDetail page. This section renders an action button grid (lda-grid) with 6 action buttons: 'Acknowledge Alert' (lda-btn--primary, Ctrl+A shortcut, handleAcknowledge), 'Mark as Resolved' (lda-btn--accent, Ctrl+R shortcut, handleResolve), 'Assign to Team Member' (handleAssign), 'Add Note' (handleAddNote), 'Export' (handleExport), and 'Create Incident' (handleCreateIncident). Each button has an SVG icon span (lda-btn-icon), a label span (lda-btn-label), and a keyboard shortcut span (lda-btn-shortcut). Uses useState for toast notification state ({ visible, message, type }) with showToast() helper that auto-dismisses after 2500ms via setTimeout. GSAP animates the label (labelRef) and all grid children (gridRef.current.children) from opacity 0 / y offset on mount with 0.06s stagger. Toast renders success (green) or warning (yellow) feedback messages for each action.

Depends on:#47
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#68

Integrate Logs Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Logs page frontend sections and the Logs backend API. Ensure LogsTable fetches paginated log entries from GET /api/logs, LogsFilterSidebar correctly passes filter parameters (level, server, date range, tags, keyword) to API calls, LogsPagination syncs with API total count (847 results), LogsHeader export triggers GET /api/logs/export with correct format, and DashboardRecentLogs widget fetches from GET /api/dashboard/recent-logs. Verify data flows correctly and API responses are handled in the UI.

Depends on:#39#37#40#36#54#67
Waiting for dependencies
AI 40%
Human 60%
High Priority
1 day
Tech Lead
#71

Integrate Users Management Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Users page frontend sections and the Users Management backend API. Ensure UsersTable fetches from GET /api/users with sidebar filter params (role, status, permission, search), UsersDetailPanel loads user detail from GET /api/users/{id}, role and permission changes call PUT /api/users/{id}/permissions, user deletion calls DELETE /api/users/{id} with proper admin RBAC enforcement, and UsersHeader Add/Import/Export actions connect to appropriate endpoints. Verify admin-only access restrictions are enforced in the UI.

Depends on:#23#67#56#24#21#22
Waiting for dependencies
AI 40%
Human 60%
High Priority
1 day
Tech Lead
#72

Integrate Analytics Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Analytics page frontend sections and the Analytics backend API. Ensure AnalyticsOverview fetches metric cards from GET /api/analytics/overview, AnalyticsCharts fetches time-series data from GET /api/analytics/requests and error breakdown from GET /api/analytics/errors-by-server, AnalyticsTable fetches server performance rows from GET /api/analytics/servers with search/pagination, and AnalyticsFilters/AnalyticsHeader date range controls correctly parameterize API calls. Verify chart data updates on range/filter change.

Depends on:#13#12#10#11#58#67#14
Waiting for dependencies
AI 40%
Human 60%
Medium Priority
1 day
Tech Lead
#74

Integrate Profile Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Profile page frontend sections and the User Profile backend API. Ensure ProfileHeader and ProfileInfo load from GET /api/profile and save updates via PUT /api/profile, ProfileSecurity password change calls PUT /api/profile/password and sessions load from GET /api/profile/sessions, ProfileNotifications preferences sync with PUT /api/profile/notifications, ProfilePreferences sync with PUT /api/profile/preferences, and the DangerZone deletion flow calls DELETE /api/profile. Verify validation errors from the API are surfaced in the UI.

Depends on:#41#46#43#45#57#67#44
Waiting for dependencies
AI 40%
Human 60%
Medium Priority
1 day
Tech Lead
#75

Integrate Settings Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Settings page frontend sections and the Settings backend API. Ensure AccountSettings loads/saves via GET+PUT /api/settings/account including profile picture upload, NotificationSettings toggles sync with PUT /api/settings/notifications, PreferenceSettings saves via PUT /api/settings/preferences, SecuritySettings password/session/2FA actions call the correct security endpoints, and DangerZone account deletion is protected with double confirmation and calls DELETE /api/profile. Verify all save feedback toasts display correctly on API response.

Depends on:#35#33#34#31#60#67#32
Waiting for dependencies
AI 40%
Human 60%
Medium Priority
1 day
Tech Lead
#76

Integrate Dashboard Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Dashboard page frontend sections and the Dashboard Summary backend API. Ensure DashboardQuickStats animates real values from GET /api/dashboard/stats, DashboardAlertsSummary badge counts come from GET /api/dashboard/alerts-summary, DashboardRecentLogs table fetches from GET /api/dashboard/recent-logs, and DashboardSupervisorWidget shows live pending recommendations from GET /api/dashboard/supervisor-widget. Verify the DashboardWelcomeBanner reflects authenticated user's name from the auth token/profile.

Depends on:#61#5#8#6#7#4#3#67
Waiting for dependencies
AI 40%
Human 60%
High Priority
0.5 days
Tech Lead
#19

Implement AlertsDetail for Alerts

To Do

As a frontend developer, implement the AlertsDetail section for the Alerts page. This section renders a detailed alert panel for `ALT-2026-0615-0042` ('High Memory Usage on api-gateway-03', severity: critical). Uses `useState` for active tab tracking across 5 tabs: Details, Timeline, Resources, Related, History. Uses `useRef` and `useEffect` with GSAP for tab content transition animations. The Details tab shows full message, stack trace lines typed as 'error'/'file'/'number' with distinct styling, and metadata (source, status, acknowledgedBy, created, lastUpdated). The Timeline tab renders 6 `eventTimeline` entries each with time, severity badge, title, and description. The Resources tab displays 4 `affectedResources` (EC2 Instance, EKS Node Group, ElastiCache, RDS Instance) with status indicators (down/degraded/ok). Related and History tabs show linked alerts and audit log. References `AlertsDetail.css` for `.ad-root`, `.ad-tabs`, `.ad-tab-btn`, `.ad-tab-content`, `.ad-stack-trace`, `.ad-timeline`, `.ad-resource-row`, severity color classes.

Depends on:#18
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#20

Implement AlertsActions for Alerts

To Do

As a frontend developer, implement the AlertsActions section for the Alerts page. This section renders a bulk-action toolbar with `useState` tracking `selectedCount` (0–12) against `totalAlerts = 12`. Includes a `aa-select-row` with a custom accessible checkbox (`role='checkbox'`, `aria-checked`, `tabIndex=0`, keyboard handler for Enter/Space via `onKeyDown`) that toggles all selection via `handleToggleAll`. Displays `aa-selected-count` text ('N selected') and a conditional `aa-clear-link` button (hidden via `aa-clear-link--hidden` when nothing selected) that calls `handleClearSelection`. Below an `aa-divider` hr, renders `aa-actions-row` with three buttons: 'Acknowledge Selected' (primary, disabled when no selection, SVG checkmark icon), 'Delete' (accent, disabled when no selection, SVG trash icon with lid and lines), and 'Snooze' (secondary, always enabled, clock SVG icon). References `AlertsActions.css` for `.aa-root`, `.aa-select-row`, `.aa-select-all`, `.aa-checkbox`, `.aa-checkbox--checked`, `.aa-selected-count`, `.aa-clear-link`, `.aa-divider`, `.aa-actions-row`, `.aa-btn`, `.aa-btn--primary`, `.aa-btn--accent`, `.aa-btn--secondary`, `.aa-btn-icon`.

Depends on:#18
Waiting for dependencies
AI 90%
Human 10%
Medium Priority
0.5 days
Frontend Developer
#69

Integrate LogDetail Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the LogDetail page frontend sections and the Logs backend API. Ensure LogDetailHeader fetches log metadata from GET /api/logs/{id}, LogDetailContent renders the actual log payload from the API response, LogDetailMetadata displays correct server/environment/tag data from the API, LogDetailRelated fetches from GET /api/logs/{id}/related, LogDetailTimeline milestones are driven by real timestamps, and LogDetailActions (Acknowledge/Resolve) POST to the appropriate alerts endpoints. Verify all sections handle loading and error states.

Depends on:#47#49#51#52#48#50#67#54
Waiting for dependencies
AI 40%
Human 60%
Medium Priority
1 day
Tech Lead
#73

Integrate Supervisor Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Supervisor page frontend sections and the Supervisor Recommendations backend API. Ensure SupervisorRecommendations fetches from GET /api/supervisor/recommendations with active filter/sort params from SupervisorHeader, SupervisorApprovalModal loads detail from GET /api/supervisor/recommendations/{id} and POSTs to approve/reject endpoints, SupervisorHistory loads from GET /api/supervisor/history, and DashboardSupervisorWidget reflects live pending count. Verify admin RBAC is enforced for approval actions.

Depends on:#67#26#59#28#25#27
Waiting for dependencies
AI 40%
Human 60%
High Priority
1 day
Tech Lead
#70

Integrate Alerts Page Backend

To Do

As a Tech Lead, verify the end-to-end integration between the Alerts page frontend sections and the Alerts backend API. Ensure AlertsHeader stats cards fetch from GET /api/alerts/stats, AlertsList fetches from GET /api/alerts with filters from AlertsFilters, AlertsDetail fetches full alert detail from GET /api/alerts/{id}, AlertsActions (acknowledge/delete/snooze) call the correct API endpoints, and real-time alert updates arrive via WebSocket and update the UI. Verify DashboardAlertsSummary widget reflects live counts.

Depends on:#20#17#18#19#55#67#16
Waiting for dependencies
AI 40%
Human 60%
High Priority
1 day
Tech Lead
Landing design preview
Landing: View Info
Login: Sign In
Dashboard: View Analytics
Analytics: View Reports
Alerts: Configure Thresholds
Alerts: Set Criteria
Users: Manage Access
Users: Edit Permissions
Supervisor: View Recommendations
Supervisor: Approve Actions
Settings: Configure System