My Work
Projects
Selected web projects by Nodirbek Iskandarov — built with React, Next.js, TypeScript, Go and MongoDB. Source code and live demos included.

Corporate HR & Attendance Portal
The largest system I have built: an internal portal that covers the full employee lifecycle for a large organization. Attendance is collected from Hikvision turnstiles through a dedicated onboarding flow, then aggregated into per-employee and per-department monitoring views. Beyond attendance it carries an employee directory, org-structure management, an appeals workflow with multi-step approval, internal news and messaging, OAuth client management for integrating downstream systems, an audit log, and an analytics layer built on Highcharts. Around 30 distinct pages, each with its own role-based access rules. ONNX Runtime runs in the browser for on-device inference without sending data to a server.

SIAT — Statistical Registry Admin Panel
A large Vue 2 administrative panel for managing statistical classifiers and registry data. Handles multi-level classifier hierarchies with full CRUD at every degree, an internal messaging system with create/edit/view flows, and an integration log viewer for tracing data exchange with external systems. Rich text editing through Quill, charts via Chart.js, client-side encryption with crypto-js, and full i18n. The largest single-framework codebase I have worked on — roughly 37k lines of Vue single-file components plus 16k of SCSS.
AI-Powered Learning Platform
A full-stack learning platform where Claude acts as a tutor. Courses break down into modules and topics; each topic carries lesson content, practice tasks that are graded by the model, and a chat thread scoped to that topic so the conversation keeps its context. Progress is tracked per user and per topic. Includes an admin panel for per-user course access control and a progress viewer. Built on the Next.js App Router with NextAuth for credentials and Google sign-in, Prisma over SQLite (libSQL), and a glassmorphism UI. Deployed with Docker behind Caddy with automatic HTTPS.

Agricultural Land & Social Facility Survey Monitoring
A field-survey monitoring system built around interactive maps. Surveyors' coverage of agricultural land parcels and social-sphere facilities is plotted on Leaflet maps with Geoman drawing tools, so polygons can be drawn and edited directly in the browser. Includes district-level search with a dedicated modal and loading states for mahalla-level data, several distinct map pages for different survey rounds, and a dashboard aggregating completion rates. Ant Design for the interface, Redux Toolkit for state, with a test suite on React Testing Library.

Narxtahlil — Price Analysis & Forecasting
A consumer-price analytics product covering Uzbekistan. Prices are broken down by market, by region and by product, with a dedicated comparison view for putting several products or regions side by side, a forecasting page, and an inflation-expectations section. Region geometry is rendered from GeoJSON for every province, giving a choropleth view of price levels. Each product has its own detail route with historical series. A methodology page documents how the figures are derived. Built on the Next.js App Router with Recharts, including a fullscreen chart mode and light/dark theming.

Registration GIS Monitoring Dashboard
A GIS dashboard that tracks registration coverage down to mahalla level across Uzbekistan's provinces. Maps are rendered with MapLibre GL through react-map-gl, and polygon-clipping is used to compute overlaps and merge administrative boundaries on the fly. The mahalla view drills from province to district to neighbourhood with live counters, and generated QR codes link field staff straight to the relevant record. Multilingual interface, Redux Toolkit for state, animated transitions with Framer Motion.

BarberApp — Booking Platform (Mobile + Admin + API)
The one project where I owned all three tiers. A NestJS backend exposes the API with JWT auth, TypeORM over PostgreSQL, scheduled jobs, WebSockets for live booking updates, and a Telegram bot for notifications. The React Native (Expo) client separates barber and client roles: barbers manage their portfolio, bookings and earnings; clients browse, book and review. Auth supports OTP, Telegram login and role selection, with device and location APIs for finding nearby barbers. A React admin panel on top covers barbers, bookings, services, reviews, users and a Leaflet map view, with Recharts dashboards.
Kino Bot — Subscription Movie Delivery
A Telegram bot that delivers films by subscription, paired with a separate admin PWA. A user picks a plan, pays, an admin confirms the payment, and from then on films arrive by numeric code straight from a private channel. The admin side is a standalone installable web app with web push notifications, so a pending payment reaches the phone without opening Telegram. Plan prices and card details are stored in the database and edited from the admin app, not hardcoded. Runs in Docker behind a shared Caddy reverse proxy with automatic HTTPS.
Server Monitoring Panel
A real-time dashboard for the VPS that hosts all of these projects. Ten screens covering CPU, memory, disk and network, project directories with their sizes and git state, Docker containers, systemd services and timers, attack attempts parsed from auth.log with fail2ban and firewall state, HTTP traffic read from Caddy access logs, live log streaming and deployment. Measurements arrive every two seconds over Server-Sent Events, with a single shared timer on the server so ten open tabs still cost one measurement. Deployment is triggered by a GitHub webhook whose signature is verified over the raw request body. The panel is deliberately read-only.


