Skip to content

feat: overhaul category architecture with envelope budgeting and 3-level hierarchy - #104

Merged
MF-Rozi merged 11 commits into
masterfrom
feat/category-overhaul
Aug 20, 2026
Merged

feat: overhaul category architecture with envelope budgeting and 3-level hierarchy#104
MF-Rozi merged 11 commits into
masterfrom
feat/category-overhaul

Conversation

@MF-Rozi

@MF-Rozi MF-Rozi commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Description

What:

  1. Overhauled the category system to implement a three-level hierarchical envelope budgeting model (Pillar -> Sub-Parent -> Envelope).
  2. Extended Category domain entity and CategoryModel with parentId, type (expense/income), expectedMonthlyBudget, and behavioralModifier (active/passive/recurring).
  3. Seeded default Root Pillars for both Expense and Income streams upon local database initialization.
  4. Implemented new UI components: EnvelopeTreeListView, PortfolioDistributionCard, HierarchyInsightCard, and EnvelopeCreationForm.
  5. Updated CategoryCubit and CategoryState to calculate portfolio distributions, aggregate pillar budgets, and manage category creation/editing.
  6. Updated transaction entry and card widgets to adapt to the new category schema.
  7. Updated and expanded unit, bloc, use case, entity, model, repository, and widget test suites.

How:

  1. Replaced parentUuid with parentId (type UniqueId?) in Category and CategoryModel with appropriate Isar indexes.
  2. Built reactive UI components in lib/features/category/presentation/widgets/ matching the new design specs.
  3. Enhanced CategoryCubit with filtering, parent-child tree mapping, and dynamic budget calculations.
  4. Migration note: Any code referencing parentUuid should migrate to parentId. Instantiating Category now requires specifying type, expectedMonthlyBudget, and behavioralModifier.

Why:

  1. Supports envelope budgeting workflows with visual hierarchy and portfolio distribution insights.
  2. Unifies category architecture into a structured 3-level hierarchy that supports aggregation and sub-envelope allocation.

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore

Code Checklist

  • Tested with fvm flutter test (all 97 tests passing) and verified clean analysis with fvm flutter analyze.

@MF-Rozi
MF-Rozi merged commit b5d9f5a into master Aug 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant