How moh0009/pace-platform works
PACE is a student-grade CSV ingestion and registry application. Users select files, upload them in chunks, start background processing, watch upload and processing progress, then browse and edit the resulting student records. The README documents parallel ingestion, Redis-backed jobs and progress, and server-side filtering and keyset pagination. The sampled source confirms frontend upload/state and table behavior plus queue, worker, and student-query logic; upload, processing, and WebSocket handler internals are represented from the documented workflow, with wiring details limited accordingly.
Main entry points: process.go CSV Ingestion · students.go Student Endpoints · UploadSection.jsx Upload Section · upload.go Upload Endpoint
Components 20
CSV Ingestion
- Upload Endpoint
backend/handlers/upload.go - Chunk Files
backend/handlers/upload.go - Process Endpoint
backend/handlers/process.go - Redis Job Queue
backend/queue/queue.go - Worker Pool
backend/worker/worker.go - CSV Ingestion
backend/handlers/process.go
Job Progress
- Redis
- Progress WebSocket
backend/handlers/websocket.go
Student Registry
- Student Endpoints
backend/handlers/students.go - Student Database
backend/handlers/students.go
Web Client
- Upload Section
frontend/pace-front_end/components/UploadSection.jsx - Upload Handler
frontend/pace-front_end/hooks/useUploadHandler.js - File State
frontend/pace-front_end/context/FileContext.jsx - Process Request
frontend/pace-front_end/hooks/useUploadHandler.js - Socket Manager
frontend/pace-front_end/hooks/useWebSocketManager.js - Students Table
frontend/pace-front_end/components/StudentsTable.jsx - Student Controls
frontend/pace-front_end/components/MinimalDropdown.jsx - Upload Metrics
frontend/pace-front_end/hooks/useMetricsCalculator.js
Other components
- User
- Browser
Connections 23
- User → Upload Section: selects files
- Upload Section → Upload Handler: starts upload
- Upload Handler → Upload Endpoint: posts chunks
- Upload Endpoint → Chunk Files: writes chunks
- Upload Endpoint → Redis: publishes upload progress
- Upload Handler → Process Endpoint: posts process request
- Process Endpoint → Redis Job Queue: enqueues job
- Worker Pool → Redis Job Queue: dequeues jobs
- Worker Pool → CSV Ingestion: runs processor
- CSV Ingestion → Chunk Files: reads merged CSV
- CSV Ingestion → Student Database: upserts student rows
- CSV Ingestion → Redis: publishes process progress
- Progress WebSocket → Redis: subscribes progress
- Socket Manager → Progress WebSocket: opens WebSocket
- Progress WebSocket → Browser: streams progress
- User → Students Table: browses records
- Students Table → Student Endpoints: fetches and paginates
- Student Endpoints → Student Database: queries records
- Student Controls → Student Endpoints: updates or deletes
- File State → Upload Section: provides file state
- File State → Browser: persists metadata
- Upload Metrics → Upload Section: calculates durations
- Student Endpoints → Students Table: returns results