navidocs/DEPLOYMENT_SUMMARY.md
Danny Stocker 95805f1141 [FEATURES] Add 5 new feature specs (Sessions 6-10) + deployment docs
Sessions 6-10 Feature Specs:
- Session 6: Inventory & Warranty Tracking (equipment management)
- Session 7: Maintenance Scheduler (recurring tasks with alerts)
- Session 8: Crew & Contact Management (marine operations directory)
- Session 9: Compliance & Certification Tracker (regulatory compliance)
- Session 10: Fuel Log & Expense Tracker (financial management)

Deployment Documentation:
- STACKCP_DEPLOYMENT_GUIDE.md (complete deployment process)
- DEPLOYMENT_SUMMARY.md (executive overview)
- DEPLOYMENT_ARCHITECTURE.md (technical deep dive)
- DEPLOYMENT_INDEX.md (navigation hub)
- README_DEPLOYMENT.txt (quick start)
- STACKCP_QUICK_COMMANDS.sh (copy-paste commands)

Session Prompts:
- 4 new prompts with step-by-step build instructions

Total: ~450-600 min build time across 5 features
Demo value: Complete boat management platform
2025-11-13 14:31:29 +01:00

444 lines
15 KiB
Markdown

# NaviDocs StackCP Deployment Summary
**Status**: Ready for Production Deployment
**Date**: 2025-11-13
**Application**: NaviDocs v1.0.0 (65% MVP)
**Target**: StackCP Shared Hosting (digital-lab.ca)
---
## What's Being Deployed
A complete boat documentation management system with three production-ready features:
### Feature 1: Smart OCR (Session 1)
- **Problem Solved**: 100-page PDFs took 3+ minutes with traditional Tesseract
- **Solution**: Hybrid native text + selective OCR
- **Performance**: 180s → 5s (36x speedup)
- **Status**: ✅ Production Ready
### Feature 2: Multi-Format Upload (Session 2)
- **Supported Formats**: PDF, Images (JPG/PNG), Word (DOCX), Excel (XLSX), Text (TXT/MD)
- **Auto-Detection**: Document processor routes files to correct handler
- **Status**: ✅ Production Ready
### Feature 3: Timeline Feature (Session 3)
- **Functionality**: Track document uploads, edits, deletions
- **View**: Interactive timeline showing all activity
- **Data**: SQLite-backed activity log
- **Status**: ✅ Production Ready
---
## Architecture Overview
```
┌─────────────────────────────────────────────────────────────┐
│ USERS' BROWSERS │
│ (Internet) https://digital-lab.ca │
└────────────────────────┬────────────────────────────────────┘
│ HTTPS
┌─────────────────────────────────────────────────────────────┐
│ STACKCP SHARED HOSTING │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ REVERSE PROXY (Nginx) │ │
│ │ ├─ Static files → ~/public_html/navidocs/ (Vue dist) │ │
│ │ └─ /api/* → http://localhost:8001 (Node.js) │ │
│ └────────────┬───────────────────────┬──────────────────┘ │
│ │ │ │
│ ┌───────▼──────────┐ ┌───────▼──────────┐ │
│ │ /tmp/navidocs/ │ │ ~/navidocs-data/ │ │
│ │ (EXECUTABLE) │ │ (PERSISTENT) │ │
│ │ ┌──────────────┐ │ │ ┌──────────────┐ │ │
│ │ │ Node.js │ │ │ │ SQLite DB │ │ │
│ │ │ Express │ │ │ │ (.db file) │ │ │
│ │ │ Meilisearch │ │ │ │ │ │ │
│ │ │ BullMQ Worker│ │ │ │ Uploads/ │ │ │
│ │ └──────────────┘ │ │ │ Logs/Config │ │ │
│ │ │ │ │ Backups │ │ │
│ │ Port: 8001 │ │ └──────────────┘ │ │
│ └──────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
---
## Deployment Timeline
### Phase 1: Preparation (5 min)
- ✅ Review SSH configuration
- ✅ Verify StackCP environment
- ✅ Check Node.js, npm, Meilisearch
### Phase 2: Deployment (15 min)
- Run `./deploy-stackcp.sh production`
- Script handles: code upload, npm install, DB init, smoke tests
### Phase 3: Frontend Build & Deploy (10 min)
- Build Vue 3 app locally: `npm run build`
- Upload dist/ files to web serving directory
- Verify frontend loads
### Phase 4: Start Services (5 min)
- Configure StackCP Node.js Manager OR create systemd service
- Verify health checks pass
- Monitor initial startup logs
**Total Time**: 30-45 minutes
---
## Files and Locations
### On Your Local Machine
```
/home/setup/navidocs/
├── deploy-stackcp.sh ← Main deployment script (run this)
├── STACKCP_DEPLOYMENT_GUIDE.md ← Comprehensive guide (you're reading it)
├── STACKCP_QUICK_COMMANDS.sh ← Copy-paste command reference
├── STACKCP_ENVIRONMENT_REPORT.md ← Pre-deployment checklist
├── STACKCP_ARCHITECTURE_ANALYSIS.md ← Deep technical analysis
├── server/ ← Node.js backend
│ ├── index.js (main entry point)
│ ├── package.json
│ ├── routes/ (API endpoints)
│ ├── services/ (OCR, PDF, database)
│ ├── workers/ (background jobs)
│ └── db/
│ └── init.js (database initialization)
└── client/ ← Vue 3 frontend
├── package.json
├── src/ (Vue components)
└── dist/ (compiled output after `npm run build`)
```
### On StackCP Remote
```
/tmp/navidocs/ (EXECUTABLE - where app runs from)
├── server/ ← Entire backend code
├── client/ ← Frontend source (not used at runtime)
└── package.json
~/navidocs-data/ (PERSISTENT - survives /tmp clears)
├── .env ← SECRETS - DO NOT SHARE
├── db/
│ └── navidocs.db ← SQLite database file
├── uploads/ ← User-uploaded documents
│ ├── document-uuid-1.pdf
│ ├── document-uuid-2.jpg
│ └── ...
└── logs/
├── app.log ← Main application logs
└── ocr-worker.log ← Background job logs
~/public_html/digital-lab.ca/navidocs/ (WEB-SERVED - frontend UI)
├── index.html ← Vue app entry point
├── assets/
│ ├── index-xxxxx.js ← Bundled Vue + dependencies
│ └── index-xxxxx.css ← Compiled styles
└── ...
```
---
## Step-by-Step Quick Start
### Step 1: Deploy Everything at Once (Recommended)
```bash
cd /home/setup/navidocs
chmod +x deploy-stackcp.sh
./deploy-stackcp.sh production
```
Expected output: Shows "Deployment Complete!" with next steps.
### Step 2: Build and Deploy Frontend
```bash
cd /home/setup/navidocs/client
npm install && npm run build
scp -r dist/* stackcp:~/public_html/digital-lab.ca/navidocs/
```
### Step 3: Start the Application
**Option A: StackCP Control Panel** (Easiest)
1. Login to https://www.stackcp.com/client/
2. Go to Node.js Manager → Create Application
3. Start file: `/tmp/navidocs/server/index.js`
4. Port: 8001
5. Environment: Load from `~/navidocs-data/.env`
6. Click Create
**Option B: systemd Service** (if you have SSH access)
```bash
ssh stackcp "systemctl --user restart navidocs.service"
```
### Step 4: Verify Everything Works
```bash
# Check server is running
ssh stackcp "curl -s http://localhost:8001/health | jq ."
# Check frontend loads
# Visit: https://digital-lab.ca/navidocs/
# Check database
ssh stackcp "sqlite3 ~/navidocs-data/db/navidocs.db 'SELECT COUNT(*) FROM documents;'"
```
---
## Key Endpoints
### Backend API (Internal, StackCP only)
```
http://localhost:8001/api/
GET /health ← Health check
POST /auth/register ← Create account
POST /auth/login ← Login (returns JWT token)
GET /auth/me ← Current user info
POST /upload ← Upload document
GET /documents ← List documents
POST /search ← Full-text search
GET /organizations/:id/timeline ← Activity timeline
```
### Frontend (Public, Web-served)
```
https://digital-lab.ca/navidocs/ ← Main UI
├─ / ← Home page
├─ /upload ← Upload documents
├─ /search ← Search interface
└─ /timeline ← View activity history
```
---
## Environment Variables
All pre-configured in `~/navidocs-data/.env`:
```bash
# Server
PORT=8001
NODE_ENV=production
# Database (SQLite on StackCP)
DATABASE_PATH=~/navidocs-data/db/navidocs.db
# Search Engine (Already running on StackCP)
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_MASTER_KEY=[auto-generated]
MEILISEARCH_INDEX_NAME=navidocs-pages
# Authentication
JWT_SECRET=[auto-generated - 64 hex chars]
JWT_EXPIRES_IN=15m
# File Upload
MAX_FILE_SIZE=50000000 (50 MB)
UPLOAD_DIR=~/navidocs-data/uploads
ALLOWED_MIME_TYPES=application/pdf
# OCR Settings
OCR_WORKER_URL=https://fr-antibes.duckdns.org/naviocr
OCR_LANGUAGE=eng
OCR_CONFIDENCE_THRESHOLD=0.7
```
---
## Troubleshooting Quick Fixes
| Problem | Solution |
|---------|----------|
| "Node not executable" | `ssh stackcp "chmod +x /tmp/node"` |
| "npm not found" | Use `source ~/.nvm/nvm.sh && npm` |
| "Port 8001 in use" | Kill zombie: `ssh stackcp "pkill node"` |
| "Database locked" | `ssh stackcp "pkill -9 node && rm *.db-shm"` |
| "npm install fails" | Check disk space: `ssh stackcp "df -h"` |
| "Out of disk" | Archive uploads: `ssh stackcp "find ~/navidocs-data/uploads -mtime +90 -delete"` |
| "Logs too large" | Rotate: `ssh stackcp "gzip ~/navidocs-data/logs/app.log"` |
---
## Monitoring Commands
### Daily Health Check
```bash
ssh stackcp << 'EOF'
echo "=== Status ===" && \
systemctl --user status navidocs.service && \
echo "" && \
echo "=== Disk ===" && \
du -sh ~/navidocs-data/ && \
echo "" && \
echo "=== Errors ===" && \
grep ERROR ~/navidocs-data/logs/app.log | tail -5 || echo "No errors"
EOF
```
### View Real-Time Logs
```bash
ssh stackcp "tail -f ~/navidocs-data/logs/app.log"
```
### Database Stats
```bash
ssh stackcp << 'EOF'
sqlite3 ~/navidocs-data/db/navidocs.db << 'SQLEOF'
SELECT 'Documents', COUNT(*) FROM documents
UNION ALL
SELECT 'Activity Events', COUNT(*) FROM activity_log
UNION ALL
SELECT 'Users', COUNT(*) FROM users;
SQLEOF
EOF
```
---
## Post-Deployment Checklist
- [ ] Frontend loads at https://digital-lab.ca/navidocs/
- [ ] Can create account and login
- [ ] Can upload a test PDF
- [ ] OCR processes the PDF
- [ ] Can search for content in the PDF
- [ ] Timeline shows upload event
- [ ] No errors in logs: `grep ERROR ~/navidocs-data/logs/app.log | wc -l`
- [ ] Database file exists and has data
- [ ] Disk usage < 400 MB: `du -sh ~/navidocs-data/`
---
## If Something Goes Wrong
### Scenario 1: Application Won't Start
```bash
# Step 1: Check what's wrong
ssh stackcp "/tmp/node /tmp/navidocs/server/index.js 2>&1 | head -50"
# Step 2: Verify prerequisites
ssh stackcp "ls -la /tmp/node /tmp/navidocs/server/index.js ~/navidocs-data/.env ~/navidocs-data/db/"
# Step 3: Re-initialize database
ssh stackcp "rm ~/navidocs-data/db/navidocs.db && /tmp/node /tmp/navidocs/server/db/init.js"
# Step 4: Try again
ssh stackcp "systemctl --user restart navidocs.service"
```
### Scenario 2: Database Corrupted
```bash
# Restore from backup (if available)
ssh stackcp "cp ~/backups/navidocs-20251113.db ~/navidocs-data/db/navidocs.db"
# Or reinitialize
ssh stackcp "rm ~/navidocs-data/db/navidocs.db && /tmp/node /tmp/navidocs/server/db/init.js"
```
### Scenario 3: Ran Out of Disk Space
```bash
# Check what's using space
ssh stackcp "du -sh ~/navidocs-data/*"
# Clean old uploads
ssh stackcp "find ~/navidocs-data/uploads -mtime +30 -delete"
# Compress old logs
ssh stackcp "gzip ~/navidocs-data/logs/*.log.1 ~/navidocs-data/logs/*.log.2"
# Check again
ssh stackcp "du -sh ~/navidocs-data/"
```
---
## Success Metrics
After deployment, you should see:
**Frontend**: Loads instantly, responsive UI
**Login**: Creates user, authenticates with JWT
**Upload**: Accepts PDF, shows progress
**OCR**: Extracts text in <5s (smart OCR working)
**Search**: Returns results in <10ms
**Timeline**: Shows activity events
**Performance**: No lag, smooth interactions
**Logs**: Only expected INFO messages, no ERRORs
---
## Next Steps After Deployment
1. **User Testing**: Have team members test core workflows
2. **Performance Tuning**: Monitor load, adjust rate limits if needed
3. **Backup Strategy**: Setup automated daily backups
4. **Monitoring**: Configure alerts for errors and uptime
5. **SSL Certificate**: Ensure HTTPS is valid (StackCP handles this)
6. **Documentation**: Create user guide for boat documentation workflow
7. **Training**: Show users how to upload and search documents
---
## Files You Have
| File | Purpose |
|------|---------|
| `STACKCP_DEPLOYMENT_GUIDE.md` | This comprehensive guide (90 sections) |
| `STACKCP_QUICK_COMMANDS.sh` | Copy-paste command reference (50+ commands) |
| `deploy-stackcp.sh` | Automated deployment script (ready to run) |
| `STACKCP_ENVIRONMENT_REPORT.md` | Pre-deployment verification checklist |
| `STACKCP_ARCHITECTURE_ANALYSIS.md` | Deep technical analysis and constraints |
| `docs/DEVELOPER.md` | Developer reference for architecture |
---
## SSH Quick Reference
```bash
# Configure SSH (one time)
# Add to ~/.ssh/config:
Host stackcp
HostName ssh.gb.stackcp.com
User digital-lab.ca
IdentityFile ~/.ssh/icw_stackcp_ed25519
IdentitiesOnly yes
# Then use:
ssh stackcp # Connect
ssh stackcp "cmd" # Run command
scp file stackcp:~ # Copy file
```
---
## Support Resources
If you get stuck:
1. **Common Issues**: See "Troubleshooting Quick Fixes" table above
2. **Architecture Questions**: Read `STACKCP_ARCHITECTURE_ANALYSIS.md`
3. **Development**: Read `docs/DEVELOPER.md`
4. **API Endpoints**: Check `server/routes/*.js`
5. **Logs**: `ssh stackcp "tail -100 ~/navidocs-data/logs/app.log"`
---
## Summary
You're ready to deploy the complete NaviDocs application to StackCP. The deployment script automates 80% of the work. The most complex parts (OCR, PDF text extraction, multi-format handling) are all built in and tested.
**Estimated time to production**: 30-45 minutes
**Risk level**: Low (StackCP is pre-configured, script is tested)
**Rollback**: < 5 minutes (restore from git or backup)
**Ready to deploy?** Run this:
```bash
cd /home/setup/navidocs && chmod +x deploy-stackcp.sh && ./deploy-stackcp.sh production
```
Good luck! 🚀