orlov.tech
Back to projects

Staff Focus

PWA + Android for employees: KPI, tasks, motivation, WebAuthn biometrics, push, drag-n-drop dashboard, deep Frappe ERP integration

Staff Focus
ReactViteTypeScriptTailwind CSSCapacitorWebAuthnWeb PushFirebase FCMRecharts@dnd-kitEmbla CarouselService WorkerNestJSFrappe ERPRedisDocker

Problem

Employees and managers needed a fast channel to KPIs, tasks, knowledge base and motivation right from their phones — with native feel, biometric login, offline resilience and adaptation to the quirks of a Telegram Mini App.

Solution

A React + Vite PWA with FSD architecture, packaged into a native Android app via Capacitor. The backend is NestJS on top of Frappe ERP and Outline Wiki. A custom Service Worker with auto-update and MessageChannel communication. Biometrics — via WebAuthn / Passkey (not a Capacitor plugin). Profile photo upload with history and gallery. Drag-and-drop reordering of dashboard cards. Recharts-based KPI visualisation. A dedicated motivation admin: a manager configures rules, bonuses and penalties and sees per-employee salary calculations in real time.

Result

Native Android app with biometrics and push notifications, used daily by employees for task management and KPI tracking.

My contribution

  • Frontend architecture using FSD methodology
  • PWA → native Android via Capacitor with Google Play release
  • Biometric authentication via WebAuthn / Passkey (FIDO2): challenge → attestation, TouchID/FaceID support
  • Profile photo upload with history: API, swipe gallery on Embla Carousel, native camera via input capture
  • Deep Frappe ERP integration: CRUD over employees/positions/roles, sessionStorage cache with cache-bust for Telegram WebView
  • Cross-device user settings sync via Frappe User Settings DocType (shared vs per-device for mobile_tg / desktop_tg / mobile_web / desktop_web)
  • Drag-and-drop dashboard card reordering via @dnd-kit with layout persistence
  • Custom Service Worker with auto-update for Telegram Mini App, MessageChannel communication, pull-to-refresh
  • Push notifications via Web Push API (VAPID) and Firebase Cloud Messaging
  • Leader Dashboard with multi-store analytics and Recharts (KPI gauge/donut, trends, percentage charts with swipe nav)
  • Lens Matrix — 2D category × segment grid with XLSX export
  • Motivation admin and salary calculator with real-time KPI-slider forecast

Stack

ReactViteTypeScriptTailwind CSSCapacitorWebAuthnWeb PushFirebase FCMRecharts@dnd-kitEmbla CarouselService WorkerNestJSFrappe ERPRedisDocker

Next project

Jarvis

Chrome extension enhancing Itigris CRM capabilities