Add receipt/invoice upload + multi-user accounting module (Spliit fork)
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>
This commit is contained in:
parent
c815ef8629
commit
af0f38af80
3 changed files with 689 additions and 16 deletions
|
|
@ -125,17 +125,50 @@ Each agent MUST:
|
|||
|
||||
**Deliverable:** Contact management spec with mobile-first UX
|
||||
|
||||
### Agent 6: Expense Tracking & Accounting
|
||||
### Agent 6: Receipt/Invoice Upload + Accounting Module Integration
|
||||
**AGENT ID:** S2-H06
|
||||
**
|
||||
**Design:**
|
||||
- Database schema: expense tracking across inventory, maintenance, marina fees
|
||||
- Expense categories (maintenance, upgrades, insurance, marina, fuel, crew)
|
||||
- Annual/monthly rollups (how much is this boat costing me?)
|
||||
- Budget alerts ("You've spent €15K this year, €3K over budget")
|
||||
- Tax deduction report (for chartered boats)
|
||||
**Research + Design:**
|
||||
|
||||
**Deliverable:** Expense tracking spec with budget management
|
||||
**Open-Source Accounting Module Research:**
|
||||
- Review `/home/setup/navidocs/YACHT_ACCOUNTING_RESEARCH.md` (Haiku research completed)
|
||||
- **Recommended:** Spliit (MIT, 2.3K stars) - receipt scanning, expense splitting, PWA mobile
|
||||
- **Alternative:** SplitPro (MIT, 916 stars) - BigInt precision, multi-currency
|
||||
- **Foundation:** Medici (MIT, 330 stars) - double-entry GL, hierarchical accounts
|
||||
|
||||
**Multi-User Expense Tracking:**
|
||||
- **Owner expenditure:**
|
||||
- Cash payments (€X for marina, €Y for fuel)
|
||||
- Card payments (auto-import from bank APIs if available)
|
||||
- Bank transfers (boat maintenance, insurance)
|
||||
- Categories: marina fees, insurance, major upgrades, professional services
|
||||
- **Captain expenditure:**
|
||||
- Boat card (provisioning, fuel, minor repairs)
|
||||
- Boat cash (tips, small purchases)
|
||||
- Personal cash to reimburse (meals, supplies bought with personal funds)
|
||||
- Categories: provisions, fuel, minor repairs, supplies, crew meals
|
||||
- **Reimbursement workflow:**
|
||||
- Captain submits expense with receipt photo
|
||||
- NaviDocs OCR extracts (amount, vendor, date, category)
|
||||
- Owner approves/rejects via WhatsApp or app
|
||||
- Mark as "paid" when reimbursed
|
||||
|
||||
**Receipt/Invoice Upload Integration:**
|
||||
- Photo upload via mobile (camera + gallery)
|
||||
- OCR processing (existing Tesseract + Google Vision pipeline)
|
||||
- Auto-extraction: amount, vendor, date, VAT, category
|
||||
- Link to maintenance log, inventory, or general expense
|
||||
- Store original receipt image + extracted structured data
|
||||
- IF.TTT compliance: SHA-256 hash, ed25519 signature, citation ID
|
||||
|
||||
**Accounting Module Architecture:**
|
||||
- Fork Spliit or integrate as library (MIT license allows)
|
||||
- Customize for boat workflows (owner vs captain vs crew)
|
||||
- Multi-currency support (€, $, £ for international owners)
|
||||
- Export to Excel/CSV for accountant (tax deduction reports)
|
||||
- Integration with WhatsApp: "@NaviDocs log expense €45 fuel" → AI creates expense entry
|
||||
|
||||
**Deliverable:** Accounting module integration spec + receipt OCR workflow + multi-user expense tracking design
|
||||
|
||||
### Agent 7: Impeccable Search UX Design (CRITICAL)
|
||||
**AGENT ID:** S2-H07
|
||||
|
|
|
|||
|
|
@ -52,14 +52,16 @@ Riviera Plaisance Euro Voiles sells 150+ recreational motor boats per year (Jean
|
|||
|
||||
**Key Features:**
|
||||
1. **Document tracking & versioning** (core value prop) - warranties, manuals, service records with IF.TTT traceability
|
||||
2. **Inventory tracking** - prevent forgotten value at resale
|
||||
3. **WhatsApp group integration** - boat-specific chat with owner, after-sales, captain, stakeholders
|
||||
4. **AI agent in group chat** - answers questions, posts updates, logs conversations (IF.TTT compliance)
|
||||
5. **Camera monitoring** - "is my boat OK?"
|
||||
6. **Maintenance log** - service reminders
|
||||
7. **Contact management** - one-tap call marina/mechanic
|
||||
8. **Expense tracking** - annual spend visibility
|
||||
9. **Impeccable search** - structured results, NO long lists
|
||||
2. **WhatsApp group integration** - boat-specific chat with owner, after-sales, captain, stakeholders
|
||||
3. **AI agent in group chat** - answers questions, posts updates, logs conversations (IF.TTT compliance)
|
||||
4. **Receipt/invoice upload + OCR** - photo → auto-extract amount, vendor, date, VAT
|
||||
5. **Multi-user accounting** - owner vs captain expenditure tracking with reimbursement workflow
|
||||
6. **Accounting module** (Spliit fork, MIT) - expense splitting, balance tracking, multi-currency, PWA mobile
|
||||
7. **Inventory tracking** - prevent forgotten value at resale
|
||||
8. **Camera monitoring** - "is my boat OK?"
|
||||
9. **Maintenance log** - service reminders
|
||||
10. **Contact management** - one-tap call marina/mechanic
|
||||
11. **Impeccable search** - structured results, NO long lists
|
||||
|
||||
### **Your Mission**
|
||||
|
||||
|
|
|
|||
638
YACHT_ACCOUNTING_RESEARCH.md
Normal file
638
YACHT_ACCOUNTING_RESEARCH.md
Normal file
|
|
@ -0,0 +1,638 @@
|
|||
# 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:
|
||||
|
||||
1. **Spliit** (MIT) - Best for owner/captain split expense tracking
|
||||
2. **SplitPro** (MIT) - Most robust multi-currency reimbursement system
|
||||
3. **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:**
|
||||
1. Fork Spliit for NaviDocs customization
|
||||
2. Create owner/captain groups
|
||||
3. Integrate Receipt Scanner for OCR
|
||||
4. Build approval workflow for captain→owner reimbursement
|
||||
5. Add trip/voyage tracking metadata
|
||||
6. 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:**
|
||||
1. Use Medici as accounting engine
|
||||
2. Build custom Express.js API layer
|
||||
3. Implement owner/captain account hierarchy
|
||||
4. Add reimbursement workflow
|
||||
5. Connect Receipt Scanner for OCR
|
||||
6. 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:**
|
||||
1. Self-host BigCapital
|
||||
2. Customize multi-user roles for yacht operations
|
||||
3. Add voyage tracking
|
||||
4. Integrate with NaviDocs
|
||||
5. 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
|
||||
|
||||
```javascript
|
||||
// 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):**
|
||||
1. Integrate **Spliit** as forked customized service
|
||||
2. Add **Receipt Scanner** for OCR processing
|
||||
3. Build simple captain expense submission UI
|
||||
4. Implement owner approval workflow
|
||||
5. Connect to NaviDocs photo/document system
|
||||
|
||||
**Phase 2 (v1.0 - 3-4 months):**
|
||||
1. Evaluate migration to **Medici** for GL accounting
|
||||
2. Add financial reporting layer
|
||||
3. Implement multi-currency precision (BigInt)
|
||||
4. Build reimbursement batch processing
|
||||
5. 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)
|
||||
Loading…
Add table
Reference in a new issue