Peep Light v183
Pick a vessel to attribute your barge moves.
Required — pick your shift, then complete the Beginning of Shift deck log.
Tick each crew member on the vessel for your shift. Your roster stays in place for the shift window or until a crew member is checked onto another vessel.
Enter current hours on each tracked piece, plus fuel on board. Required to start shift.
| Lock | Queued | Avg Delay |
|---|
Click a row for the current vessel queue. Data refreshes upstream every 15 min.
Loading the lock report…
Find a boat
How long between two locks
Measured running time, with the lock waits counted separately.
All Transit Times
| River | Segment (upstream → downstream) | Distance | Downbound ↓ | Upbound ↑ |
|---|
No Tow-Work Time — vessels whose total barge count was identical at both locks
| River | Segment (upstream → downstream) | Distance | Downbound ↓ | Upbound ↑ |
|---|
Average time from endOfLockage at the origin lock to SOLdate at the destination lock,
matched per vessel across the last 30 days. Includes any queue wait at the destination.
"No Tow-Work" filters to vessels whose numBarges count was identical at both locks
(the API does not expose an empty/loaded breakdown, so this is a proxy for unchanged tow composition).
Weather
River and harbor weather for dispatch planning. National Weather Service (DVN) + NOAA river gauges.
River Stages
Live tailwater readings from USACE Rivergages for each Lock & Dam with a station code configured. Upstream refresh every 15 minutes. USACE Rivergages →
| Lock & Dam | Tailwater (ft) | As Of | ||||
|---|---|---|---|---|---|---|
| Loading… | ||||||
To wire a gauge, set the USACE Rivergages code on each lock from
System Utility → Locations (edit the Lock & Dam card). Look the code up at the
USACE Rivergages link above — drill in to a lock and the code appears in the page URL as sid=XXXX.
Company fleet
Add a vessel
Forms — Data Forms
Data-only forms: collect information without triggering barge-state changes or billables. Click a card to fill out the form; click Edit to change its fields.
New Data Form
No fields yet. Click + Add field to start.
Form
Deck Department
Deck-side forms and checklists — line handling, safety walks, drills, wire inspections, deck maintenance. Cards open the form modal when wired; placeholders surface a "coming soon" toast naming what the form will record.
Billing — Invoicing Board
Uninvoiced work only — pick a status and type above. Drag a tile across the buckets to triage; click one to open it.
Employees
Add an employee
last 2 events
Persons in addition to crew
Anyone aboard who isn't part of the rostered crew — passengers, USCG inspectors, contractors, mechanics. Saved to this watch's pre-sail checklist.
Daily Pre-Sailing Checklist
Pre-Sailing Checklist — Schema Editor
Add, remove, or rename checklist sections + items. Saves bump the schema version so old submissions still print with their original layout.
Weather Review
Review current conditions, forecast, and any active alerts before signing your Navigation Assessment.
Daily Pre-Sailing Checklist and Vessel Log
| Start | Finish | Description (include barge numbers handled and vessels fueled or worked) |
|---|
Engine Room / Deck Log
Print monthly crew calendars
Crew Schedule
Logs & Records
Captain-signed pre-sailing checklists, vessel logs, and other historical records.
Shipyard Time
Report a Problem
New Shipyard Order
Maintenance Dashboard
By asset
Print Deficiency Report
Log meter reading
Add component
On Charter
Deficiency
Work order
Vessel inspection setup
Vessel particulars (data sheet)
From the Certificate of Documentation. Fuel and lube oil capacity live on the vessel's tank capacities, not here.
Inspection
Edit inspection checklists
Log Service
Schedule Template
Tow Orders
Shift Orders
Trip Tickets
Open, closed, and archived (invoiced) trips for each barge in the last 90 days. Use the Status filter to view Archived.
Fueling Orders
Fuel Purchase
Company Library
Policies, procedures, and blank forms — current revision first, full history a click away.
Publish to Company Library
Library sections
Acknowledgments
Add document
Log inspection
Data Import Tools
Bulk-load reference data from CSV. Each card opens the Map Import modal where you point your CSV headers at the expected fields, then commit. Existing rows match by name and update in place; new rows are appended.
Manual data refresh
Force-clear cached USACE responses. The next request to a Locks view will hit USACE fresh. Caches normally refresh every 15 minutes.
Diagnostics — Integrity audit
Walks every per-tenant transactional file (billables, movements, trip tickets, cleaning forms, tow + shift orders, invoices, barge overlay) and flags references whose target id is no longer in its catalog. Orphans usually come from deleting a fleet / dock / customer / rate while transactional rows still pointed at it, or from test residue that didn't get fully purged. Run is cheap (single-digit ms for typical tenant size).
Backup
Download a full JSON snapshot of every tenant data file — overlay, fleets, docks, vessels, crew, customers, rates, escalators, service events, trip tickets, movements, billables, cleaning forms, audit log. The server also writes auto-backups every 6 hours; see Restore below.
Restore from backup
⚠ Restoring overwrites tenant data files. The current state of each overwritten file is automatically saved to .pre-restore-<timestamp>.json next to it before any write — so this is reversible.
⚠ Restore from backup?
Diagnostics
Audit Log
Every create / update / delete on rates, locations, customers, escalators, forms, and vessels is recorded here with a per-field diff and the user who saved it. Barge moves have their own log on the Trip Card.
Notification Channels
Configure how the server sends email + SMS alerts. The keys here are stored on the server
and never returned to the browser in plaintext — leave the __REDACTED__
placeholder alone to keep an existing secret.
Notification Routing
For each (role, notification kind) cell decide which channels are used: In-app (the bell), Email, and SMS. Email + SMS only fire when the channel above is configured and the recipient has contact info. Changes apply on the next event — existing notifications already in the bell aren't affected.
Also notify specific people
Routing above covers everyone who holds a role. Add named people here when someone should get a kind regardless of their role — the mechanic on every deficiency, say. A person who already gets it by role keeps everything the role grants; this can only add. Someone with notifications switched off on their employee record stays silent either way.
Fleets
Docks
Locations
Edit all fleets, docks, and cleaning stations from one place. Short name is shown on barge icons; Invoice name is what appears on invoices.
New location
Barge Data
Bulk import
Search & edit
Vessel Data
Bulk import
Search & edit
Assets
Bulk-import lists of barges or boats (vessels) from CSV or JSON files. Each row becomes a new record; existing records are not modified.
Barges
Boats / Vessels
Cargo
Supplies
First Aid Kit
Spill Response Kit
Fire Drill Scenarios
When a captain opens the Fire Drill form, one of these active scenarios is picked at random. Use realistic prompts (e.g. "Port Generator on fire", "Galley grease fire", "Smoke detected in engine room").
Vessel Drills
The master list of drills a vessel performs (e.g. "Man Overboard", "Abandon Ship", "Flooding / Damage Control", "Collision", "Steering Gear Failure"). Uncheck Active to retire a drill without losing its history.
Security Drills
The master list of security (ISPS) drills a vessel performs (e.g. "Bomb Threat", "Stowaway Search", "Unauthorized Boarding", "MARSEC Level Change", "Cyber Security Incident"). Uncheck Active to retire a drill without losing its history.
Asset Types
Every asset (vessel + shore gear) carries an Asset Type. The Type drives the schedule-template kind filter ("all towing-vessel oil changes due") and the auto-spawned component list ("a crane gets engine + hydraulics + boom + hoist on create").
Asset Type
Service Templates
The list of recurring services that appear in the Maintenance → Schedule Templates editor (e.g. "Engine Oil Change", "USCG Inspection"). Add tenant-specific entries here.
Service Template
Interval Presets
Values that appear in the Schedule Template's "Interval value" dropdown for each interval type. Want a 4-hour quick-check or a 120-hour weekly schedule? Add it here.
Interval Preset
Supply Categories
Categories used by the Supply Catalog (Cleaning, Batteries, Safety, etc.) for grouping the supply request form.
Supply Category
Barge Size Classes
Values that appear in the Barge Data form's "Size class" select (Jumbo, Standard, Mini). Drives rate-matching.
Barge Types
Values that appear in the Barge Data form's "Type" select (Open Hopper, Tank, Deck, Crane).
Payment Methods
Values that appear in the Billing → Payment form's "Method" dropdown (Check, ACH, Wire, etc.).
Cleaning Types
Values that appear in the Barge Cleaning form's "Cleaning type" select (Sweep and Wash, Sweep Only, Cover Work Only).
Cover Work Types
Values that appear in the Barge Cleaning form's "Cover work performed" select (None, Spread, Stack).
Shift Patterns
Crew rotation patterns shown in the Crew Schedule editor. Each row has a display name + a free-form pattern descriptor.
Status Icons
Turn an icon on to show it in the Fleet Diagram legend and make it selectable in the barge right-click editor. Rename any icon to suit your operation; clearing the name restores the default.
Dock Actions
Short tags shown in the dock-order form's Action dropdown. Reorder by name only; the form sorts entries alphabetically.
Vessel Component Types
The component catalog behind "+ Component" on the Maintenance → Assets vessel cards — one entry per kind of gear (winch, searchlight, pump, …) with its spec fields. The slug is stored on every recorded component and is what schedule templates match on, so it locks after create. Deleting a type never touches components already on file.
Fuel Items
Products shown in the fueling-order item dropdown (create, edit, and complete). Quantities are entered per order line, not here.
New component type
Catalog Row
Shift pattern
GL Accounts
Chart-of-accounts entries that get stamped onto invoice exports. Link an account to a rate (System Utility → Billing Config → Rates) and every billable on that rate carries the GL line through to the accounting software's import. Account # is what most systems match on.
Customers
Permissions
Every role and position side by side — click a cell to toggle it; changes queue until you save. A crew member's access is the union of their role column and their position column: grants add up, and unchecking an on-by-default control (barge moves) blocks it from either side. Home is always visible (so users can log in/out), and System Administrator always has every permission (locked column). Click a column's name to see exactly which crew it governs, or use the inspector below the grid for any one person's merged access.
Pick a crew member to see their merged access — role and position combined, with each grant attributed to its source. Unsaved matrix edits are included, so this always previews access after Save.
Landing Rules
Pick where each position, role, or department lands after login. Resolver order: position → role → department → default. First match wins. Captains always land on Home until they pick a vessel and shift.
By position
By role
By department
Default (when nothing matches)
Used for any user whose position/role/department isn't listed above.
Billing Cycle Schedules
Recurring auto-close rules. Each one fires the same logic as the manual "Close Billing Cycle" button on the Billing Board.
New billing-cycle schedule
Tail Stages
Pick which Locks & Dams' tailwater readings show at the top of every page. Readings come from USACE Rivergages and refresh automatically every 5 min while you're using the app. Only locks with a USACE location code on file appear here — set codes in River Stages.
| Pin | Lock & Dam | Waterway | Tailwater (ft) | Flood (ft) | As of |
|---|
Fleeting Rules
Bidirectional rules that govern how barges move and bill between operational zones (e.g. Muscatine ↔ Linwood). Each rule covers both directions of the zone pair: one row, two scenarios. The billing rate field names the rate to charge for fleet → fleet shifts across the pair; the block fleet → dock toggle refuses internal-vessel drops at a cross-zone dock.
Intra-Dock Moves
Group the docks that an internal vessel may shuffle barges between directly (e.g. HS East, HS West, HS Offload). While a group is Active, moves within it are non-billable and don't accrue fleeting — treated as an intra-dock move. Turn a group Off to bill those moves as standard moves again (the move itself stays allowed).
Charters
Bill customers for chartering our internal barges & vessels. Enter the assets and a per-asset rate, pick per‑day (days × rate) or flat billing, and a close schedule (e.g. last day of every month). On close, one billable per asset lands in the pending billing bucket for that customer.
Custom Rules
User-defined billing rules. Evaluated before the built-in patterns — when one matches, it overrides whatever the built-in classifier would have produced. Rules are ranked by priority (lower number wins); ties break by who was added first. Each rule needs at least one location side (From or To) set so it doesn't accidentally match every move.
Company Settings
Your business identity. The values below populate the Bill From block on every invoice, the ACH instructions in the invoice footer, and the customer-facing contact line. Leave any field blank to hide that line on invoices.
Billing Rules
Read-only audit. Each row below is a movement pattern the system auto-detects and bills. The matching rate is resolved by name at billing time, so anywhere you see a ⚠ missing badge, bills generated by that pattern will be $0 until you add an active rate with that name in System Utility → Rates.
Data Import
Import barge movement history and current locations from a CSV or Excel export. The dry-run reports what will change before any data is written.
Map source columns → our fields
For each of our system's fields, pick the matching column from your CSV. Required fields are marked with a red asterisk; the import won't run until each is mapped.
Map unknown names → catalog entries
Each row below is a name from the source file that didn't resolve. Pick the canonical entry from your catalog. Saved mappings apply to every future import, so you only have to map each variant once.
Data Export
Download barge events, movements, billables, trip tickets, and service events. Date range is optional — leave blank to export everything.
Accounts Receivable Aging
Open invoice balances per customer, bucketed by days since issued. Voided invoices and fully-paid ones are excluded.
Fuel, Lube & Oil Usage (Fleet-wide)
Engine hours, fuel consumed (generator burn subtracted via rated gph), lube and oil usage, purchase costs, and burn rate per internal vessel. Pick a period and run the report.
Customer Revenue Summary
Total billable revenue per customer over a date range. Includes barge and service events. Leave dates blank to include everything on record.
Fleet Activity
Track barge counts over time by fleet or harbor. Occupancy averages the daily barge count for each bucket; inbound / outbound total moves into / out of each location during the bucket.
Permission Audit
Every HTTP endpoint the server exposes, with its auth gate. Visible to System Administrators only. Hand-curated next to the route definitions in server.js; if a route's gate changes, update its catalog entry at the same time.
Emulate User
See and operate Peep Light exactly as another employee — their navigation, permissions, landing page and data. Useful for chasing bugs that only show up in someone else's view. Anything you do while emulating is real and is recorded under their name; the start and end of every emulation is written to the Audit Log under yours.
Customer Portal
Customer logins and per-person grants, the movement-request approval queue, invoice disputes, consignment activity, and per-customer validation profiles. Movement requests and consignments both wait for a dispatcher; consignments never bill, and un-consigning applies immediately. Customers sign in at /portal.
Off here beats on anywhere else, whatever a person's own grants say. Nothing is erased — switch it back on and everyone's grants come back exactly as they were.
One line on their dashboard after a release they can actually notice. Each person dismisses it for themselves; a new date shows it again. Leave the text empty to show nothing at all.
— none —
Approving creates a real order first. The editor under each request pre-fills a normal tow/dock order — adjust, create, and the request flips to Live linked to it.
| Received | From | Request | Checks | Status |
|---|
| Invoice | Customer | Amount | Dispute |
|---|
Informational — consignments never need approval. Un-consigns that crossed a live dock order carry a flag.
| Barge | Dock | Consigned | Entered by | Status |
|---|
Checks that screen customer requests before they reach the queue. Block refuses at submit (reason shown to the customer) · Warn reaches the queue flagged · Off skips it. Per-customer overrides win over tenant defaults.
| Contact | Customer | Status | Last sign-in | Last active | Active — last 7 days |
|---|
Active time counts 5-minute windows carrying at least one request — an open tab sitting idle counts nothing. Employee “view as” sessions are excluded. Recording began 18 Aug 2026; earlier use was never recorded. Times Central.
⚠ Wipe vessels & crew
Permanently delete every vessel and crew member. Other tenant data (barges, fleets, docks, customers, rates, trip tickets, movements, billables) is not touched. Use System Utility → Data Export → Bundle to save a full snapshot first.
⚠ Wipe vessels & crew?
This action permanently deletes:
- All vessels (towboats, customer vessels, external boats)
- All crew records (employees, captains, deckhands, tankermen)
Everything else is kept:
- Barges (catalog & overlay) and their fleet positions
- Fleets, docks, cleaning stations, locks & dams
- Customers, rates, escalators, service event types
- Trip tickets, movements, billables, cleaning forms
- Tow orders, shift orders, fuel purchases, audit log
This cannot be undone unless you have a backup. Use Data Export → Download bundle first if you're unsure.
Billing Rates
Define billable actions and the rate charged for each. The Trigger field describes what trip-card movement counts.
Escalators
Surcharges added on top of the base rates — fuel, high water, etc.
Service Events
Templates for one-off billable services (Lock Assist, Tug Assist, Pumping, Fuel Transfer, etc.). Each one becomes a button on the fleet board.
Service-event types don't carry their own GL — they ride on the linked rate's glAccountsByZone. Each card below shows the linked rate's per-zone GL; click the rate name to jump to the rate editor.