Skip to main content

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.