Configuration
Runtime configuration is stored in the app_settings PostgreSQL table as key-value pairs with JSONB values. These are seeded during migration 000007_create_app_settings.
Settings Keys
company
ProximaOps company details used in invoice templates.
{
"name": "PROXIMAOPS LLC",
"name_ru": "ООО «PROXIMAOPS»",
"tin": "309630523",
"mfo": "00974",
"address": "Uzbekistan, Tashkent",
"director": "Director Name",
"accountant": "Accountant Name"
}
bank
Banking details for invoice payment instructions.
{
"name": "Капиталбанк",
"account_uzs": "20208000005538739001",
"swift": "KACHUZ22",
"correspondent_account": ""
}
planfact
PlanFact accounting integration settings.
{
"company_id": 146673,
"hourly_product_id": "product-uuid",
"support_product_id": "product-uuid"
}
didox
Didox.uz e-invoicing settings.
{
"seller_tin": "309630523"
}
invoice_defaults
Default values for invoice generation.
{
"min_billable_seconds": 1800,
"default_monthly_limit": 40,
"logo_url": "https://assets.prxm.uz/logo.png"
}
telegram
Telegram notification settings (disabled by default).
{
"enabled": false,
"bot_token": "",
"chat_id": ""
}
r2
Cloudflare R2 storage settings.
{
"bucket": "proxima-invoices",
"public_domain": "invoices.prxm.uz"
}
calculator
Pricing calculator defaults (Phase 5).
{
"target_margin": 0.60,
"min_margin": 0.30,
"social_tax_multiplier": 1.075,
"sla_tiers": ["standard", "extended", "24x7"],
"discount_tiers": [0, 5, 10, 15]
}
Updating Settings
Settings can be updated directly in PostgreSQL:
UPDATE app_settings
SET value = '{"name": "PROXIMAOPS LLC", "tin": "309630523"}'::jsonb,
updated_at = NOW(),
updated_by = 'admin'
WHERE key = 'company';
A management API for settings is planned for a future phase.