πŸ“¦ ETrax - Technical Architecture

Modern SaaS platform for sports equipment inventory with QR tracking, voice commands, offline-first PWA, and FERPA/GDPR compliance.

System Architecture Overview

ETrax is a full-stack SaaS platform designed specifically for educational institutions managing sports equipment inventory. It combines a mobile-first Progressive Web App with a robust backend API, enabling real-time synchronization, QR code-based tracking, voice command support, and complete offline functionality for field operations.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              PROGRESSIVE WEB APP (Frontend)               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  React Web UI        β”‚  Service Worker      β”‚  IndexedDB β”‚
β”‚  (Responsive)        β”‚  (Offline Support)   β”‚  (Local)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             ↓
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚   Offline-First Sync     β”‚
              β”‚  Queue & Background Sync β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         API GATEWAY & BACKEND SERVICES (Tier 2)         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Express.js API      β”‚  WebSocket Gateway   β”‚  Auth      β”‚
β”‚  RESTful endpoints   β”‚  Real-time updates   β”‚  Service   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     BUSINESS LOGIC & PROCESSING (Tier 3)               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Equipment Service    β”‚  QR Code Service     β”‚  Voice AI  β”‚
β”‚ Inventory Mgmt       β”‚  Barcode generation  β”‚  Processingβ”‚
β”‚ Reporting Service    β”‚  Label printing      β”‚            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                             ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        DATA & PERSISTENCE (Tier 4)                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  PostgreSQL 17       β”‚  Redis Cache         β”‚  S3-like   β”‚
β”‚  Relational data     β”‚  Session & cache     β”‚  QR images β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Technology Stack

πŸ“± Frontend (PWA)

  • React 18+
  • Vite 6
  • TypeScript
  • Tailwind CSS
  • Service Workers

πŸ”§ Backend

  • Node.js 23.5+
  • TypeScript
  • Express.js
  • Prisma ORM
  • PostgreSQL 17.2

πŸ“¦ QR & Barcode

  • QR Code generation
  • Barcode scanning (camera)
  • Label printing APIs
  • Thermal printer support
  • Template engine

🎀 Voice Processing

  • Web Speech API
  • OpenAI Whisper
  • NLP for commands
  • Text-to-speech
  • Custom model training

πŸ’Ύ Data & Cache

  • PostgreSQL 17
  • Prisma Migrations
  • Redis 7.4
  • IndexedDB (browser)
  • Query caching

πŸ§ͺ Testing & Ops

  • Vitest (unit)
  • Playwright (E2E)
  • Supertest (API)
  • Docker & Docker Compose
  • PM2 (process management)

Core Features & Architecture

🏷️ QR Code Tracking

Automatic QR code generation, scanning via device camera, batch label printing, and equipment linking.

🎀 Voice Commands

Natural language processing for equipment check-in/out, inventory commands, hands-free operation in field.

πŸ“± Offline-First PWA

Complete functionality offline, automatic background sync when reconnected, no app download required.

πŸ”„ Real-time Sync

WebSocket-based synchronization, conflict resolution, and eventual consistency across devices.

πŸ“Š Analytics

Equipment usage trends, maintenance alerts, lifecycle cost analysis, and predictive replacement.

🏫 Multi-Tenant

Isolated school instances, hierarchical access control, bulk operations, and centralized reporting.

Compliance & Security

FERPA Compliance

  • βœ“Student directory excluded
  • βœ“Data encryption at rest
  • βœ“Access logging
  • βœ“Data deletion policies

GDPR Compliance

  • βœ“Data portability
  • βœ“Right to deletion
  • βœ“Privacy by design
  • βœ“DPA-compliant processors

Deployment & Performance

Performance Targets

  • API Response: < 100ms
  • QR Scan: < 500ms
  • Sync Time: < 1s
  • Offline Cache: 100+ records

Deployment Stack

  • Frontend: Vercel / Netlify
  • Backend: AWS EC2 / Heroku
  • Database: AWS RDS / Cloud SQL
  • CDN: Cloudflare / CloudFront