## ADDED Requirements ### Requirement: SQLite Database Support The backend SHALL support SQLite as an alternative to MySQL for offline/standalone deployments. #### Scenario: SQLite mode initialization - **WHEN** `database.type` is set to `"sqlite"` in config.json - **THEN** backend SHALL create SQLite database at `database.sqlitePath` - **AND** initialize all required tables using SQLite-compatible syntax #### Scenario: MySQL mode initialization - **WHEN** `database.type` is set to `"mysql"` or not specified in config.json - **THEN** backend SHALL connect to MySQL using credentials from `database` section - **AND** behave exactly as before this change #### Scenario: SQLite thread safety - **WHEN** multiple concurrent requests access SQLite database - **THEN** backend SHALL use thread lock to serialize database operations - **AND** use `check_same_thread=False` for SQLite connection #### Scenario: SQLite data persistence - **WHEN** app is closed and reopened - **THEN** all meeting data SHALL persist in SQLite file - **AND** be accessible on next launch ### Requirement: Portable Extraction Path Configuration The portable Windows build SHALL extract to a predictable folder name. #### Scenario: Fixed extraction folder - **WHEN** portable executable starts - **THEN** it SHALL extract to `%TEMP%\Meeting-Assistant` instead of random UUID folder #### Scenario: Windows Defender consistency - **WHEN** user launches portable executable multiple times - **THEN** Windows Defender SHALL NOT prompt for permission each time - **BECAUSE** extraction path is consistent across launches ## MODIFIED Requirements ### Requirement: Unified Configuration Schema All configuration for frontend, backend, and whisper SHALL be in a single `config.json` file. #### Scenario: Backend configuration loading - **WHEN** backend sidecar starts - **THEN** it SHALL read database type from `config.json` backend.database.type section - **AND** read SQLite path from `config.json` backend.database.sqlitePath section (if SQLite mode) - **AND** read database credentials from `config.json` backend.database section (if MySQL mode) - **AND** read API keys from `config.json` backend.externalApis section - **AND** read auth settings from `config.json` backend.auth section #### Scenario: Configuration priority - **WHEN** both environment variable and config.json value exist - **THEN** environment variable SHALL take precedence #### Scenario: Default values - **WHEN** configuration value is not specified - **THEN** system SHALL use sensible defaults (host: 127.0.0.1, port: 8000, database.type: mysql)