
Employee attendance and payroll system for a construction marketplace
A multi-surface workforce management platform built for Stroymir777 (Uzbekistan): a Telegram bot for elderly workers (one-tap check-in with native location button), a Telegram Mini App as a fallback, and a web admin panel. Geofencing (Haversine) restricts check-ins to the office radius; phone-verified Telegram contact binding eliminates PIN memorization. The payroll engine supports three pay types (monthly / daily / hourly) with policy-driven rules — late thresholds, absence fines, vacation cash-out, automatic completion bonus with admin override, and advance payments deductible per chosen month. Reports can be exported to Excel (monthly single-sheet or full-year 13-sheet workbook with summary). Stack: React + TypeScript + Tailwind + Zustand on the front, Node.js + Express + Prisma + PostgreSQL on the back, grammY for the bot. Deployed to a self-managed VPS via Docker Compose behind Caddy with automatic Let's Encrypt HTTPS. Security: bcrypt hashed PINs with AES-256-GCM encryption for admin viewing, rate-limited auth endpoints, HMAC-verified Telegram InitData.