Academic analytics with a clean query UI.

UniQuery is a TypeScript web app for managing datasets, building guided queries, and turning academic records into visual insights. This page presents the product experience and engineering decisions as a project overview.

UniQuery dataset selection screen with sidebar, table, and action controls

Product screenshots

These screenshots show the strongest parts of the interface: clean navigation, large action controls, dashboard spacing, and chart-first results.

UniQuery welcome screen with large headline and primary actions

Landing and Orientation

A bright first screen with prominent product naming, direct navigation, and simple entry points.

UniQuery add dataset modal with upload form and dataset type selector

Dataset Upload Flow

A modal flow keeps uploads focused while preserving the dataset table context behind it.

UniQuery pass fail rate analytics chart with query controls

Pass and Fail Analytics

Form controls and year ranges feed a chart that compares outcome percentages across time.

UniQuery popular courses chart with year segmented control

Popular Courses

A segmented year control and descending sort make course demand comparisons quick to inspect.

UniQuery stable grade trends line chart with course filter form

Stable Grade Trends

The line-chart view highlights longitudinal behavior and makes average movement visible at a glance.

UniQuery dataset selection table with search, filter, sort, and column controls

Dataset Selection

The table surface combines search, filter, sort, column control, selection state, and row-level actions.

Architecture

UniQuery is split into a Next.js frontend and an Express + TypeScript backend. The frontend owns the dashboard workflows and chart presentation, while the backend handles dataset ingestion, validation, query execution, and persisted dataset state.

1

Frontend Dashboard

Next.js and React compose dataset management, guided query forms, and analysis views.

2

API Boundary

Typed client requests call Express endpoints for uploads, dataset actions, and analytical queries.

3

Backend Processing

Node, TypeScript, JSZip, and parse5 validate uploaded archives and normalize course records.

4

Results Layer

Processed responses return to reusable table and Chart.js components for interactive analysis.