Comprehensive guide to all new features added in v2.2 β Phase 1 Compliance, Phase 2 Operational Tools, Phase 3 Client Portal.
| Phase | Feature | Who uses it |
|---|---|---|
| Phase 1 | Pre-Flight Risk Assessment (with PDF export) | Pilots, Admins |
| Phase 1 | Flight Log screen (all completed flights, CSV + PDF) | All roles |
| Phase 1 | Expiry Alerts β daily email + dashboard banners | Admins (receive), Pilots (benefit) |
| Phase 2 | Ops Calendar β week-view flight timeline | All roles |
| Phase 2 | Maintenance Scheduler β schedule + mark done | Admins |
| Phase 2 | Battery Health Tracking β enhanced pack management | Admins |
| Phase 2 | Max Wind Speed per drone β weather integration | Admins |
| Phase 2 | Location GPS Coordinates β Lat/Lon fields | Admins |
| Phase 3 | Client Portal β token-gated public read-only URL | Admins (manage), Clients (view) |
Every approved flight request now has a Risk Assessment button (π‘οΈ). Clicking it opens a form where the assessor documents identified hazards, mitigations, public proximity, airspace class, and an overall risk rating. The completed assessment is saved permanently against the flight and downloadable as a signed, dated PDF suitable for your operations folder or CAA audit.
| Field | Required | Guidance |
|---|---|---|
| Identified Hazards | Required | List every hazard: environmental (wind, visibility), operational (BVLOS risk, other aircraft), site-specific (people, structures, powerlines). One per line or numbered list. |
| Mitigations | Required | For each hazard, state the control measure that reduces the risk to an acceptable level. E.g. "Maintain 50 m lateral distance from all uninvolved persons at all times." |
| Public Proximity Notes | Optional | Note footpaths, roads, car parks, public gathering points within 100 m. Include estimated numbers of uninvolved persons during planned operation window. |
| Airspace Class / NOTAMs | Optional | State the airspace classification at the planned operating height (e.g. Class G below 700 ft). List any active NOTAMs. Note FISO / ATC contact if notification is required (ATZ, CTR). |
| Overall Risk Rating | Required | Post-mitigation risk level: Low / Medium / High. This is the assessor's professional judgment after applying all listed mitigations β not the same as the location's base risk. |
| Assessed By | Required | Full name of the person completing the assessment. This becomes the signatory on the PDF. |
After saving the assessment, click Download PDF to get a formatted document showing:
The Flight Log is a new top-level screen (sidebar: Flight Log) that surfaces only Completed flights in a clean, print-ready table. Unlike the Flight Requests screen which shows all statuses and includes the approval workflow, the Flight Log is purpose-built for regulatory record-keeping, pilot logbook submissions, and operational reporting.
Scope to a single pilot's completed flights β for individual logbook review, licence renewal, or insurance submissions.
All flights logged against a specific airframe β supports maintenance interval decisions and depreciation calculations.
From / To date pickers produce period summaries β monthly, quarterly, financial year, or any custom range.
Client-side filter on pilot name, drone, location, or purpose β instant results without re-fetching from the server.
All filtered rows exported as a spreadsheet. Compatible with Excel, Google Sheets, and any reporting tool. Includes all table columns.
Server-rendered PDF via pdfkit. Includes a header with company name and date range, then one row per flight in a formatted table. Printable and signable.
A daily scheduled job runs at 07:00 server time and checks every active pilot's certification expiry date and insurance expiry date against the configured alert threshold. If any pilot is expiring within the threshold window, an email is sent to the Drone Manager Email configured in Settings.
| Field | Where set | Alert trigger |
|---|---|---|
| Pilot licence expiry | Pilots screen β expiry date field | Within Alert Days threshold (default 30 days) |
| Pilot insurance expiry | Pilots screen β insurance expiry field (new) | Within Alert Days threshold |
Set the alert window in Settings β Expiry Alerts β Alert Days. Increasing this gives more lead time β useful for certifications that take weeks to renew (GVC, operational authorisations).
Regardless of email configuration, the system shows:
The Ops Calendar is a new top-level screen (sidebar: Calendar) showing a MonβSun grid of all flight bookings. Every flight request in a non-terminal state (Approved, Completed, Submitted, Pending Manager, Pending Admin) appears as a colour-coded card in its day column. Today's column is highlighted. Navigate week by week with the Previous / Today / Next controls.
Each card shows:
| Status | Card colour | Meaning |
|---|---|---|
| Approved | Green | Cleared to fly |
| Completed | Blue | Flight has taken place |
| Submitted / Pending Manager | Amber | Awaiting approval |
| Pending Admin | Orange | High-risk β admin review required |
Click Filters to show dropdowns for Pilot, Drone, and Location. Active filters are indicated by a β dot on the Filters button. Useful for scheduling coordination β e.g. "Show all flights assigned to Drone X this week."
The Maintenance Scheduler adds a dedicated Schedule panel to each drone. Unlike the existing Maintenance Log (which records past work), the Scheduler is forward-looking β create tasks with a due date, assign a technician, and mark them done when complete. Overdue tasks trigger a fleet-wide warning banner on the Drones screen.
Click the Schedule icon on the drone row.
Choose a task type (Routine Service, Inspection, Repair, Battery Check, Firmware Update, Other), set a due date, assign a technician, and add notes.
The actual completion date is recorded. The task moves to Completed status and no longer appears in overdue counts.
Any scheduled task whose due date has passed and is not marked done causes a red warning banner at the top of the Drones screen listing the drone name, task type, and how many days overdue it is.
The existing battery panel (π on each drone card) has been significantly expanded. Previous version tracked: label, cycle count, last-charged date, notes. New version adds health %, battery status, purchase date, last-used date, and drone model β enabling proper lifecycle decisions rather than just cycle counting.
| Field | Values / Format | How to use |
|---|---|---|
| Health % | 0β100 integer | Manufacturer's or measured remaining capacity. Flag packs below 70% for retirement review. |
| Battery Status | Active / Degraded / Retired | Active = in service. Degraded = monitor closely. Retired = removed from service, kept for reference. |
| Purchase Date | Date | Calculate age against expected service life (typically 2β3 years for LiPo). Auto-flag old packs. |
| Last Used | Date (auto-stamped) | Identifies idle packs that may need a conditioning cycle before next use. |
| Drone Model | Free text | Ensures packs aren't accidentally assigned to incompatible airframes (voltage / connector mismatch). |
Admins can now fetch all battery packs across the entire fleet (not just per-drone) via the updated API, enabling future fleet-wide battery health dashboards.
Set a Max Wind Speed (m/s) on each drone in the Edit Drone form. This value is used by the weather RAG engine when evaluating a flight:
Top-level Locations now have Latitude and Longitude fields. When set, these are used directly for weather geocoding instead of address-based lookup β more accurate for rural sites and locations without a precise postal address.
The Client Portal gives external stakeholders (property owners, site managers, clients) a read-only, public URL that shows all approved and completed flights at their location. The URL contains a cryptographically random token β it's secure without requiring the visitor to log in. Admins can revoke the token at any time, instantly cutting off access without changing any system configuration.
The inline portal panel expands below the location row.
A 32-byte random token is created and stored. The portal URL is displayed: https://drone.fkrisztian.co.uk/portal/[token]
Send it to the client by email, WhatsApp, or any channel. Anyone with the URL can view the portal immediately β no account needed.
Click Revoke in the portal panel. The token is deleted from the database immediately. Any visitor using the old URL gets a 404. Generate a new token if access is needed again.
GET /portal/:token serves a self-contained HTML page β no React bundle, no cookiesGET /api/portal/:token returns JSON β no JWT required; token acts as the credential| Plan | Users | Included Features |
|---|---|---|
| Solo | 1 admin + up to 5 operators | Dashboard, Flight Requests, Pilots, Drones, Locations, Approvals, Incidents, Training, Weather, Map, Import Footage, Site Documents, User Management, Settings, Audit Log |
| Team | Unlimited users | All Solo features + SOC View (separate port), Client Portal (token-gated), Flight Log, Ops Calendar, Pre-Flight Risk Assessment (PDF), Maintenance Scheduler, Battery Health, Expiry Alerts (email) |
| Enterprise | Unlimited + multi-site | All Team features + priority support, custom branding, dedicated onboarding |
The current status shows: key entered, validation state, customer name, plan, and expiry date.
Format: XXXX-XXXX-XXXX-XXXX (16 characters in 4 groups of 4).
The system contacts the licence server immediately. On success, the status updates to Valid and the plan tier is shown.
The licence is cached for 7 days. Recheck forces an immediate re-validation if you've upgraded your plan and want the new features unlocked now.