Individual academic project · 2025

Dataset query system

A socket-based analysis application where authenticated clients query a server-owned dataset through a desktop interface.

My role
Designed and implemented the complete application
Stack
Python, TCP sockets, PySide6, PostgreSQL, pandas, matplotlib
Data
Los Angeles arrest dataset

Query shared data without distributing the dataset

The server owns the dataset and analysis logic while clients request specific statistics and visualizations. The application therefore needed a clear network protocol, concurrent client handling, authentication, moderation, and responsive desktop interfaces on both sides.

Separate interface, protocol, and processing

ClientPySide6 desktop applicationAuthentication, parameterized queries, results, messages, and history
↕ TCP
ServerThreaded client handlersOne handler per connection with structured request routing
Data layerPostgreSQL and pandasUsers, query history, dataset analysis, and generated plots

Support users and moderators in one system

  • Implemented registration and login, stored user data, and role-aware moderator capabilities.
  • Built parameterized dataset queries and returned both structured results and generated visualizations.
  • Added query history, popularity statistics, connection monitoring, realtime logs, and server broadcasts.
  • Used worker threads and Qt signals to keep networking and large query results from blocking the interface.
  • Migrated persistence from SQLite to PostgreSQL and added pooling, timeout handling, and memory controls.

Concurrency is part of interface design

The most important engineering constraint was not the individual query logic but keeping network traffic, analysis work, and GUI updates separated. A correct result still produces a poor application if receiving data or generating a plot freezes the interface.