- Remove duplicate sync logic from CompanySwitcher (CompanyGuard handles it)
- Validate persisted activeCompany against API response in CompanyGuard
- Reset fiscal year state when switching companies in FiscalYearSelector
- Validate currentFiscalYear belongs to current company's data
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- CompanySwitcher: Use useMyCompanies() hook instead of mockCompanies
- FiscalYearSelector: Use useFiscalYears() hook instead of mockFiscalYears
- Kontooversigt: Use useAccounts() and useAccountBalances() hooks
- Kassekladde: Use useActiveAccounts() and useJournalEntryDrafts() hooks
- Bankafstemning: Use useActiveBankConnections() and usePendingBankTransactions()
- Dashboard: Calculate metrics from useAccountBalances(), useInvoices(), useVatReport()
All components now show loading skeletons and empty states appropriately.
Closes books-ljg
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Frontend build fixes:
- Add formatDateTimeISO and parseISODate to formatters.ts
- Add default type parameter to fetchGraphQL function
- Add toggleMobileDrawer and mobileDrawerOpen to uiStore
- Add compact prop to CompanySwitcher component
- Add JournalEntryDraft types to accounting.ts
- Add reopened/locked fields to FiscalYear type
- Fix documentProcessing.ts import
Closes books-0rs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Backend (.NET 10):
- EventFlow CQRS/Event Sourcing with PostgreSQL
- GraphQL.NET API with mutations and queries
- Custom ReadModelSqlGenerator for snake_case PostgreSQL columns
- Hangfire for background job processing
- Integration tests with isolated test databases
Frontend (React/Vite):
- Initial project structure
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>