Agent 6 (Session 2) Updated:
- Receipt/invoice photo upload with OCR (Tesseract + Google Vision)
- Auto-extract: amount, vendor, date, VAT, category
- Multi-user expense tracking:
- Owner: cash, card, bank (marina fees, insurance, major upgrades)
- Captain: boat card, boat cash, personal cash to reimburse
- Reimbursement workflow: submit → OCR → owner approve → mark paid
- Open-source accounting module research:
- Spliit (MIT, 2.3K stars) - receipt scanning, expense splitting, PWA
- SplitPro (MIT, 916 stars) - BigInt precision, multi-currency
- Medici (MIT, 330 stars) - double-entry GL, hierarchical accounts
- WhatsApp integration: '@NaviDocs log expense €45 fuel' → AI creates entry
- IF.TTT compliance: SHA-256 hash + ed25519 signature for receipts
- Export to Excel/CSV for accountant (tax deduction reports)
Research Report: YACHT_ACCOUNTING_RESEARCH.md (15+ repos analyzed)
Recommended: Fork Spliit (MIT) + customize for boat workflows
- Boat card vs personal cash tracking
- Captain reimbursement approval flow
- Multi-currency (€, $, £)
- Mobile-first PWA
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
20 KiB
Open-Source Accounting Modules for Yacht/Boat Expense Tracking
Research Report - Multi-User Owner + Captain Expenditure Tracking
Report Date: November 13, 2025 Research Scope: Open-source accounting libraries suitable for NaviDocs integration Target Stack: Node.js/Express.js/JavaScript backend
Executive Summary
After comprehensive research of 15+ open-source accounting projects, no dedicated boat/yacht accounting system exists in the open-source ecosystem. However, three specialized solutions offer strong foundations:
- Spliit (MIT) - Best for owner/captain split expense tracking
- SplitPro (MIT) - Most robust multi-currency reimbursement system
- Medici (MIT) - Lightweight double-entry accounting library for custom integration
For a full-featured standalone system, BigCapital (AGPL-3.0) offers the most comprehensive accounting foundation but requires AGPL compliance.
Top 5 Recommended Solutions
1. SPLIIT - Expense Splitting App
GitHub: https://github.com/spliit-app/spliit License: MIT Last Updated: November 9, 2025 (v1.19.0) Stars: 2,300+ | Forks: 347
Technology Stack
- Frontend: Next.js, React, TailwindCSS, shadcn/UI
- Backend: Next.js API Routes
- Database: PostgreSQL (Prisma ORM)
- Languages: 97.9% TypeScript, 1.1% JavaScript
Key Features
- Group-based expense tracking with balance calculations
- Receipt scanning & image attachments
- Uneven cost splitting (itemized, percentage-based, exact amounts)
- Expense categorization
- Multi-user collaborative groups
- Optional AWS S3 storage for receipts
- Optional GPT-4 Vision integration for receipt OCR
- OpenAI auto-categorization
Suitability for Yacht/Boat Tracking
Rating: 8/10
- Excellent: Perfect for owner↔captain expense splits
- Good: Receipt upload with optional AI categorization
- Good: Multi-currency support (potentially via Prisma)
- Limited: No dedicated reimbursement workflow
- Limited: No crew expense tracking hierarchy
Integration Notes
- Well-suited for NaviDocs as separate microservice
- Could adapt API for captain expense submission → owner approval
- Receipt scanning aligns with NaviDocs photo management
- May require customization for reimbursement workflows
Advantages
✅ Most actively maintained (2025 release) ✅ MIT license - no GPL compliance concerns ✅ Modern tech stack (Next.js, Prisma) ✅ Built-in receipt scanning support ✅ PWA-capable for mobile crew access
Disadvantages
❌ No dedicated approval workflow ❌ Designed for group expense splitting, not employee reimbursement ❌ Limited accounting (no GL, balance sheet, P&L reports)
2. SPLITPRO - Splitwise Alternative
GitHub: https://github.com/oss-apps/split-pro License: MIT Last Updated: November 11, 2025 (v1.5.8) Stars: 916 | Forks: 109
Technology Stack
- Frontend: NextJS, Tailwind CSS, ShadcnUI
- Backend/API: tRPC, NextAuth
- Database: PostgreSQL with Prisma ORM
- Infrastructure: Docker, GitHub Container Registry
Key Features
- Multi-currency support with rate conversion
- Bill/receipt upload and management
- Flexible splitting (shares, percentages, exact amounts)
- Splitwise data import capability
- PWA (Progressive Web App)
- Push notifications
- Data export functionality
- Numeric precision: Uses BigInt to prevent rounding errors
- Docker deployment support
Suitability for Yacht/Boat Tracking
Rating: 8.5/10
- Excellent: Multi-currency (critical for international yachts)
- Excellent: Numeric precision prevents floating-point errors in financial tracking
- Good: Receipt upload with bill management
- Good: Multiple splitting options for crew/captain scenarios
- Limited: No GL or financial reporting
Integration Notes
- Self-hosted only (community instance no longer available)
- Requires: Node.js ≥22.x, PostgreSQL, pnpm
- Docker support simplifies NaviDocs integration
- BigInt implementation critical for accurate financial calculations
Advantages
✅ MIT license ✅ Excellent numeric precision (BigInt-based) ✅ Multi-currency with live rate conversion ✅ Modern framework (tRPC for type-safe APIs) ✅ Active development (November 2025 release) ✅ Docker/containerization ready
Disadvantages
❌ Requires PostgreSQL (vs MongoDB in IDURAR) ❌ No built-in receipt OCR (upload only) ❌ Limited to expense splitting, not full accounting ❌ Node.js 22.x requirement (verify NaviDocs compatibility)
3. MEDICI - Double-Entry Accounting Library
GitHub: https://github.com/flash-oss/medici License: MIT Last Updated: December 2024 Stars: 330 | Forks: 97
Technology Stack
- Framework: Node.js library
- ORM: Mongoose (MongoDB)
- Database: MongoDB
- Language: JavaScript
- Features: ACID transactions via MongoDB sessions
Key Features
- Pure double-entry accounting system
- Hierarchical accounts (colon-separated:
Assets:Cash:Captain) - Journal entry creation with debit/credit transactions
- Account balance queries with date-range filtering
- Transaction ledger retrieval
- Journal entry voiding with audit trails
- Custom metadata on transactions
- Configurable precision (default 8 decimals)
- Balance snapshot caching (48-hour TTL)
- MongoDB read concern customization
Suitability for Yacht/Boat Tracking
Rating: 9/10 (as library component)
- Excellent: Proper GL accounting foundation
- Excellent: MongoDB integration (matches NaviDocs tech)
- Excellent: Hierarchical accounts (Captain:Meals, Owner:Fuel, etc.)
- Good: ACID transaction support
- Good: Audit trails (voiding)
- Requires Work: UI/API layer needed (library only)
Integration Notes
- Library, not a complete app - requires custom frontend/API
- Best used as backend accounting engine in NaviDocs
- Perfect for building custom owner+captain hierarchy
- Can track individual crew members as sub-accounts
- Supports metadata (can store captain ID, trip ID, etc.)
Example Account Structure for Yacht
Owner:Assets:Cash:Personal
Owner:Assets:Cash:OnBoard
Owner:Expenses:Fuel
Owner:Expenses:Provisions
Owner:Expenses:Marina
Captain:Expenses:Meals
Captain:Expenses:Crew
Captain:Reimbursement:Pending
Captain:Reimbursement:Paid
Advantages
✅ MIT license ✅ Pure double-entry accounting (proper GL) ✅ MongoDB native (matches NaviDocs) ✅ Lightweight library (easy to integrate) ✅ ACID transaction support ✅ Audit trail capability (voiding)
Disadvantages
❌ Library only - requires significant custom development ❌ No UI (must build frontend) ❌ No receipt OCR ❌ No multi-currency support ❌ Must implement reimbursement workflows
4. BIGCAPITAL - Full Accounting System
GitHub: https://github.com/bigcapitalhq/bigcapital License: AGPL-3.0 (GNU Affero) Last Updated: December 9, 2024 (v0.22.0) Stars: 3,400+ | Forks: 350
Technology Stack
- Language: TypeScript (96.8%)
- Architecture: Monorepo (Lerna + pnpm workspaces)
- Testing: Playwright E2E
- Deployment: Docker, Docker Compose, Gitpod
- Database: (Typical for AGPL accounting: PostgreSQL/MySQL)
Key Features
- Double-entry accounting system
- Invoice and bill management
- Expense tracking with categorization
- Financial reporting with intelligent dashboards
- Inventory management
- Headless API for integration
- Multi-user support
- Self-hosted or cloud (my.bigcapital.app)
- Comprehensive documentation
Suitability for Yacht/Boat Tracking
Rating: 9/10 (most complete)
- Excellent: Full GL, P&L, balance sheet reports
- Excellent: Invoice/expense management
- Excellent: Multi-user support
- Good: Headless API for custom UI
- Concern: AGPL license (open-source derivative requirement)
Integration Notes
- AGPL License Implications:
- If NaviDocs modifications are distributed, must open-source changes
- Fine for internal/private use
- Requires legal review for commercial products
- Consider consulting with legal team before integration
Advantages
✅ Most complete accounting foundation ✅ Double-entry GL + financial reporting ✅ Active development (December 2024) ✅ Docker deployment ready ✅ Headless API architecture ✅ Inventory management (useful for provisioning)
Disadvantages
❌ AGPL-3.0 requires open-sourcing derivative works ❌ More complex than needed for pure expense tracking ❌ TypeScript monorepo (larger learning curve) ❌ Potential licensing conflicts if integrating into commercial product
5. IDURAR ERP/CRM
GitHub: https://github.com/idurar/idurar-erp-crm License: AGPL-3.0 (Fair-Code) Last Updated: September 27, 2024 (v4.1.0) Stars: 8,000+ | Forks: 2,800
Technology Stack
- Frontend: React.js with Ant Design
- Backend: Express.js (Node.js)
- Database: MongoDB
- Language: 94% JavaScript
- ORM: (Typical: Mongoose)
Key Features
- Invoice and quote management
- Payment processing
- Customer relationship management
- Expense tracking
- Multi-user support
- Multi-tenant cloud capability
- Full ERP/CRM functionality
Suitability for Yacht/Boat Tracking
Rating: 6/10
- Good: MongoDB (NaviDocs match)
- Good: Express.js backend (NaviDocs match)
- Good: Invoice/expense management
- Limited: CRM-focused, overkill for boat expenses
- Concern: AGPL license
Disadvantages
❌ AGPL license (same compliance issues as BigCapital) ❌ Too broad (CRM features not needed) ❌ Older last update (September 2024) ❌ Over-engineered for simple yacht expense tracking
Specialized Receipt OCR Solutions
Receipt Scanner (danschultzer)
GitHub: https://github.com/danschultzer/receipt-scanner License: MIT Stars: 301 | Last Update: Maintenance mode (2024)
Features
- PDF and image receipt processing
- OCR via Tesseract.js
- Automatic date extraction
- Amount detection with decimal guessing
- Support for GraphicsMagick, ImageMagick, OpenCV3 preprocessing
- CLI tool and programmatic API
- Custom text parser support
Use Case
- Excellent complementary tool for receipt processing
- Can integrate with any accounting system
- Already supports Tesseract (mentioned in NaviDocs)
- MIT licensed for commercial use
Comparison Matrix
| Feature | Spliit | SplitPro | Medici | BigCapital | IDURAR |
|---|---|---|---|---|---|
| License | MIT | MIT | MIT | AGPL-3.0 | AGPL-3.0 |
| Stars | 2.3k | 916 | 330 | 3.4k | 8k |
| Last Update | Nov 2025 | Nov 2025 | Dec 2024 | Dec 2024 | Sept 2024 |
| Tech Stack | Next.js/Prisma | Next.js/tRPC | Node.js/Mongoose | TypeScript Monorepo | Express/React |
| Database | PostgreSQL | PostgreSQL | MongoDB | Varies | MongoDB |
| Double-Entry GL | ❌ | ❌ | ✅ | ✅ | ✅ |
| Receipt Scanning | ✅ (GPT-4V) | ❌ (Upload only) | ❌ | ✅ | ✅ |
| Multi-Currency | ✅ (Limited) | ✅ (Full) | ❌ | ✅ | ✅ |
| Multi-User | ✅ | ✅ | ✅ | ✅ | ✅ |
| Reimbursement WF | ❌ (Custom) | ❌ (Custom) | ❌ (Custom) | ✅ | ✅ |
| Financial Reports | ❌ | ❌ | ✅ | ✅ | ✅ |
| Mobile-Friendly | PWA ✅ | PWA ✅ | ❌ | ✅ | ✅ |
| Docker Support | ✅ | ✅ | ❌ | ✅ | ✅ |
Boat-Specific Considerations
Requirement Analysis
1. Owner vs Captain Expense Tracking
- Spliit & SplitPro: Groups-based (adapt easily)
- Medici: Hierarchical accounts (native support)
- BigCapital/IDURAR: Multi-user (requires customization)
2. Multi-Currency Support (International Yachts)
- SplitPro: Best (BigInt precision + live rates)
- Spliit: Basic support
- Medici: Not supported (would require wrapper)
- BigCapital: Yes, but unknown precision
- IDURAR: Yes
3. Receipt Management & OCR
- Spliit: Built-in GPT-4V receipt scanning
- Receipt Scanner: Dedicated OCR tool (MIT)
- Others: Can upload, limited OCR
4. Reimbursement Workflow (Captain → Owner payment)
- BigCapital: Built-in
- IDURAR: Built-in
- SplitPro/Spliit: Must customize
- Medici: Must build from scratch
5. Mobile Access (Captain at sea)
- Spliit: PWA ✅
- SplitPro: PWA ✅
- Others: Web-based or custom mobile
6. Crew Expense Hierarchy
- Medici: Native (hierarchical accounts)
- Others: Custom development required
Recommended Integration Strategy
Option A: Best for Speed (Recommended)
Use Spliit + Receipt Scanner
Approach:
- Fork Spliit for NaviDocs customization
- Create owner/captain groups
- Integrate Receipt Scanner for OCR
- Build approval workflow for captain→owner reimbursement
- Add trip/voyage tracking metadata
- Customize UI for yacht operations
Effort: 4-6 weeks Cost: Lower (MIT licensed) Complexity: Medium Maintainability: Good (active upstream project)
Modifications needed:
- Add voyage/trip context
- Captain expense approval workflow
- Reimbursement calculation
- Crew expense hierarchy
- Integration with NaviDocs photo system
Option B: Best for Financial Rigor
Use Medici (Library) + Custom API Layer
Approach:
- Use Medici as accounting engine
- Build custom Express.js API layer
- Implement owner/captain account hierarchy
- Add reimbursement workflow
- Connect Receipt Scanner for OCR
- Build custom frontend or integrate with NaviDocs UI
Effort: 8-10 weeks Cost: Lower (MIT licensed) Complexity: High Advantage: Proper GL accounting, audit trails
Benefits:
- Proper double-entry accounting
- Account hierarchy matches crew structure
- Audit trail (voiding records)
- MongoDB native integration
- Lightweight foundation
Option C: Enterprise-Grade
Use BigCapital (with legal review)
Approach:
- Self-host BigCapital
- Customize multi-user roles for yacht operations
- Add voyage tracking
- Integrate with NaviDocs
- Deploy via Docker
Effort: 6-8 weeks Cost: Medium (AGPL compliance review needed) Complexity: Medium Risk: AGPL licensing implications
Requires:
- Legal review of AGPL compliance
- Evaluate if open-sourcing NaviDocs changes is acceptable
- Assess competitive impact
Decision Matrix
| Priority | Recommendation | Rationale |
|---|---|---|
| Speed to Market | Spliit + Receipt Scanner | MIT licensed, active, receipt OCR built-in |
| Financial Accuracy | Medici (custom) | Proper GL, BigInt precision, MongoDB match |
| Feature Completeness | BigCapital | Full accounting, but AGPL concerns |
| Ease of Integration | Spliit | Next.js matches modern web patterns |
| Lowest Maintenance | SplitPro | MIT, PostgreSQL (industry standard), BigInt precision |
Boat-Specific Accounting Workflow
Typical Yacht Expense Flow
1. Captain Expense Entry
└─ Upload receipt (photo/scan)
└─ Select category (Fuel, Meals, Crew, Marina, etc.)
└─ Add crew members involved
└─ Mark as "Pending Reimbursement"
2. Owner Review & Approval
└─ Review captain's submitted expenses
└─ Approve/reject with notes
└─ Mark approved expenses as "Approved"
3. Reimbursement Tracking
└─ Aggregate approved expenses
└─ Calculate captain balance due
└─ Generate reimbursement invoice
└─ Track payment status
4. Financial Reporting
└─ Trip/voyage-level cost summaries
└─ Crew expense breakdowns
└─ Fuel cost tracking
└─ Marina/port cost analysis
└─ Owner vs Captain liability reporting
5. Multi-Currency Handling (International)
└─ Record expense in local currency
└─ Convert to owner's base currency
└─ Track FX differences
└─ Generate multi-currency reports
Recommended Data Model for NaviDocs
// Expense Document
{
_id: ObjectId,
voyageId: ObjectId, // Link to voyage/trip
timestamp: Date,
submittedBy: "captain", // User role
paidBy: ObjectId, // Who paid the actual money
amount: Decimal128, // Use Decimal for accuracy
currency: "EUR",
originalCurrency: "GBP", // For tracking FX
rate: 1.18, // FX rate applied
category: "Fuel",
description: "Diesel fuel - Canary Islands",
receipt: {
imageUrl: "s3://...",
scannedText: "...", // From OCR
vendor: "Marina ABC"
},
status: "approved", // pending, approved, rejected, reimbursed
crew: [ObjectId], // Crew members involved
approvedBy: ObjectId, // Owner who approved
approvedAt: Date,
reimbursementId: ObjectId, // Link to reimbursement batch
notes: "..."
}
// Reimbursement Batch
{
_id: ObjectId,
captain: ObjectId,
voyageId: ObjectId,
startDate: Date,
endDate: Date,
totalAmount: Decimal128,
currency: "EUR",
status: "pending", // pending, paid, partial
invoiceNumber: "RF-2025-001",
paidDate: Date,
notes: "..."
}
Comparison: Build vs. Buy Analysis
Option 1: Adopt Spliit + Receipt Scanner (Recommended)
- Development Cost: 4-6 weeks
- License Cost: Free (MIT)
- Maintenance: Low (upstream updates available)
- Customization Effort: Medium
- Time to Production: 2-3 months
Best for: Fast MVP, modern tech stack, crew mobile access
Option 2: Build Custom on Medici
- Development Cost: 8-10 weeks
- License Cost: Free (MIT)
- Maintenance: High (full ownership)
- Customization Effort: High
- Time to Production: 3-4 months
Best for: Long-term, specific yacht domain needs, GL accounting requirement
Option 3: Deploy BigCapital (AGPL)
- Development Cost: 6-8 weeks + legal review
- License Cost: Free (AGPL)
- Legal Risk: Moderate (open-source derivative requirement)
- Maintenance: Medium (upstream + legal compliance)
- Time to Production: 2-3 months
Best for: Full accounting features, willing to handle AGPL implications
Final Recommendation
For NaviDocs: Hybrid Approach
Phase 1 (MVP - 6-8 weeks):
- Integrate Spliit as forked customized service
- Add Receipt Scanner for OCR processing
- Build simple captain expense submission UI
- Implement owner approval workflow
- Connect to NaviDocs photo/document system
Phase 2 (v1.0 - 3-4 months):
- Evaluate migration to Medici for GL accounting
- Add financial reporting layer
- Implement multi-currency precision (BigInt)
- Build reimbursement batch processing
- Add crew expense hierarchy
Technology Stack:
- Accounting: Spliit or Medici
- OCR: Receipt Scanner
- Database: MongoDB (NaviDocs native)
- Backend: Express.js (NaviDocs native)
- Frontend: Existing NaviDocs UI + mobile PWA
License Compliance:
- ✅ Spliit: MIT (no restrictions)
- ✅ Receipt Scanner: MIT (no restrictions)
- ✅ Medici: MIT (no restrictions)
- ✅ All choices compatible with commercial products
Repository References
| Project | Repository | License | Last Updated |
|---|---|---|---|
| Spliit | https://github.com/spliit-app/spliit | MIT | Nov 2025 |
| SplitPro | https://github.com/oss-apps/split-pro | MIT | Nov 2025 |
| Medici | https://github.com/flash-oss/medici | MIT | Dec 2024 |
| BigCapital | https://github.com/bigcapitalhq/bigcapital | AGPL-3.0 | Dec 2024 |
| IDURAR | https://github.com/idurar/idurar-erp-crm | AGPL-3.0 | Sept 2024 |
| Receipt Scanner | https://github.com/danschultzer/receipt-scanner | MIT | 2024 |
Action Items
- Evaluate Spliit vs SplitPro (PostgreSQL requirement)
- Assess Medici complexity vs Spliit customization effort
- Review AGPL implications with legal team
- Prototype receipt scanning integration
- Design yacht-specific data models
- Evaluate multi-currency precision requirements
- Plan captain approval workflow
- Consider crew expense hierarchy needs
Report Prepared: November 13, 2025 Research Scope: GitHub, official documentation, live repositories Confidence Level: High (primary source verification)