nexus-scribe-core

Core types, configuration, and error handling for the NexusScribe platform.

Overview

This crate provides the foundational types and utilities used throughout the NexusScribe ecosystem.

Key Types

User

pub struct User {
    pub id: Uuid,
    pub organization_id: Option<Uuid>,
    pub email: String,
    pub display_name: String,
    pub role: UserRole,
    pub mfa_enabled: bool,
    pub email_verified: bool,
    pub created_at: DateTime<Utc>,
    pub updated_at: DateTime<Utc>,
}

pub enum UserRole {
    Admin,
    Editor,
    Viewer,
    Guest,
    User,
}

Meeting

pub struct Meeting {
    pub id: Uuid,
    pub title: String,
    pub description: Option<String>,
    pub host_user_id: Uuid,
    pub status: MeetingStatus,
    pub privacy_level: PrivacyLevel,
    pub recording_enabled: bool,
    pub started_at: Option<DateTime<Utc>>,
    pub ended_at: Option<DateTime<Utc>>,
    pub duration_seconds: Option<i32>,
}

pub enum MeetingStatus {
    Scheduled,
    Active,
    Paused,
    Completed,
    Cancelled,
}

TranscriptSegment

pub struct TranscriptSegment {
    pub id: Uuid,
    pub meeting_id: Uuid,
    pub speaker_id: Option<Uuid>,
    pub start_time_ms: i64,
    pub end_time_ms: i64,
    pub text: String,
    pub confidence: f32,
    pub language: String,
    pub is_final: bool,
}

Configuration

AppConfig

pub struct AppConfig {
    pub server: ServerConfig,
    pub database: DatabaseConfig,
    pub auth: AuthConfig,
    pub transcription: TranscriptionConfig,
    pub email: EmailConfig,
    pub storage: StorageConfig,
    pub compliance: ComplianceConfig,
}

Load configuration:

use nexus_scribe_core::AppConfig;

let config = AppConfig::load("config/default.toml")?;

Error Handling

pub enum Error {
    Config(String),
    Database(String),
    Auth(String),
    NotFound(String),
    Validation(String),
    Internal(String),
}

pub type Result<T> = std::result::Result<T, Error>;

Usage

[dependencies]
nexus-scribe-core = { path = "../nexus-scribe-core" }
use nexus_scribe_core::{User, UserRole, Meeting, Result};