Back to Projects
Commercial

SkyLeger (DIMS)

Enterprise drone registry and fleet management platform for registering, tracking, and auditing unmanned aircraft — with immutable audit trails, RBAC, and offline-ready Firebase workflows.

React 19TypeScriptViteTailwind CSS 4DaisyUIFirebaseFirestoreGoogle Maps
SkyLeger (DIMS)

Project Overview

SkyLeger (Drone Intelligent Management System) is a full-stack web application for registering, tracking, and auditing unmanned aircraft across owners, institutions, and regulatory workflows. It gives regulators and operators a single source of truth for fleet records, ownership, maintenance history, and compliance investigations.

As drone adoption grows, spreadsheets are not enough. SkyLeger centralizes drone lifecycle management in a secure, auditable registry where every mutation leaves a permanent trail, roles are enforced at both the UI and database layers, and staff can work reliably even with intermittent connectivity.

Platform Screenshot

The admin portal supports bilingual navigation (English and Sinhala), responsive layouts for field and desk use, and clear status indicators across every record.

SkyLeger drone registry admin portal — fleet management and compliance dashboard
SkyLeger admin portal built with React, TypeScript, and Firebase

Key Features

Drone Registry & Lifecycle

  • Register drones with serial number, model, specs, and registration ID
  • Track status: active, suspended, deregistered, under repair, pending transfer
  • Transfer ownership between verified owners with full snapshots
  • Log repairs and hardware upgrades tied to accredited institutions
  • Serial numbers normalized as document IDs to prevent duplicates

Immutable Audit Trail

Every state change produces a DroneEvent in the same atomic Firestore batch as the aggregate update. Events are append-only — security rules forbid updates and deletes on the audit collection. Each event stores aggregate version, actor admin ID, before/after snapshots, and occurred vs recorded timestamps.

Role-Based Access Control

  • super_admin — full system access and user management
  • registrar — drone and owner registration, transfers
  • repair_admin — institution-linked maintenance logging
  • auditor — read-only access to records and audit logs

What I Built

  • Domain modeling for admins, owners, drones, institutions, and events
  • Firestore service layer with batched writes, pagination, and search
  • RBAC with auth context, protected routing, and role-gated UI actions
  • Audit system with timeline visualization and admin/drone query modes
  • Keyword indexing and token normalization across collections
  • Offline UX with persistent cache and pending-mutation banner
  • Google Maps owner geolocation with search and pin placement
  • Firestore security rules for auth, super-admin gates, and event immutability

Technical Highlights

Drone records use monotonically increasing aggregateVersion numbers. Each write reads the current document, increments the version, and commits the updated aggregate plus a new immutable event in a single writeBatch — giving regulators a tamper-evident history without a separate audit pipeline.

const batch = writeBatch(db)
batch.update(droneRef, updates)
batch.set(doc(db, EVENTS, evtId), eventData)
await batch.commit()

The codebase follows a feature-first layout (features/drones, features/owners, features/audit, etc.) with services owning all Firestore interaction and components focused on presentation.

Tech Stack

  • Frontend: React 19, TypeScript, Vite, React Router 7, Tailwind CSS 4, DaisyUI
  • Backend: Firebase Auth, Cloud Firestore, security rules, Admin SDK seed scripts
  • Integrations: Google Maps JavaScript API for owner geolocation
  • Deployment: Vercel (SPA) + Firebase backend services

Portfolio Highlights

  • Compliance-grade admin system on modern serverless infrastructure
  • Event-sourcing-inspired aggregates with immutable audit integrity
  • Regulated data workflows: RBAC, search at scale, offline resilience, bilingual UX

Key Features

  • 1Drone registry with lifecycle status tracking and ownership transfers
  • 2Immutable append-only audit events with before/after snapshots
  • 3Role-based access for super admins, registrars, repair admins, and auditors
  • 4Owner management with Google Maps geolocation picker
  • 5Institution network for repair shops and training centers
  • 6Keyword search, pagination, and offline-ready Firestore cache

Tech Stack

React 19TypeScriptViteTailwind CSS 4DaisyUIFirebaseFirestoreGoogle Maps