Add claude file
This commit is contained in:
parent
5809ee2059
commit
6b9ec53a29
1 changed files with 64 additions and 0 deletions
64
CLAUDE.md
Normal file
64
CLAUDE.md
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build
|
||||||
|
dotnet build
|
||||||
|
|
||||||
|
# Run (dev server at http://localhost:5225)
|
||||||
|
cd Schaad.Accounting.UI && dotnet run
|
||||||
|
|
||||||
|
# Publish
|
||||||
|
dotnet publish -c Release
|
||||||
|
```
|
||||||
|
|
||||||
|
There are no automated tests or lint commands.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
**AccountingNext** is a Swiss personal accounting app built with ASP.NET Core 9 + Blazor (interactive server-side rendering) and Microsoft Fluent UI. Data is stored as XML files on disk — no database.
|
||||||
|
|
||||||
|
### Projects
|
||||||
|
|
||||||
|
| Project | Role |
|
||||||
|
|---|---|
|
||||||
|
| `Schaad.Accounting.UI` | Blazor web app — pages, dialogs, layout |
|
||||||
|
| `Schaad.Accounting.Services` | Business logic — balances, FX conversion, file import, charts |
|
||||||
|
| `Schaad.Accounting.Db` | Repository layer — XML serialization/deserialization |
|
||||||
|
| `Schaad.Accounting.Common` | Shared models, DTOs, interfaces |
|
||||||
|
|
||||||
|
### Data flow
|
||||||
|
|
||||||
|
```
|
||||||
|
Blazor Pages/Dialogs (UI)
|
||||||
|
→ Services (ViewService, FileService, ChartService)
|
||||||
|
→ Repositories (AccountRepository, TransactionRepository, …)
|
||||||
|
→ XML files: {DataPath}/{year}/{mandator}/Data/*.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
Data is multi-year and multi-mandator. Each combination has its own directory under `DataPath` (configured in `appsettings.Development.json`). When a new year is opened, the previous year's data is copied as the starting point.
|
||||||
|
|
||||||
|
### Key services
|
||||||
|
|
||||||
|
- **ViewService** — aggregates account balances, applies FX rates, builds datasets for the UI
|
||||||
|
- **FileService** — imports bank statements (MT940, CAMT053 via external `Schaad.Finance.dll`), parses PDFs, manages backups
|
||||||
|
- **ChartService** — produces data for Plotly charts (assets, spendings over time)
|
||||||
|
- **SettingsService** — manages the active year, mandator, and file paths
|
||||||
|
|
||||||
|
### UI structure
|
||||||
|
|
||||||
|
Pages live in `Schaad.Accounting.UI/Components/Pages/`. Each page typically has a companion `Dialogs/` subfolder with Fluent UI dialog components for CRUD operations. The app is hardcoded to the `de-CH` culture.
|
||||||
|
|
||||||
|
### Key external dependencies
|
||||||
|
|
||||||
|
- `Microsoft.FluentUI.AspNetCore.Components` — UI components (FluentDataGrid, FluentDialog, etc.)
|
||||||
|
- `Plotly.Blazor` — charts
|
||||||
|
- `FreeSpire.PDF` — PDF parsing for bank statement imports
|
||||||
|
- `Schaad.Finance.dll` / `Schaad.Finance.Api.dll` — proprietary DLLs for MT940/CAMT053 parsing and FX rate lookups (FixerIo API key in `appsettings.Development.json`)
|
||||||
|
|
||||||
|
### Domain constants
|
||||||
|
|
||||||
|
`ClassIds` in `Schaad.Accounting.Common` defines the Swiss accounting chart-of-accounts classes: Activa=1000, Passiva=2000, Income=3000, Expenses=4000.
|
||||||
Loading…
Reference in a new issue