## Backend (server/) - Express 5 API with security middleware (helmet, rate limiting) - SQLite database with WAL mode (schema from docs/architecture/) - Meilisearch integration with tenant tokens - BullMQ + Redis background job queue - OCR pipeline with Tesseract.js - File safety validation (extension, MIME, size) - 4 API route modules: upload, jobs, search, documents ## Frontend (client/) - Vue 3 with Composition API (<script setup>) - Vite 5 build system with HMR - Tailwind CSS (Meilisearch-inspired design) - UploadModal with drag-and-drop - FigureZoom component (ported from lilian1) - Meilisearch search integration with tenant tokens - Job polling composable - Clean SVG icons (no emojis) ## Code Extraction - ✅ manuals.js → UploadModal.vue, useJobPolling.js - ✅ figure-zoom.js → FigureZoom.vue - ✅ service-worker.js → client/public/service-worker.js (TODO) - ✅ glossary.json → Merged into Meilisearch synonyms - ❌ Discarded: quiz.js, persona.js, gamification.js (Frank-AI junk) ## Documentation - Complete extraction plan in docs/analysis/ - README with quick start guide - Architecture summary in docs/architecture/ ## Build Status - Server dependencies: ✅ Installed (234 packages) - Client dependencies: ✅ Installed (160 packages) - Client build: ✅ Successful (2.63s) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
93 lines
1.9 KiB
Markdown
93 lines
1.9 KiB
Markdown
# NaviDocs - Professional Boat Manual Management
|
|
|
|
**Production-ready boat manual management platform with OCR and intelligent search**
|
|
|
|
Built with Vue 3, Express, SQLite, and Meilisearch. Extracted from the lilian1 (FRANK-AI) prototype with clean, professional code only.
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
- **Upload PDFs** - Drag and drop boat manuals
|
|
- **OCR Processing** - Automatic text extraction with Tesseract.js
|
|
- **Intelligent Search** - Meilisearch with boat terminology synonyms
|
|
- **Offline-First** - PWA with service worker caching
|
|
- **Multi-Vertical** - Supports boats, marinas, and properties
|
|
- **Secure** - Tenant tokens, file validation, rate limiting
|
|
|
|
---
|
|
|
|
## Tech Stack
|
|
|
|
### Backend
|
|
- **Node.js 20** - Express 5
|
|
- **SQLite** - better-sqlite3 with WAL mode
|
|
- **Meilisearch** - Sub-100ms search with synonyms
|
|
- **BullMQ** - Background OCR job processing
|
|
- **Tesseract.js** - PDF text extraction
|
|
|
|
### Frontend
|
|
- **Vue 3** - Composition API with `<script setup>`
|
|
- **Vite** - Fast builds and HMR
|
|
- **Tailwind CSS** - Meilisearch-inspired design
|
|
- **Pinia** - State management
|
|
- **PDF.js** - Document viewer
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
```bash
|
|
# Required
|
|
node >= 20.0.0
|
|
npm >= 10.0.0
|
|
|
|
# For OCR
|
|
pdftoppm (from poppler-utils)
|
|
tesseract >= 5.0.0
|
|
|
|
# For search
|
|
meilisearch >= 1.0.0
|
|
|
|
# For queue
|
|
redis >= 6.0.0
|
|
```
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# Clone repository
|
|
cd ~/navidocs
|
|
|
|
# Install server dependencies
|
|
cd server
|
|
npm install
|
|
cp .env.example .env
|
|
# Edit .env with your configuration
|
|
|
|
# Initialize database
|
|
npm run init-db
|
|
|
|
# Install client dependencies
|
|
cd ../client
|
|
npm install
|
|
|
|
# Start services (each in separate terminal)
|
|
meilisearch --master-key=masterKey
|
|
redis-server
|
|
cd ~/navidocs/server && node workers/ocr-worker.js
|
|
cd ~/navidocs/server && npm run dev
|
|
cd ~/navidocs/client && npm run dev
|
|
```
|
|
|
|
Visit http://localhost:5173
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
See `docs/architecture/` for complete schema and configuration details.
|
|
|
|
**Ship it. Learn from users. Iterate.**
|