Colofon
Gebouwd op het werk van anderen.
beatrax is een klein project dat op een grote hoeveelheid opensourcesoftware staat. Deze pagina noemt die bij naam — de lijst staat in de specificatie en wordt hier weergegeven, zodat de vermelding niet stilletjes veroudert.
The runtime
- PHP 8.5
- The language. Property hooks, asymmetric visibility, and the typed-constant work of recent releases are used throughout, which is why the floor is a current version rather than a comfortable one.
- Laravel 13
- The application framework — routing, container, queue, scheduler, migrations, and the console layer every operational command is built on.
- Livewire 4
- Server-rendered interactivity. Every surface in the app is a Livewire component, which is what keeps the whole product in one language instead of two.
- Flux
- The Livewire component library behind the modals, popovers, and form controls.
- NativePHP
- Packages the application as a real native app — desktop on macOS, Windows, and Linux, and the mobile clients — providing the native window, tray, biometric, and OS-notification surfaces.
- SQLite
- The store. One file, WAL mode, on the user's own disk (ADR-0005).
Reading financial data
- genkgo/camt
- Parses CAMT.053, the ISO 20022 bank statement — the richest of the supported formats.
- league/csv
- The CSV reader behind every per-bank export shape.
- brick/money, brick/math
- Exact decimal money. No floating-point arithmetic touches a balance.
- jschaedl/iban-validation
- Validates and normalises IBANs before they become counterparty identities.
- spatie/pdf-to-text
- Extracts text from credit-card PDF statements, via pdftotext.
- zbateson/mail-mime-parser
- Parses .eml and .mbox receipts for the email-scanning path.
- dompdf/dompdf
- Renders the per-year tax export as PDF.
Connecting to the outside, when asked to
- guzzlehttp/guzzle
- The HTTP client for the optional connectors.
- google/apiclient, league/oauth2-google
- Gmail receipt scanning, read-only, opt-in.
- thenetworg/oauth2-azure
- The Microsoft Graph equivalent.
- league/oauth2-client
- The shared OAuth plumbing beneath both.
- firebase/php-jwt
- Signs the assertions the open-banking connector needs.
Sync
- amphp (http-server, socket, websocket-client, websocket-server)
- The asynchronous runtime behind the sync daemon, the LAN transport, and the relay.
- ext-sodium
- Ed25519 and X25519 identities, XChaCha20-Poly1305, Argon2id, and sealed boxes — the primitives the whole sync design rests on (ADR-0015, ADR-0016).
Structure and operations
- nwidart/laravel-modules
- The module boundary the architecture is built on (component-model.md).
- spatie/laravel-data
- Typed data objects across the Public seams between modules.
- spatie/laravel-activitylog
- The audit trail.
- laravel/fortify
- Authentication scaffolding, adapted for a local-only, account-free product.
- monolog/monolog
- Logging.
- symfony/process, symfony/yaml
- Process control for the daemons; YAML for the community corpus.
- doctrine/sql-formatter
- Formats SQL in the developer console.
The interface
- Tailwind CSS 4
- The styling system, driven by the design tokens (design-tokens.md).
- Vite
- The asset pipeline.
- Alpine.js
- The small client-side interactions Livewire leaves to the browser.
- ApexCharts
- The forecast, report, and net-worth charts.
- Fuse.js
- Client-side fuzzy matching in the command palette.
- Axios
- The HTTP client for the few direct browser calls.
The quality gate
- Pest
- The test runner, including the architecture tests that enforce the module boundary and the comment policy.
- Larastan / PHPStan
- Static analysis at maximum level, in strict mode.
- Laravel Pint
- Formatting.
- Docker
- The containerised toolchain; the host needs only a container runtime.