'use client'; import { ArrowRight } from 'lucide-react'; import { Reveal } from '@/components/ui/Reveal'; import { SectionHeader } from '@/components/ui/SectionHeader'; import { Card } from '@/components/ui/Card'; const LAYERS = [ { title: 'Next.js Dashboard', description: 'Single-page workflow UI with section-based navigation and live pipeline state.', }, { title: 'FastAPI Service Layer', description: 'Versioned `/api/v1` routes with legacy compatibility, middleware, and service boundaries.', }, { title: 'Repository Layer', description: 'SQLite persistence for conversations, processing jobs, and follow-up alerts.', }, { title: 'Worker Boundary', description: 'Audio and ML workers process queued jobs independently from the API process.', }, ]; const FLOW = [ 'Client uploads audio', 'File stored in uploads/audio', 'Job written to SQLite', 'Worker transcribes & diarizes', 'Features extracted via LLaMA', 'Prediction scored via XGBoost', 'Results polled by frontend', ]; export function SystemArchitectureSection() { return (

Architecture layers

    {LAYERS.map((layer, index) => (
  1. {index + 1} {layer.title}

    {layer.description}

  2. ))}

Audio processing flow

    {FLOW.map((step, index) => (
  1. {index + 1} {step} {index < FLOW.length - 1 && ( )}
  2. ))}

Persistent storage

  • uploads/audio/
  • uploads/reports/
  • database/nexus_ai.db
  • logs/nexus_ai.log
); }