L o a d i n g
Back to Portfolio Agency Operations (HRMS)

Orbito — Agency Operations & HRMS Platform

An internal Django + React platform for a digital agency, combining face-recognition/geofenced attendance, task and project delivery with time tracking, and a per-client content-calendar workflow — replacing spreadsheets with one installable app.

React 18 + Vite Redux Django 5.1 Django REST Framework face_recognition (dlib) PWA

Face ID

+ Geofenced Attendance

500 MB

Chunked Resumable Uploads

6

Role-Based User Types

Installable

Progressive Web App
Walkthrough

Employee App & Admin Dashboard

Key Features

What The Platform Does

Face-Recognition Attendance

Webcam punch-in/out verified against a stored face encoding, with geofenced WFO/WFH detection.

Task Time-Tracking

Start/stop/hold timers accumulate tracked seconds with a full audit trail.

Content-Calendar Workflow

Multi-day campaigns, versioned deliverables, review → approval, activity timeline.

Chunked Large-File Uploads

500 MB deliverables sliced into 15 MB chunks to route around a proxy size cap.

Nightly Compliance Sweep

Auto punches-out stragglers and flags absentees, holiday- and weekend-aware.

Installable PWA

Separate desktop/mobile component trees with offline-capable service worker.

Technology

Stack & Integrations

Frontend
React 18 + Vite Redux + Thunk Material UI react-webcam / face-api.js
Backend
Python Django 5.1 + DRF SimpleJWT Celery / APScheduler
Database
SQLite (Postgres-ready)
Integrations
Browser Geolocation API Cloudflare
Architecture

How It's Built

Orbito is a decoupled SPA + REST API: a React/Vite frontend authenticates via JWT and talks exclusively to a Django REST Framework backend, with an axios client silently refreshing expired tokens and retrying queued requests. The frontend renders separate desktop and mobile component trees behind a single media-query check rather than shipping two builds, sharing one routing and API layer.

The content-calendar module is its own self-contained subsystem — a status roll-up state machine, activity log and notification fan-out — layered on the shared database, with access governed by an explicit allowlist function independent of the role field. A custom chunked-upload protocol (no third-party library) slices large deliverables client-side and reassembles them server-side to work around a hosting-provider proxy limit — designed in a written spec before implementation.