{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" }, "Database": { "MinimumLevel": "Warning", "ExcludedCategories": [ "Microsoft.EntityFrameworkCore", "Npgsql", "Microsoft.AspNetCore.Hosting.Diagnostics", "Microsoft.AspNetCore.Routing", "ROLAC.API.Services.Logging", "ROLAC.API.Data.Logging" ] } }, "AllowedHosts": "*", "Jwt": { "Issuer": "rolac-api", "Audience": "rolac-client", "AccessTokenExpiryMinutes": "15", "RefreshTokenExpiryDays": "30" }, "Cors": { "AllowedOrigins": [ "http://localhost:4200", "https://localhost:4200" ] }, "Storage": { "LocalRoot": "App_Data/storage" }, "Smtp": { "Host": "", "Port": 587, "UseSsl": true, "User": "", "Password": "", "FromAddress": "noreply@rolac.org", "FromName": "River of Life Christian Church" }, "Line": { "ChannelAccessToken": "", "ChannelSecret": "" }, "Gemini": { "ApiKey": "", "Model": "gemini-2.5-flash-lite", "BaseUrl": "https://generativelanguage.googleapis.com/v1beta" }, "Claude": { "ApiKey": "", "Model": "claude-haiku-4-5-20251001", "BaseUrl": "https://api.anthropic.com/v1", "AnthropicVersion": "2023-06-01" }, "Ai": { "Provider": "Claude" }, "CheckPrint": { "//": "Field coordinates (inches) for pre-printed three-stub check stock. X = from page left edge; OffsetY = within the field's stub, added to the stub origin. Tune to match your stock, then restart — no recompile.", "Layout": { "//cal": "TextInset* compensates for the fixed inset the TextBox adds around its text so configured X/Y == actual ink. To recalibrate, set both to 0, print, measure the drift past a known X/Y, and enter the differences here.", "TextInsetX": 0.13, "TextInsetY": 0.15, "CheckOriginY": 0.0, "Receipt1OriginY": 3.67, "Receipt2OriginY": 7.33, "Payee": { "X": 1.1, "OffsetY": 1.35, "FontSize": 11, "Bold": true }, "AmountNumeric": { "X": 7.0, "OffsetY": 1.35, "FontSize": 12, "Bold": true }, "AmountWords": { "X": 0.30, "OffsetY": 1.67, "FontSize": 10 }, "Memo": { "X": 0.60, "OffsetY": 2.85, "FontSize": 9 }, "CheckDate": { "X": 7.00, "OffsetY": 0.90, "FontSize": 10 }, "ReceiptPayee": { "X": 1.00, "OffsetY": 0.30, "FontSize": 10, "Bold": true }, "ReceiptAmount": { "X": 6.50, "OffsetY": 0.30, "FontSize": 10, "Bold": true }, "ReceiptMemo": { "X": 1.00, "OffsetY": 0.60, "FontSize": 9 }, "ReceiptDate": { "X": 6.50, "OffsetY": 0.60, "FontSize": 9 }, "Grid": { "OriginX": 0.60, "OffsetY": 1.10, "RowHeight": 0.22, "ColumnGap": 0.30, "DateWidth": 0.85, "DescWidth": 2.10, "AmountWidth": 0.80, "ShowGridHeaders": true, "HeaderOffsetY": 0.88, "OverflowOffsetY": 2.55, "FontSize": 8.5 } } } }