syntaxis/docs/config.md
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

480 lines
8.2 KiB
Markdown

# Configuration Guide
Complete reference for configuring SYNTAXIS components.
## Configuration Location
All configuration files are in: `~/.config/syntaxis/`
```bash
~/.config/syntaxis/
├── syntaxis-cli.toml # CLI settings
├── syntaxis-tui.toml # TUI keybindings and colors
├── syntaxis-api.toml # API server configuration
├── database-default.toml # SQLite settings
├── database-surrealdb.toml # SurrealDB settings (optional)
└── api/features/ # Optional feature configs
├── auth.toml.template
├── database.toml.template
├── logging.toml.template
└── metrics.toml.template
```
## Environment Variables
Set these before running SYNTAXIS:
```bash
# Core settings
export SYNTAXIS_CONFIG_DIR="$HOME/.config/syntaxis"
export SYNTAXIS_DATA_DIR="$HOME/.local/share/syntaxis"
# Database selection
export SYNTAXIS_DATABASE="default" # or "surrealdb"
# Logging
export RUST_LOG="debug" # or "info", "warn", "error"
# API server
export SYNTAXIS_API_PORT=3000
export SYNTAXIS_API_HOST=127.0.0.1
```
---
## CLI Configuration (syntaxis-cli.toml)
```toml
[general]
# Output format: json, yaml, table, plain
output_format = "table"
# Enable verbose output
verbose = false
# Color output
use_colors = true
[database]
# Database backend: sqlite (default) or surrealdb
backend = "sqlite"
# SQLite file location (relative to SYNTAXIS_DATA_DIR)
sqlite_path = "syntaxis.db"
[api]
# Connect to remote API server (optional)
# If not set, uses local database
server_url = "" # e.g., "http://localhost:3000"
[pagination]
# Default items per page
items_per_page = 20
```
### Common Settings
- `output_format`: Output style for list commands (table shows columns, json is machine-readable)
- `verbose`: Show detailed output for all commands
- `use_colors`: Colorize output (disable on systems without color support)
---
## TUI Configuration (syntaxis-tui.toml)
### Navigation Keybindings
```toml
[keybindings]
# Navigation (vim-style by default)
move_up = "k"
move_down = "j"
move_left = "h"
move_right = "l"
# Actions
select = "Enter"
insert = "i"
edit = "e"
delete = "d"
save = ":w"
quit = ":q"
search = "/"
```
### Colors
```toml
[colors]
# Color scheme: light, dark, solarized
theme = "dark"
# Specific colors (ANSI or hex)
[colors.foreground]
default = "white"
success = "green"
warning = "yellow"
error = "red"
info = "blue"
[colors.background]
default = "black"
highlight = "dark_gray"
```
### Behavior
```toml
[behavior]
# Enable mouse support
enable_mouse = true
# Auto-save on exit
auto_save = true
# Confirm before delete
confirm_delete = true
# Show help on startup
show_help = false
# Default view on startup
startup_view = "projects"
```
---
## API Configuration (syntaxis-api.toml)
### Server Settings
```toml
[server]
# Listen address and port
host = "127.0.0.1"
port = 3000
# Enable CORS for web dashboards
cors_enabled = true
cors_origins = ["http://localhost:8080", "http://localhost:3000"]
# Request logging
log_requests = true
# Max request body size (bytes)
max_body_size = 1048576 # 1 MB
```
### Database Configuration
```toml
[database]
# Backend: sqlite (default) or surrealdb
backend = "sqlite"
[database.sqlite]
# SQLite file path
path = "syntaxis.db"
# Connection pool size
pool_size = 5
# Enable WAL mode for better concurrency
wal_mode = true
[database.surrealdb]
# SurrealDB connection URL
url = "file:///tmp/syntaxis.db" # or "http://localhost:8000"
# Authentication
username = "root"
password = "root"
# Database namespace and name
namespace = "syntaxis"
database = "syntaxis"
```
### Features
```toml
[features]
# Enable authentication
auth_enabled = false
# Enable API metrics
metrics_enabled = true
# Enable request logging
logging_enabled = true
```
### Performance
```toml
[performance]
# Request timeout (seconds)
request_timeout = 30
# Cache TTL (seconds)
cache_ttl = 300
# Max concurrent requests
max_concurrent = 100
# Connection pool size
pool_size = 10
```
---
## Database Configuration
### SQLite (Default)
SQLite is the default database backend, ideal for single-user and small team deployments:
```toml
[database]
type = "sqlite"
path = "syntaxis.db"
[database.connection]
pool_size = 5
max_connections = 20
wal_mode = true # Write-Ahead Logging for concurrency
journal_mode = "WAL"
synchronous = "NORMAL" # Balance between safety and speed
[migrations]
auto_migrate = true # Run migrations automatically on startup
```
**When to use SQLite**:
- Single developer workflows
- Local development
- Small team collaboration (< 5 users)
### SurrealDB (Optional)
SurrealDB provides multi-backend support for team deployments:
```toml
[database]
type = "surrealdb"
url = "file:///path/to/db" # or "http://localhost:8000"
namespace = "syntaxis"
database = "syntaxis"
[credentials]
username = "root"
password = "root"
[connection]
pool_size = 10
timeout = 30
tls_enabled = false # Enable for production remote connections
```
**When to use SurrealDB**:
- Team deployments
- Multi-user concurrent access
- Remote database servers
- Kubernetes/container deployments
---
## Configuration Best Practices
### Development Setup
```toml
# syntaxis-cli.toml (dev)
output_format = "table"
verbose = true
use_colors = true
# syntaxis-api.toml (dev)
log_requests = true
cors_origins = ["http://localhost:3000", "http://localhost:8080"]
[features]
metrics_enabled = true
logging_enabled = true
```
### Production Setup
```toml
# syntaxis-cli.toml (prod)
output_format = "json"
verbose = false
# syntaxis-api.toml (prod)
cors_origins = ["https://app.example.com"]
auth_enabled = true
log_requests = false # Reduce overhead
[performance]
request_timeout = 60
pool_size = 20
```
---
## Customization Examples
### Change Database Backend
Switch from SQLite to SurrealDB:
1. **Edit syntaxis-cli.toml**:
```toml
[database]
backend = "surrealdb"
```
2. **Edit syntaxis-api.toml**:
```toml
[database]
backend = "surrealdb"
[database.surrealdb]
url = "http://localhost:8000"
username = "root"
password = "root"
```
3. **Start SurrealDB server** (separate process):
```bash
surreal start --bind 127.0.0.1:8000 file:///tmp/syntaxis.db
```
4. **Restart applications**:
```bash
syntaxis-api
```
### Enable API Authentication
1. **Copy auth template**:
```bash
cp ~/.config/syntaxis/api/features/auth.toml.template \
~/.config/syntaxis/api/features/auth.toml
```
2. **Set a secure secret**:
```bash
# Edit auth.toml and set a strong secret (e.g., generate with: openssl rand -hex 32)
```
3. **Enable in syntaxis-api.toml**:
```toml
[features]
auth_enabled = true
```
### Change API Port
```bash
# Edit syntaxis-api.toml
[server]
port = 8000
# Or use environment variable
export SYNTAXIS_API_PORT=8000
syntaxis-api
```
---
## Verification
### Check Configuration Files
```bash
# List all config files
ls ~/.config/syntaxis/
# View a configuration
cat ~/.config/syntaxis/syntaxis-cli.toml
```
### Validate TOML Syntax
```bash
# Check for syntax errors (with rust installed)
cargo install toml-lint
toml-lint ~/.config/syntaxis/*.toml
```
### Test with Applications
```bash
# Test CLI
syntaxis-cli --debug project list
# Test TUI
syntaxis-tui
# Test API
syntaxis-api &
curl http://localhost:3000/health
```
---
## Troubleshooting Configuration
### Config Files Not Found
```bash
# Create config directory
mkdir -p ~/.config/syntaxis
# Copy from bundle
cp configs/*.toml ~/.config/syntaxis/
```
### Invalid TOML Syntax
Check for common issues:
- Missing quotes around string values
- Mismatched brackets `[section]` vs `[[array]]`
- Invalid characters or control codes
- Tabs vs spaces (TOML requires spaces)
Fix by editing with a text editor:
```bash
nano ~/.config/syntaxis/syntaxis-cli.toml
```
### Changes Not Applied
Configuration is loaded at startup:
```bash
# Restart the application
pkill syntaxis-api
sleep 2
syntaxis-api
# Or explicitly set config directory
export SYNTAXIS_CONFIG_DIR=~/.config/syntaxis
syntaxis-api
```
---
## Next Steps
- See [QUICK_START.md](QUICK_START.md) for basic usage
- See [docs/installation.md](docs/installation.md) for installation help
- See [TROUBLESHOOTING.md](TROUBLESHOOTING.md) for common issues
- Visit https://doc.syntaxis.dev for online documentation
---
**SYNTAXIS** v0.1.0 [syntaxis.dev](https://syntaxis.dev)