// FEATURE OVERVIEW
Asset Registry
Every system you're responsible for lives here — servers, workstations, laptops, network gear, VMs, and anything else.
- Type, OS, IP/hostname, location, tags, serial number, model, purchase date, admin URL
- Status flags: Online / Offline / Maintenance / Decommissioned with quick toggle from the list
- Warranty expiration tracking — dashboard alerts at 90 and 30 days, expired badge on detail
- Department groups with filterable list view
- Health score (A/B/C/F) — factored from open issues, warranty status, asset age, and current status
- Custom fields — add arbitrary key-value metadata per asset
- Assignment tracking — assigned to, date, and condition (New / Good / Fair / Poor / Refurbished / End of Life), with full timestamped assignment history
- Network / topology notes — freeform Markdown field per asset for documenting cabling, VLANs, dependencies
- QR code generation and clean one-page print sheet
- Full asset PDF report — one-click PDF covering all metadata, assignment history, maintenance schedule, open and historical incidents, software licenses, and custom fields
- Activity age indicator on the asset list — shows how long since the last incident
- Aging assets panel on the dashboard for assets 5+ years old
Incidents
The core log. Four incident types:
- Break/Fix — problem and resolution, with severity (Critical / High / Medium / Low)
- Upgrade — hardware or software upgrades
- Maintenance — scheduled preventive work
- Note — general record-keeping, observations
Each incident supports:
- Markdown body with preview
- Time spent (free text:
1h 30m, stored as minutes) - Live stopwatch timer — start/stop on the incident detail page, elapsed time auto-added to time spent
- Response time tracking — records time from incident creation to first follow-up note
- Drag-and-drop file and image attachments (100 MB limit, inline preview with lightbox)
- Follow-up notes — append timestamped updates without a full edit; updates the "last activity" timestamp
- Incident checklist — sub-task steps with AJAX check/uncheck
- Optional Root Cause Analysis — 9 structured fields, exportable as a standalone PDF and attached to notification emails
- Recurrence flag — auto-tagged if the same asset had a break/fix within 90 days
- Duplication — pre-fill a new form from any existing incident
- Incident templates — save form presets for repeatable jobs
- Print to PDF (WeasyPrint)
Live Event Workflow
For active outages where you need a running log before knowing the resolution:
- Open Live Incident — saves as a draft with a pulsing LIVE badge
- Append follow-up notes in real time — no full edit required
- Send Sitrep — while live, email contacts a situation report (
IT Sitrep:subject) that includes the full running notes log - Close-Out form — resolution details, time spent, optional RCA, close with or without email; close-out emails stay formal (
IT Update:) and omit the notes thread - Live incidents appear in a dedicated panel on the dashboard and mobile command dashboard
- SLA timer runs on live incidents — they are included in breach detection
- One-tap close from the mobile interface
SLA Tracking
Configurable resolution targets per severity. Open break/fix incidents — including active live events — are checked against thresholds continuously.
- Defaults: Critical 8h / High 24h / Medium 72h / Low 168h
- Override via environment variables (see Config)
- Breach panel on the dashboard and mobile command page — shows incident age, target, and hours overdue
- Aging alert emails fire on open incidents older than a configurable threshold (separate from SLA)
Task Board
- Priorities: Low / Medium / High
- Statuses: Open / In Progress / Done
- Optional due date with overdue flagging
- Link tasks to assets or incidents
- Quick status toggle from the task list (no page reload)
- Urgent tasks panel on the dashboard (overdue + due today)
- Create an incident directly from a linked task
- Tasks appear on related asset and incident detail pages
- Task aging badges — open tasks display their age in days. ▲ amber warning after 7 days, ⚠ red critical after 14 days. Visible on the task board, dashboard, and mobile view.
Maintenance Scheduling
- Attach recurring schedules to any asset (weekly / monthly / quarterly / annual)
- Custom start date to stagger when items come due
- Mark done — hides from dashboard until next cycle
- "Due This Week" panel on the dashboard and mobile command page
- Daily email reminder listing tasks due within 7 days
- Auto-log on completion — marking a maintenance task done automatically creates a resolved Maintenance incident as a permanent record
- Calendar view shows maintenance alongside incidents and tasks by month
Downtime Tracker
- Start and stop outage timestamps on any asset
- Auto-calculates total downtime and MTTR per asset
- Active outages panel on the dashboard and mobile command page
- Ping monitor can automatically open and close outage records
Software License Inventory
- Track software name, vendor, license type, key, seat count, and expiry per asset
- Expiring licenses panel on the dashboard (within 90 days)
- License details included in the full asset PDF report
Vendor Directory
- Standalone vendor records: contact name, phone, support email, support URL, contract number, SLA terms, notes
- Link vendors to assets — vendor support card appears on the asset detail page
- Vendor details included in the full asset PDF report
Knowledge Base
- Markdown articles with tag filtering and full-text search
- Link articles to specific assets or incident types
- File attachments — images render inline with lightbox; PDFs as download links
Global Search
- Searches assets, incidents, KB articles, and tasks simultaneously
- Results grouped by type with status badges and direct links
- Press
/from anywhere to focus the sidebar search bar
Audit Trail
- Every create, update, and close-out action on assets and incidents is logged with a timestamp
- Field-level diff — shows before and after values for each changed field inline
- Filterable by entity type and entity ID
Reports
- Year-over-year trend report — full historical view since first incident. Annual summary table with counts, resolution rate, and hours. Three charts: incidents per year (bar), hours logged per year (bar), resolution rate over time (line). Severity breakdown by year. Top 15 assets ranked by total incident count.
- Month-end PDF — incidents logged, time spent, open issues, assets worked on. Download from the UI or receive via auto-email on a configurable schedule.
- Time tracking report — total hours by month (bar chart), by asset, and by incident type.
- Time log — filterable list of all incidents with time recorded; filter by date range, asset, and type.
- Full asset PDF report — per-asset PDF covering all metadata, history, maintenance, and licenses.
- Database backup — download the live SQLite file from Admin → Backup DB.
Email & Alerts
- Per-incident notifications to any number of contacts — each gets an individual email
- Lead line: “There is an update to your issue.” (does not imply resolution while still open)
- Live sitrep emails include the follow-up notes thread; close-out / standard emails do not
- RCA attached to standard notification emails as a PDF
- Resend email from the incident detail page
- Notification log at Admin → Notifications
- Weekly digest — configurable day and hour (UTC)
- Aging alerts — daily email for open incidents with no activity older than N days (configurable, can be disabled)
- Maintenance reminders — daily email listing tasks due within 7 days
- Auto monthly report — configurable day and hour
REST API & Webhooks
Token-protected JSON endpoints at /api/v1/:
GET /api/v1/health— unauthenticated health checkGET /api/v1/assets— all assets as JSONGET /api/v1/assets/<id>— single assetGET /api/v1/incidents— filter bysystem_idorresolvedstatusPOST /api/v1/incidents— create an incident from an external tool (RMM, monitoring script, cron job)
Leave API_TOKEN blank in .env to disable token enforcement.
Outgoing webhooks — Field Log can POST a JSON payload to any URL on incident create/update. Works with Slack, Teams, ntfy, and any custom endpoint.
Mobile & PWA
Three dedicated mobile views, all standalone pages independent of the desktop layout:
-
Mobile Command Dashboard (
/command/mobile) — read-only status page designed for a quick phone check. Shows SLA breaches (most overdue first), live incidents with elapsed time, active outages with running duration, urgent tasks, and maintenance due this week. Quick-action strip for Log Incident, Tasks, and Assets. Auto-refreshes every 60 seconds. -
Quick Log (
/quick) — one-handed incident logging. Searchable asset picker, incident type pills, severity, template picker, resolved-now toggle. Offline guard — detects when your device has no server connection and blocks the submit, keeping your form data safe until you reconnect. -
Mobile Tasks (
/tasks/mobile) — scrollable task card list with priority, due date, and aging badges.
PWA install support — on Android/Chrome, tap "Add to Home Screen" from any of the three pages to install Field Log as a standalone app with an amber icon and no browser chrome.
Offline caching — a service worker caches pages as you browse them. If your server is unreachable, you can still view your last-known command dashboard, asset list, task list, and any recently visited pages. A live connection status bar at the bottom of each mobile page shows ● LIVE // sync Xs ago or ■ OFFLINE // last sync Xm ago.
Asset Ping Monitor
- Pings all assets with an IP address on a configurable interval
- Automatically opens an outage record when a host stops responding
- Automatically closes it when the host comes back
- Status page at Admin → Ping Monitor with last-result timestamps
- Manual sweep button
- Enable with
PING_ENABLED=truein.env(disabled by default)
Import & Export
- CSV export — all incidents, or filtered by asset, as a spreadsheet download
-
CSV bulk import (
/import/assets) — upload a spreadsheet to create multiple assets at once. Supported columns: name, system_type, OS, IP, location, group, tags, serial, model, vendor, purchase date, warranty expiry, admin URL, notes. Skips rows where the asset name already exists and reports them clearly. Downloadable blank template available from the import page.
Recurring Incidents
- Define jobs that auto-create incidents on a weekly or monthly schedule
- Configurable day of week (weekly) or day of month (monthly)
- Optional asset link, incident type, and body text
- Runs automatically every day at 06:30 UTC — no manual action needed
- Full CRUD management at Admin → Recurring
Easter Eggs
Two small games are hidden in the desktop UI. Type the activation word anywhere on a page — not inside a search box or form field.
SNAKE— classic snake (arrow keys / WASD, Esc to exit)BOOM— minesweeper (medium board; progress and best time saved locally)