// 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)
- Desktop working notes — while an incident is open, a sticky scratchpad sits beside the detail view (autosave). Not emailed, hidden on narrow/mobile layouts
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
- Pause / Resume — park a live event with a PAUSED badge (stays on Command/mobile); SLA keeps counting; the work stopwatch stops until you resume
- 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 checkbox — mark a task urgent for Command / Wall / mobile even without a due date
- Urgent tasks panel on the dashboard (overdue + due today + flagged urgent)
- 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.
Long-Term Projects
Track multi-week work separately from break/fix. Projects never enter SLA, aging alerts, Wall panels, or digests.
- Markdown overview (goals / scope) plus append-only timestamped progress notes
- Status: Open / Closed only, with opened / updated / closed timestamps
- Optional link to one asset — Projects card appears on that asset’s detail page
- Per-project working notes pad (autosave) beside the detail view
- Global scratchpad embedded beside the projects list (same pad as
/scratchpad) - PDF export (overview + progress log + working notes)
- Included in global search and the audit trail
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 to you listing tasks due within 7 days (
MAINT_REMIND_EMAIL) - Auto-log on completion — marking a maintenance task done automatically creates a resolved Maintenance incident as a permanent record
- Selective contact notify — per-task toggle (off by default). When on, marking Done emails that asset’s contacts via the auto-logged incident. Due dates alone never email contacts.
- 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, projects, 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
- Create, update, and close-out actions on assets, incidents, and projects are logged with a timestamp
- Field-level diff — shows before and after values for each changed field inline
- Filterable by entity type and entity ID
Scratchpad
- Personal autosave notepad at
/scratchpad— not tied to any asset or incident - Also embedded beside the long-term projects list for quick access
- Separate per-project and per-open-incident working notes (desktop) — see Projects and Incidents above
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/. Authenticate with header X-API-Token.
GET /api/v1/health— health check (requires token when API is enabled)GET /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 the API entirely (endpoints return 401).
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
Dedicated standalone views independent of the desktop layout:
-
Wall Display (
/command/wall) — fullscreen TV / wall board. No interaction, no sidebar. 2×2 layout: live events, outages/tasks/maint, last-24h activity, and local weather. Weather via Open-Meteo (current, 3-day, next-8-hour strip, sunrise/sunset), a binary NWS storm alert (No Storm Alert / Storm Alert ⚠), and a stacked NOAA SWPC space-weather meter (No Space Weather Alert / Space Weather Alert) forWALL_WEATHER_ZIP(see Config). Local clock, last-sync stamp, 30s auto-refresh, session keepalive ping. Add?kiosk=1to hide the cursor and bump type size for a mounted display. -
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 a mobile page 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)
- Asset required, plus incident type and optional 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)