Cashflow App

Features & Capabilities

Cashflow App - Features & Capabilities Report

Template Version: 1.0.0 Generated: 2026-01-22 Package: @epicdm/flowstate-app-cashflow App ID: cashflow


Table of Contents

  1. Overview
  2. App Identity
  3. Feature Categories
  4. Capabilities
  5. Data Models
  6. User Workflows
  7. Integration Points
  8. Architecture Summary
  9. Quality & Compliance

Overview

Purpose

The Cashflow App is a comprehensive financial tracking and income statement management application for FlowState. It provides real-time visibility into personal or business finances through a 4-quadrant income statement dashboard, account management, transaction tracking, scheduled transactions with cash flow projections, and seamless YNAB integration for data synchronization.

Target Users

User TypeDescriptionPrimary Use Cases
Personal Finance UsersIndividuals managing household financesTrack income/expenses, monitor net worth, budget
YNAB UsersExisting YNAB users wanting enhanced reportingSync data, advanced income statement views
Small Business OwnersEntrepreneurs tracking business financesIncome statements, cash flow projections
Household ManagersPeople managing family financesMulti-account tracking, bill scheduling

Value Proposition

  • 4-Quadrant Income Statement: Visual dashboard showing Income, Expenses, Assets, and Liabilities
  • YNAB Integration: Seamless OAuth sync with existing YNAB budgets and accounts
  • Cash Flow Projections: 30-day forward-looking projections from scheduled transactions
  • Guided Setup Wizard: Multi-step wizard for easy onboarding (manual or YNAB import)
  • Flexible Period Views: Monthly, quarterly, and annual period filtering
  • Real-time Net Worth: Automatic calculation from asset and liability accounts
  • Category Management: Customizable hierarchical categories for transaction organization
  • CSV Import: Bulk transaction import from bank exports

App Identity

PropertyValue
IDcashflow
Display NameCashflow App
Package Name@epicdm/flowstate-app-cashflow
Version1.0.0
Categorytechnical
Iconbox
Color#6366f1
Base Path/cashflow
Permissionsdatabase

Entry Points

Entry PointPathDescription
Main Exportsrc/index.tsPrimary package export
Standalonesrc/standalone.tsxStandalone app entry
App Componentsrc/App.tsxMain React component with routing
Pluginsrc/plugin.tsFlowState plugin registration

Feature Categories

Category 1: Income Statement Dashboard

Core financial dashboard with 4-quadrant layout

Feature: 4-Quadrant Dashboard

PropertyDetails
IDdashboard-quadrants
StatusImplemented
PriorityHigh

Description: Main dashboard displaying income statement data in a 4-quadrant layout: Income (top-left), Assets (top-right), Expenses (bottom-left), and Liabilities (bottom-right). Includes net worth summary and cash flow overview.

User Story: As a user, I want to see my financial position at a glance so that I can understand my income, expenses, and net worth.

Acceptance Criteria:

  • [x] Display income quadrant with period totals
  • [x] Display expense quadrant with budgeted vs actual
  • [x] Display assets quadrant with account balances
  • [x] Display liabilities quadrant with debt balances
  • [x] Show net worth summary
  • [x] Show cash flow summary (income - expenses)

Implementation:

ComponentPathPurpose
DashboardPagesrc/pages/DashboardPage.tsxMain dashboard page
IncomeQuadrantsrc/components/dashboard/IncomeQuadrant.tsxIncome display
ExpenseQuadrantsrc/components/dashboard/ExpenseQuadrant.tsxExpense display
AssetsQuadrantsrc/components/dashboard/AssetsQuadrant.tsxAssets display
LiabilitiesQuadrantsrc/components/dashboard/LiabilitiesQuadrant.tsxLiabilities display
NetWorthSummarysrc/components/dashboard/NetWorthSummary.tsxNet worth card
usePeriodIncomesrc/hooks/usePeriodIncome.tsIncome calculations
usePeriodExpensessrc/hooks/usePeriodExpenses.tsExpense calculations

Routes:

  • /dashboard - Main dashboard (default route)

Feature: Period Navigation

PropertyDetails
IDperiod-navigation
StatusImplemented
PriorityHigh

Description: Navigate between monthly, quarterly, and annual periods with forward/back controls. Data automatically filters to the selected period.

User Story: As a user, I want to view my finances by different time periods so that I can track trends over time.

Acceptance Criteria:

  • [x] Toggle between monthly, quarterly, annual views
  • [x] Navigate forward/backward in time
  • [x] Display current period label
  • [x] Filter all dashboard data by selected period

Implementation:

ComponentPathPurpose
DashboardPagesrc/pages/DashboardPage.tsxPeriod state management
getDateRangesrc/pages/DashboardPage.tsxDate range calculation

Category 2: Account Management

Track and manage financial accounts

Feature: Account CRUD Operations

PropertyDetails
IDaccount-crud
StatusImplemented
PriorityHigh

Description: Create, view, edit, and delete financial accounts including checking, savings, credit cards, loans, and other account types.

User Story: As a user, I want to manage my accounts so that I can track balances across all my financial institutions.

Acceptance Criteria:

  • [x] Create accounts with name, type, and initial balance
  • [x] View accounts in grouped list (assets/liabilities)
  • [x] Edit account details
  • [x] Delete/close accounts
  • [x] Track cleared and uncleared balances
  • [x] Support debt-specific fields (interest rate, minimum payment)

Implementation:

ComponentPathPurpose
AccountsPagesrc/pages/AccountsPage.tsxAccount list page
AccountDetailPagesrc/pages/AccountDetailPage.tsxAccount details
AccountListsrc/components/accounts/AccountList.tsxAccount listing
AccountCardsrc/components/accounts/AccountCard.tsxAccount display card
AddAccountModalsrc/components/accounts/AddAccountModal.tsxCreate account
EditAccountModalsrc/components/accounts/EditAccountModal.tsxEdit account
DebtFieldsSectionsrc/components/accounts/DebtFieldsSection.tsxDebt-specific fields
useAccountssrc/hooks/useAccounts.tsAccount operations

Routes:

  • /accounts - Account list
  • /accounts/:accountId - Account detail with transactions

Category 3: Transaction Management

Track and categorize financial transactions

Feature: Transaction List & Filtering

PropertyDetails
IDtransaction-list
StatusImplemented
PriorityHigh

Description: View all transactions with comprehensive filtering by date range, account, category, amount, and cleared status. Includes search functionality.

User Story: As a user, I want to view and filter my transactions so that I can find specific transactions and understand spending patterns.

Acceptance Criteria:

  • [x] Display transactions in sortable list
  • [x] Filter by date range
  • [x] Filter by account
  • [x] Filter by category
  • [x] Filter by amount range
  • [x] Filter by cleared status
  • [x] Search by payee name
  • [x] Show active filter badges

Implementation:

ComponentPathPurpose
TransactionsPagesrc/pages/TransactionsPage.tsxTransaction page
TransactionListsrc/components/transactions/TransactionList.tsxTransaction list
TransactionRowsrc/components/transactions/TransactionRow.tsxSingle row
TransactionFilterssrc/components/transactions/TransactionFilters.tsxFilter panel
useTransactionssrc/hooks/useTransactions.tsTransaction queries

Routes:

  • /transactions - Transaction list with filters

Feature: Bulk Category Assignment

PropertyDetails
IDbulk-category-assign
StatusImplemented
PriorityMedium

Description: Select multiple transactions and assign a category to all of them at once for efficient categorization of imported transactions.

User Story: As a user, I want to categorize multiple transactions at once so that I can quickly organize imported transactions.

Acceptance Criteria:

  • [x] Multi-select transactions in list
  • [x] Show selection count
  • [x] Open category assignment modal
  • [x] Apply category to all selected
  • [x] Clear selection after assignment

Implementation:

ComponentPathPurpose
TransactionsPagesrc/pages/TransactionsPage.tsxSelection state
TransactionListsrc/components/transactions/TransactionList.tsxMulti-select UI
CategorySelectorsrc/components/transactions/CategorySelector.tsxCategory picker
useUpdateTransactionsrc/hooks/useTransactions.tsUpdate operations

Feature: CSV Import

PropertyDetails
IDcsv-import
StatusImplemented
PriorityMedium

Description: Import transactions from CSV files exported from banks or other financial software with column mapping wizard.

User Story: As a user, I want to import transactions from CSV so that I can bring in data from my bank.

Acceptance Criteria:

  • [x] Upload CSV file
  • [x] Preview data before import
  • [x] Map CSV columns to transaction fields
  • [x] Validate data before import
  • [x] Create transactions from import

Implementation:

ComponentPathPurpose
CSVImportsrc/components/transactions/CSVImport.tsxImport wizard
TransactionsPagesrc/pages/TransactionsPage.tsxImport integration
useCreateTransactionsrc/hooks/useTransactions.tsCreate operations

Category 4: Budget Management

Create and track budgets

Feature: Budget Display

PropertyDetails
IDbudget-display
StatusImplemented
PriorityMedium

Description: View budgets with their associated accounts, date ranges, and currency information. Supports YNAB-synced budgets.

User Story: As a user, I want to see my budgets so that I can track my spending against planned amounts.

Acceptance Criteria:

  • [x] Display budget cards with key information
  • [x] Show date range (first/last month)
  • [x] Show associated accounts with balances
  • [x] Display currency format
  • [x] Link to budget creation/setup wizard

Implementation:

ComponentPathPurpose
BudgetsPagesrc/pages/BudgetsPage.tsxBudget list page
useBudgetssrc/hooks/useBudgets.tsBudget queries

Routes:

  • /budgets - Budget list

Category 5: Category Management

Organize transactions with categories

Feature: Category CRUD Operations

PropertyDetails
IDcategory-crud
StatusImplemented
PriorityHigh

Description: Create, view, edit, and delete categories organized in category groups. Supports both income and expense categories.

User Story: As a user, I want to manage categories so that I can organize my transactions meaningfully.

Acceptance Criteria:

  • [x] Create categories with name and group
  • [x] View categories grouped by category group
  • [x] Edit category details
  • [x] Delete categories
  • [x] Support income vs expense categorization
  • [x] Provide default category templates

Implementation:

ComponentPathPurpose
CategoriesPagesrc/pages/CategoriesPage.tsxCategory management
CategoryListsrc/components/categories/CategoryList.tsxCategory list
CategoryCardsrc/components/categories/CategoryCard.tsxCategory display
AddCategoryModalsrc/components/categories/AddCategoryModal.tsxCreate category
EditCategoryModalsrc/components/categories/EditCategoryModal.tsxEdit category
useCategoriessrc/hooks/useCategories.tsCategory operations
defaultCategoriessrc/constants/defaultCategories.tsCategory templates

Routes:

  • /categories - Category management

Category 6: Scheduled Transactions

Manage recurring transactions and cash flow projections

Feature: Scheduled Transaction Management

PropertyDetails
IDscheduled-transactions
StatusImplemented
PriorityHigh

Description: View and manage scheduled/recurring transactions with various frequency options (daily, weekly, monthly, etc.). Filter by income or expenses.

User Story: As a user, I want to manage scheduled transactions so that I can track recurring income and expenses.

Acceptance Criteria:

  • [x] Display scheduled transactions in table
  • [x] Show frequency, next date, amount
  • [x] Filter by income/expenses
  • [x] Sort by next date
  • [x] Support multiple frequency options

Implementation:

ComponentPathPurpose
ScheduledTransactionsPagesrc/pages/ScheduledTransactionsPage.tsxScheduled list
useScheduledTransactionssrc/hooks/useScheduledTransactions.tsScheduled queries
frequencyUtilssrc/utils/frequencyUtils.tsFrequency helpers

Routes:

  • /scheduled - Scheduled transactions list

Feature: Cash Flow Projections

PropertyDetails
IDcashflow-projections
StatusImplemented
PriorityHigh

Description: Calculate and display 30-day forward-looking cash flow projections based on scheduled transactions.

User Story: As a user, I want to see projected cash flow so that I can plan for upcoming income and expenses.

Acceptance Criteria:

  • [x] Calculate projected income for 30 days
  • [x] Calculate projected expenses for 30 days
  • [x] Calculate net cash flow
  • [x] Show count of upcoming transactions
  • [x] Display summary cards

Implementation:

ComponentPathPurpose
ScheduledTransactionsPagesrc/pages/ScheduledTransactionsPage.tsxProjections display
useProjectedCashFlowsrc/hooks/useScheduledTransactions.tsProjection calculations

Category 7: YNAB Integration

Sync data with YNAB (You Need A Budget)

Feature: YNAB OAuth Connection

PropertyDetails
IDynab-oauth
StatusImplemented
PriorityHigh

Description: Connect to YNAB using OAuth 2.0 authentication flow. Manage connection status and disconnect when needed.

User Story: As a YNAB user, I want to connect my YNAB account so that I can sync my data into FlowState.

Acceptance Criteria:

  • [x] OAuth connect button
  • [x] Handle OAuth callback
  • [x] Store tokens securely
  • [x] Display connection status
  • [x] Disconnect functionality
  • [x] Show connection timestamp

Implementation:

ComponentPathPurpose
SettingsPagesrc/pages/SettingsPage.tsxConnection UI
YNABCallbackPagesrc/pages/YNABCallbackPage.tsxOAuth callback
useYNABConnectionsrc/hooks/useYNABConnection.tsConnection state
oauthsrc/services/ynab/oauth.tsOAuth logic
tokenStoragesrc/services/ynab/tokenStorage.tsToken management

Routes:

  • /settings - YNAB connection settings
  • /settings/ynab-callback - OAuth callback handler

Feature: YNAB Data Sync

PropertyDetails
IDynab-sync
StatusImplemented
PriorityHigh

Description: Synchronize accounts, categories, transactions, and scheduled transactions from YNAB with configurable polling interval.

User Story: As a user, I want to sync my YNAB data so that I can see my YNAB information in FlowState.

Acceptance Criteria:

  • [x] Select budget to sync
  • [x] Manual sync on demand
  • [x] Background auto-sync with interval
  • [x] Show sync progress and status
  • [x] Display sync results (created/deleted counts)
  • [x] Test sync mode (limited records)
  • [x] Configure polling interval (5-60 minutes)

Implementation:

ComponentPathPurpose
SettingsPagesrc/pages/SettingsPage.tsxSync settings UI
useYNABSyncsrc/hooks/useYNABSync.tsSync orchestration
useYNABBudgetssrc/hooks/useYNABBudgets.tsBudget selection
YNABSyncServicesrc/services/sync/YNABSyncService.tsSync logic
mapperssrc/services/sync/mappers.tsData transformation

Feature: YNAB Import in Setup Wizard

PropertyDetails
IDynab-import-wizard
StatusImplemented
PriorityHigh

Description: Import YNAB data as part of the setup wizard flow for easy onboarding of existing YNAB users.

User Story: As a YNAB user, I want to import my data during setup so that I can quickly get started with FlowState.

Acceptance Criteria:

  • [x] YNAB import path in wizard
  • [x] Budget selection during import
  • [x] Import progress display
  • [x] Import accounts, categories, transactions

Implementation:

ComponentPathPurpose
ChoosePathStepsrc/pages/SetupWizard/steps/ChoosePathStep.tsxPath selection
useYNABImportsrc/hooks/useYNABImport.tsImport operations

Category 8: Setup Wizard

Guided setup for new income statements

Feature: Multi-Step Setup Wizard

PropertyDetails
IDsetup-wizard
StatusImplemented
PriorityHigh

Description: Multi-step wizard guiding users through income statement setup with options for manual creation or YNAB import.

User Story: As a new user, I want a guided setup process so that I can easily configure my income statement.

Acceptance Criteria:

  • [x] Choose path (manual vs YNAB)
  • [x] Basics step (name, description)
  • [x] Categories step (configure categories)
  • [x] Accounts step (add accounts)
  • [x] Income step (configure income sources)
  • [x] Expenses step (configure expense budgets)
  • [x] Review step (confirm and activate)
  • [x] Progress indicator
  • [x] Draft persistence (resume incomplete setup)

Implementation:

ComponentPathPurpose
SetupWizardPagesrc/pages/SetupWizard/SetupWizardPage.tsxWizard container
WizardContextsrc/pages/SetupWizard/WizardContext.tsxWizard state
StepIndicatorsrc/pages/SetupWizard/components/StepIndicator.tsxProgress display
ChoosePathStepsrc/pages/SetupWizard/steps/ChoosePathStep.tsxPath selection
BasicsStepsrc/pages/SetupWizard/steps/BasicsStep.tsxName/description
CategoriesStepsrc/pages/SetupWizard/steps/CategoriesStep.tsxCategory setup
AccountsStepsrc/pages/SetupWizard/steps/AccountsStep.tsxAccount setup
IncomeStepsrc/pages/SetupWizard/steps/IncomeStep.tsxIncome config
ExpensesStepsrc/pages/SetupWizard/steps/ExpensesStep.tsxExpense config
ReviewStepsrc/pages/SetupWizard/steps/ReviewStep.tsxReview/activate
useSetupWizardsrc/hooks/useSetupWizard.tsWizard operations
useIncomeStatementssrc/hooks/useIncomeStatements.tsStatement persistence

Routes:

  • /setup/new - New income statement wizard
  • /setup/:id - Resume draft wizard

Capabilities

Core Capabilities

CapabilityDescriptionImplementation
4-Quadrant DashboardIncome/Expense/Assets/Liabilities viewQuadrantCard components with period filtering
Multi-Account TrackingTrack unlimited financial accountsRxDB collection with typed models
Transaction CategorizationOrganize transactions by categoryHierarchical categories with groups
Cash Flow Projections30-day forward projectionsScheduled transaction calculations
YNAB SynchronizationFull data sync with YNABOAuth + REST API integration

Technical Capabilities

CapabilityStatusNotes
CRUD OperationsYesFull CRUD on all entity types
Real-time UpdatesYesRxDB reactive subscriptions
Offline SupportYesRxDB local-first architecture
Search & FilterYesMulti-field filtering on transactions
SortingYesDate, amount, payee sorting
PaginationPartialInfinite scroll patterns
ExportNoNot currently implemented
NotificationsPartialToast notifications for actions

Integration Capabilities

IntegrationTypeDescription
YNABexternalOAuth-based data synchronization
RxDB ServerinternalReplication for data sync
FlowState FrameworkinternalAuth, org context, layout

Data Models

Collections Used

CollectionDescriptionOperationsPrimary Hook
finAccountsFinancial accountsCRUD, QueryuseAccounts
finBudgetsBudget definitionsCRUD, QueryuseBudgets
finCategoriesTransaction categoriesCRUD, QueryuseCategories
finTransactionsFinancial transactionsCRUD, QueryuseTransactions
finScheduledTransactionsRecurring transactionsCRUD, QueryuseScheduledTransactions
finIncomeStatementsIncome statement configsCRUD, QueryuseIncomeStatements

Entity Relationships

IncomeStatement
    |
    +-- Accounts (hasMany via budget)
    |       |
    |       +-- Transactions (hasMany)
    |
    +-- Categories (hasMany via budget)
    |       |
    |       +-- Transactions (belongsTo)
    |
    +-- ScheduledTransactions (hasMany)

Budget
    |
    +-- Accounts (hasMany)
    |
    +-- Categories (hasMany)
    |
    +-- Transactions (hasMany)

Key Data Flows

User Action --> Component --> Hook --> RxDB Collection --> UI Update
                                  |
                                  +--> YNAB Sync Service
                                  |
                                  +--> Replication --> Server

User Workflows

Workflow 1: Initial Setup (Manual)

Set up first income statement manually

Trigger: Click "New" or navigate to /setup/new

Steps:

StepActionComponentOutcome
1Choose "Manual Setup"ChoosePathStepPath selected
2Enter name/descriptionBasicsStepBasics saved
3Configure categoriesCategoriesStepCategories created
4Add accountsAccountsStepAccounts created
5Set up incomeIncomeStepIncome configured
6Configure expensesExpensesStepBudgets set
7Review and activateReviewStepStatement active

Success Outcome: Income statement created and visible on dashboard Failure Handling: Draft saved, can resume from /setup/:id


Workflow 2: YNAB Connection & Sync

Connect YNAB and sync data

Trigger: Navigate to Settings, click "Connect YNAB"

Steps:

StepActionComponentOutcome
1Click Connect YNABSettingsPageOAuth redirect
2Authorize in YNABExternalToken obtained
3Handle callbackYNABCallbackPageConnection saved
4Select budgetSettingsPageBudget configured
5Click Sync NowSettingsPageSync started
6View resultsSettingsPageData synced

Success Outcome: YNAB data visible in app Failure Handling: Error displayed, retry option available


Workflow 3: Transaction Categorization

Categorize uncategorized transactions

Trigger: View transactions with missing categories

Steps:

StepActionComponentOutcome
1Navigate to transactionsTransactionsPageList displayed
2Select multiple transactionsTransactionListSelection made
3Click "Assign Category"TransactionsPageModal opens
4Choose categoryCategorySelectorCategory selected
5ApplyBulkCategoryAssignmentCategories updated

Success Outcome: Transactions categorized, appear in expense reports Failure Handling: Error toast, selection preserved


Workflow 4: CSV Import

Import transactions from bank CSV

Trigger: Click "Import CSV" on transactions page

Steps:

StepActionComponentOutcome
1Click Import CSVTransactionsPageWizard opens
2Upload fileCSVImportFile parsed
3Map columnsCSVImportFields mapped
4Preview dataCSVImportData validated
5Confirm importCSVImportTransactions created

Success Outcome: Transactions imported and visible in list Failure Handling: Validation errors shown, can adjust mapping


Integration Points

Internal Integrations

IntegrationPackagePurpose
FlowState Framework@epicdm/flowstate-app-frameworkApp container, auth, layout, navigation
Database@epicdm/flowstate-rxdb-reactReactive subscriptions
UI ComponentsTailwind CSS + LucideStyling and icons

External Integrations

IntegrationTypeConfiguration
YNAB APIOAuth 2.0 RESTClient ID in env, tokens in storage

MCP Integration

ToolPurposeExample Usage
collection-queryQuery accounts, transactions{"collection": "finAccounts", "selector": {"type": "checking"}}
collection-createCreate transactions{"collection": "finTransactions", "data": {...}}
collection-updateUpdate account balance{"collection": "finAccounts", "id": "...", "data": {"balance": 5000}}

Architecture Summary

Directory Structure

src/
├── components/          # UI components (30+ files)
│   ├── accounts/       # Account components (8 files)
│   ├── categories/     # Category components (5 files)
│   ├── dashboard/      # Dashboard quadrants (8 files)
│   └── transactions/   # Transaction components (6 files)
├── hooks/              # Custom React hooks (15 hooks)
├── services/           # Business logic
│   ├── sync/          # YNAB sync service
│   └── ynab/          # YNAB OAuth/API
├── pages/              # Page components (13 pages)
│   └── SetupWizard/   # Multi-step wizard (7 steps)
├── constants/          # Default categories, config
├── utils/              # Utility functions
└── styles/             # Tailwind CSS

Key Architectural Patterns

PatternUsageExample
State ManagementRxDB for dataCollections for all financial entities
Data FlowReactive subscriptionsRxDB observables through hooks
Component ArchitectureFeature-basedComponents grouped by domain
RoutingReact Router v6Flat route structure with params
ServicesExternal API integrationYNAB sync orchestration

Services Overview

ServiceResponsibilityKey Methods
YNABSyncServiceYNAB data synchronizationsyncAccounts(), syncTransactions(), syncCategories()
oauthYNAB OAuth flowinitiateAuth(), handleCallback()
tokenStorageToken managementsaveTokens(), getTokens(), clearTokens()
mappersData transformationmapYNABAccount(), mapYNABTransaction()

Hooks Overview

HookPurposeReturns
useAccountsAccount operations{ accounts, isLoading, createAccount, updateAccount }
useTransactionsTransaction operations{ transactions, isLoading, createTransaction }
useCategoriesCategory operations{ categories, isLoading, createCategory }
useScheduledTransactionsScheduled transactions{ scheduledTransactions, isLoading }
useProjectedCashFlowCash flow projections{ projectedIncome, projectedExpenses, projectedNet }
usePeriodIncomePeriod income calculations{ incomeItems, incomeTotal, actualIncomeTotal }
usePeriodExpensesPeriod expense calculations{ expenseItems, expenseTotal, budgetedTotal }
useYNABConnectionYNAB connection state{ isConnected, connect, disconnect }
useYNABSyncYNAB sync operations{ syncNow, start, stop, state }
useSetupWizardWizard state{ currentStep, nextStep, prevStep, path }
useIncomeStatementsIncome statement CRUD{ incomeStatements, createIncomeStatement }

Quality & Compliance

Test Coverage

Test TypeLocationCoverage Target
Unit Testssrc/**/__tests__/>= 80%
Hook Testssrc/hooks/__tests__/>= 80%
Service Testssrc/services/__tests__/>= 80%
E2E Testsplaywright/Critical paths

Accessibility

RequirementStatusNotes
WCAG 2.1 AAIn ProgressComponents use semantic HTML
Keyboard NavigationYesTab navigation supported
Screen Reader SupportPartialAria labels on interactive elements
Focus ManagementYesModal focus trapping

Security Considerations

ConsiderationImplementation
OAuth TokensStored securely via tokenStorage service
Input ValidationForm validation on all inputs
AuthorizationWorkspace/org isolation via IDs
API SecurityOAuth bearer tokens for YNAB API

FlowState Alignment

Spec-Driven Development

This app follows the FlowState Standard for spec-driven development:

  • Requirements: .flowstate/specs/{{feature-name}}/requirements.md
  • Design: .flowstate/specs/{{feature-name}}/design.md
  • Wireframes: .flowstate/specs/{{feature-name}}/wireframes.html
  • Tasks: .flowstate/specs/{{feature-name}}/tasks.md

Quality Gates

GateRequirementStatus
Test Coverage>= 80% statementsIn Progress
TypeScript StrictNo any without justificationPass
AccessibilityWCAG 2.1 AAIn Progress
Documentation100% TSDoc on public APIsIn Progress
SecurityNo critical vulnerabilitiesPass

Appendix

DocumentLocationPurpose
FLOWSTATE.md.flowstate/docs/FLOWSTATE.mdDevelopment workflow
PROCESS.md.flowstate/docs/PROCESS.mdDevelopment process
TDD.md.flowstate/steering/TDD.mdTesting standards
QUALITY.md.flowstate/steering/QUALITY.mdCode quality

Version History

VersionDateAuthorChanges
1.0.02026-01-22ClaudeInitial documentation
Previous
Getting Started