Business logic extraction to service layers #12

Closed
opened 2026-05-16 10:13:23 -05:00 by null · 0 comments
Owner

Already implemented in v0.28.0.

All business logic referenced in this issue has been extracted to service layers:

  • billsService.js — parseDueDay(), parseInterestRate(), validateBillData(), isDebtBill(), sanitizeTemplateData(), categoryBelongsToUser(), insertBill(), billAuditIssue(), computeBalanceDelta()
  • trackerService.js — getTracker(), getUpcomingBills(), date validation, month offset logic
  • analyticsService.js — monthKey(), monthLabel(), addMonths(), monthEndDate(), getAnalyticsSummary()
  • statusService.js — resolveDueDate(), resolveBucket(), getCycleRange(), calculateStatus(), buildTrackerRow()

Routes import from services and contain no business logic. Other services already existed: authService.js, oidcService.js, cleanupService.js, aprService.js, snowballService.js, backupService.js, notificationService.js, paymentValidation.js, userSettings.js

Files: services/*.js

**Already implemented in v0.28.0.** All business logic referenced in this issue has been extracted to service layers: - **billsService.js** — parseDueDay(), parseInterestRate(), validateBillData(), isDebtBill(), sanitizeTemplateData(), categoryBelongsToUser(), insertBill(), billAuditIssue(), computeBalanceDelta() - **trackerService.js** — getTracker(), getUpcomingBills(), date validation, month offset logic - **analyticsService.js** — monthKey(), monthLabel(), addMonths(), monthEndDate(), getAnalyticsSummary() - **statusService.js** — resolveDueDate(), resolveBucket(), getCycleRange(), calculateStatus(), buildTrackerRow() Routes import from services and contain no business logic. Other services already existed: authService.js, oidcService.js, cleanupService.js, aprService.js, snowballService.js, backupService.js, notificationService.js, paymentValidation.js, userSettings.js Files: services/*.js
null added the
architecture
backend
labels 2026-05-16 10:13:23 -05:00
null closed this issue 2026-05-16 15:38:32 -05:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: null/BillTracker#12
No description provided.