A desktop Course Grade and Productivity Application built using C++ (Qt 6) with a cloud-backed backend powered by Supabase. The system enables students to track courses, grades, study hours, and social ranking features in real time.
This application is designed as a full-stack academic productivity system consisting of three core subsystems:
- Built using Qt Widgets
- Provides login, homepage, course pages, friend pages, and dialogs
- Acts as the primary user interaction layer
- Powered by Supabase (PostgreSQL backend)
- Handles user authentication, courses, grades, and social data
- Communicates via REST API using Qt Network module
- Computes user rankings based on course performance and study hours
- Updates dynamically based on database state
- User authentication (login/register)
- Course tracking and grade management
- Study hour logging
- Friend system with comparative ranking
- Dynamic ranking system across courses
- Cloud-synced data via Supabase API
src/ → Application source code (.cpp)
include/ → Header files (.h)
ui/ → Qt Designer UI files (.ui)
resources/ → Icons, assets, and QRC files
This project uses environment variables to store sensitive Supabase credentials.
Copy the example file:
.env.example → .env
SUPABASE_BASE_URL=https://your-project.supabase.co/rest/v1
SUPABASE_AUTH_URL=https://your-project.supabase.co/auth/v1
SUPABASE_API_KEY=your-anon-keyQt does not automatically load .env files. The project uses QProcessEnvironment or manual loading to access variables:
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
QString baseUrl = env.value("SUPABASE_BASE_URL");
QString authUrl = env.value("SUPABASE_AUTH_URL");
QByteArray apiKey = env.value("SUPABASE_API_KEY").toUtf8();- Qt 6.x (Widgets + Network + Charts + SQL)
- CMake 3.16+
- MinGW or MSVC compiler
git clone https://github.com/your-username/grade-tracker-app
cd grade-tracker-app
mkdir build
cd build
cmake ..
cmake --build .- Qt Widgets
- Qt Network
- Qt Charts
Based on the system design document, the application emphasizes:
- Strong separation between GUI, database, and computation layers
- Cloud-based persistent storage via Supabase
- Modular UI system supporting courses, friends, and rankings
- Sequential data processing with minimal concurrency complexity
- API keys are stored in environment variables (not hardcoded)
- Supabase handles authentication and encryption
- Network access is restricted through controlled REST queries
- Full career-wide ranking system
- Expanded friend comparison features
- Advanced analytics dashboards
- ROS-style modular backend refactor (optional exploration)