Jan 2025 – May 2026
OLA — Cruise Ship Outfitting Tracker
Full-Stack Dev + AI Pipeline Engineer
Offline-first full-stack app for MASER Engineering: tracks the outfitting of thousands of cabins across luxury cruise liners. AI pipeline (YOLO + OCR) auto-extracts cabin layout from PDF deck plans.
Context
MASER Engineering manages the interior outfitting of luxury cruise liners at the Saint-Nazaire shipyard. The process involves tracking thousands of tasks across hundreds of cabins and wagons (work zones) — wagon by wagon, cabin by cabin — with operators working in low-connectivity shipyard environments.
The existing process relied on paper records and disconnected spreadsheets. OLA replaces it with an offline-first application that syncs automatically when operators are back in range.
Technical Stack
| Layer | Technology |
|---|---|
| Frontend | Vue 3 + Quasar Framework |
| Offline sync | IndexedDB (client-side) |
| Backend API | Node.js (ESM) + Express 5 |
| Database | PostgreSQL 16 |
| Containerization | Docker Compose (db, api, frontend, pgAdmin, nginx) |
| Excel import | exceljs |
| PDF handling | pdfjs-dist + multer |
| AI — Cabin detection | YOLO (Roboflow hosted) + ONNX (client-side) |
| AI — OCR | Text extraction from PDF deck plans |
Database Architecture
18 business tables + 2 auth tables + 7 analytical SQL views. Normalized to 3NF, centered on a projet root entity (1 project = 1 ship). UUID primary keys throughout. ON DELETE CASCADE for the project tree, SET NULL for optional links.
- Key entities: projet, operateur, lot, cabine, wagon, tache (25 columns), probleme, bordereau, nomenclature
- Views: v_tache_detail, v_operateur_heures_journee, v_avancement_wagon, v_cabine_avancement, v_tache_sessions_total, v_problem_report, v_bordereau_tracker
AI Pipeline
A YOLO object detection model — trained on deck plan PDFs — identifies cabin rectangles on ship floor plans. An OCR pipeline then extracts cabin numbers from PDF annotations. The output is cross-checked against the client nomenclature (imported via Excel) to validate cabin IDs and eliminate manual data entry entirely.
Key Features
- Offline-first: operators log work with no connectivity, sync on reconnect
- PDF deck plan import: AI automatically extracts cabin layout
- Nomenclature import: Excel cross-check validates cabin IDs
- Pointage (timesheets): FP-21 format weekly personal sheets
- Problem tracking: issues attributed to MASER or shipyard (CHANTIER)
- Role-based access: app_user + user_membership (user × project × role)
Audit
Full backend and database architecture audit delivered April 16, 2026. Scope: API + database (frontend excluded). Ships covering vessels Z34, Y34, E35, B36.