Sign inSign up

jchristn77/netledger-ui

By jchristn77

•Updated 10 days ago

Ledgering API server for financial systems.

Image
Developer tools
Databases & storage
0

2.6K

jchristn77/netledger-ui repository overview

⁠NetLedger

NuGet Version NuGet Downloads License

NetLedger is a thread-safe, self-contained ledgering library for .NET 8.0 that provides rigorous financial transaction control with full audit trails. Built on SQLite with async/await throughout, it enables strict separation between pending and committed transactions, making it ideal for applications requiring precise financial controls and auditability.

⁠Who Should Use NetLedger

NetLedger is designed for developers building applications that require:

  • Strict Financial Controls - Separate pending and committed transaction states with explicit commit operations
  • Full Audit Trails - Immutable transaction history with balance chains for forensic accounting
  • Thread Safety - Account-level locking ensures safe concurrent access without race conditions
  • Embedded Storage - Self-contained SQLite database with no external dependencies
  • Transactional Integrity - ACID-compliant operations with atomic commits and rollback on failure
  • Async/Await Support - Modern .NET async patterns with cancellation token support throughout

Ideal use cases: Financial applications, expense tracking systems, point-of-sale systems, accounting software, multi-user financial platforms, billing systems, payment processing, and any application requiring double-entry bookkeeping.

⁠What NetLedger Does

⁠Core Capabilities
  • ✅ Account Management - Create, retrieve, search, and delete accounts with optional initial balances
  • ✅ Transaction Operations - Add credits and debits as pending or immediately committed
  • ✅ Batch Operations - Process multiple credits or debits in a single atomic operation
  • ✅ Dual Balance Tracking - Separate committed balance (finalized) and pending balance (projected)
  • ✅ Selective Commits - Commit all pending entries or specific entries by GUID
  • ✅ Entry Cancellation - Cancel pending entries before commit
  • ✅ Transaction History - Query entries with filtering by date range, amount range, and ordering
  • ✅ Pagination Support - Continuation token-based enumeration for large datasets (up to 1000 records per query)
  • ✅ Point-in-Time Balances - Calculate balances as of any historical timestamp
  • ✅ Balance Chain Verification - Validate audit trail integrity across all balance entries
  • ✅ Event Notifications - Async events for all state changes (account created/deleted, entries added/committed/canceled)
  • ✅ Thread-Safe Operations - SemaphoreSlim-based account locking prevents concurrent modification issues
  • ✅ Connection Pooling - High-performance connection pool (max 500 connections, 120s timeout)
⁠What NetLedger Does NOT Do
  • ❌ Multi-Currency Support - Single currency per ledger (implement multiple ledgers for multi-currency)
  • ❌ Automatic Transfers - No built-in inter-account transfers (manually debit one account and credit another)
  • ❌ Authentication/Authorization - No user management or permissions (implement at application level)
  • ❌ Multi-Tenant Isolation - Single database instance (use separate databases for tenants)
  • ❌ External Databases - SQLite only (contact maintainer for external database support)
  • ❌ Transaction Reversal - Cannot undo committed entries (create offsetting entries instead)
  • ❌ Scheduled Transactions - No recurring or future-dated entries
  • ❌ Account Hierarchies - No parent-child account relationships
  • ❌ Budget Enforcement - No built-in spending limits or budget tracking
  • ❌ Custom Fields - Fixed schema for accounts and entries

⁠License

MIT License - See LICENSE.md⁠ for details

⁠Contributing

Contributions are welcome! Please see CONTRIBUTING.md⁠ for guidelines.

⁠Support

⁠Version History

⁠v2.0.0 (Current)
  • Full async/await support throughout
  • Transaction support with ACID guarantees
  • Batch operations for credits and debits
  • Enhanced error handling with specific exception types
  • Performance improvements with connection pooling
  • Breaking changes from v1.x (see CHANGELOG.md⁠)

See CHANGELOG.md⁠ for complete version history.

Tag summary

Content type

Image

Digest

sha256:c1453c752…

Size

42.3 MB

Last updated

10 days ago

docker pull jchristn77/netledger-ui