Skip to content

saifelden1/CTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CTracker Logo

πŸš€ CTracker

A high-performance, native desktop application for productivity tracking, learning management, and focused execution.

C++17 Qt6 SQLite CMake Figma License: MIT

A bespoke Dark Industrial Desktop UI designed for zero distractions and maximum focus.


CTracker App Interface

πŸ“– Overview

CTracker is a locally-hosted, standalone native application designed to unify your workflow. Whether you're tracking coursework, managing long-term projects, running Pomodoro focus sessions, or reviewing your detailed activity analytics β€” CTracker puts it all at your fingertips without the overhead of electron-based apps or cloud subscriptions.

πŸ’ͺ Why CTracker Stands Out

Strength Detail
⚑ Native Performance Pure C++17 + Qt 6 β€” no Electron, no web runtime. Starts instantly, uses minimal RAM, and feels like a real OS application.
πŸ”’ 100% Local & Private All data stays on your machine in a SQLite database. No accounts, no cloud sync, no telemetry. Your productivity data is yours alone.
🎨 Dark Industrial UI A hand-crafted, distraction-free QSS theme (#1a1d24 background) designed for extended focus sessions. Every pixel is intentional.
πŸ“ Figma-Driven Design UI layouts and interaction patterns were prototyped in Figma before implementation, ensuring consistent spacing, colors, and component behavior across every view.
πŸ—οΈ Strict Model–View Architecture Clean separation between data models (QAbstractTableModel/QAbstractListModel) and custom widgets. Signal/Slot wiring β€” no spaghetti UI logic.
πŸ“¦ Import / Export Full JSON import/export pipeline. Bring your course data in from a structured JSON file, or export your progress to share or back up.
πŸ§ͺ Tested Foundation 15+ database tests, model validation tests, and widget behavior tests using the Qt Test framework β€” the core layer is verified before UI work begins.
πŸ”— Pomodoro ↔ Tasks Integration The built-in Pomodoro timer links directly to your active tasks and automatically logs focused time into the activity system.

✨ Core Features

  • πŸ“š Course & Project Mastery: Create nested hierarchies. Break down high-level Projects and Courses into actionable Units, Sessions, and Tasks.
  • ⏱️ Built-in Pomodoro Engine: A native desktop Pomodoro tracker that links directly to your active tasks and automatically logs your focused time.
  • πŸ“… Unified Calendar & Daily View: Visualize tasks, deadlines, and completed Pomodoro sessions on an interactive calendar. Drill down into specific days to see detailed time-tracking logs.
  • πŸ“Š Interactive Analytics: Deep-dive into your productivity using QtCharts. View time spent across different categories, activity logs, and progress overviews.
  • 🎯 Todo Management: A dedicated todo view with active/completed filtering, so nothing falls through the cracks.
  • 🎨 Dark Industrial UI: A highly polished, bespoke UI utilizing native Qt Widgets customized with a distraction-free QSS theme.

οΏ½ Gallery

Experience the bespoke Dark Industrial UI designed for zero distractions.

Main Dashboard & Overview Analytics & Visualization
Main Page Analytics View
Course & Unit Management Activity Heatmap
Course View Heatmap View
Pomodoro Focus Sessions To-Do Management
Pomodoro View Todo View
Session Tracking Detailed Unit Cards
Session View Unit Card
View more screenshots
Adding Course
Unit View
Multiple Sessions

οΏ½πŸ› οΈ Tech Stack & Architecture

CTracker prioritizes speed, native OS integration, and low memory footprint.

  • Language: C++17
  • Framework: Qt 6 (Core, Widgets, Sql, Charts, Svg)
  • Database: SQLite (Managed via a thread-safe, robust DatabaseManager singleton)
  • Build System: CMake
  • Design Tool: Figma (visual prototyping β†’ translated to Qt widgets + QSS)
  • Architecture: Strict Model–View separation. The UI leverages XML UI files (.ui) combined with dynamic C++ custom widgets, and interfaces with the backend exclusively via standard Qt Item Models and strong Signal/Slot wiring.

Note

Design Prototype: The Design/ directory contains a React + Tailwind prototype that serves exclusively as a visual reference for spacing, colors, and layout structure β€” prototyped in Figma first, then validated in code. The production application translates these design concepts entirely into pure C++ and QSS.

πŸ“‚ Project Structure

β”œβ”€β”€ CTracker/             # Main Source Code & Build Targets
β”‚   β”œβ”€β”€ assets/           # QSS Stylesheets and SVG Icons
β”‚   β”œβ”€β”€ include/          # C++ Headers (Grouped by module)
β”‚   β”œβ”€β”€ src/              # C++ Implementations
β”‚   └── tests/            # QtTest Framework Unit Tests
β”œβ”€β”€ data/                 # Import example & user data (see example_import.json)
β”œβ”€β”€ Design/               # Visual Reference (React Prototype + Figma-derived)
β”œβ”€β”€ Photos/               # App screenshots & logo
└── README.md             # This file

πŸ“₯ Data Import Format

CTracker supports importing courses and projects from a JSON file. The expected format is documented in data/example_import.json:

{
    "entities": [
        {
            "version": "1.0",
            "type": "course",
            "name": "Your Course Name",
            "units": [
                {
                    "name": "Unit Name",
                    "sessions": [
                        { "name": "Session Name", "progress": 0 }
                    ]
                }
            ]
        }
    ]
}

Required fields per entity: version, type ("course" or "project"), name, units (array). Required fields per session: name, progress (integer, clamped to 0–100).

Tip

You can import a single entity without the entities wrapper β€” just pass the entity object as the JSON root.

οΏ½ Getting Started

Prerequisites

  • CMake (3.20 or newer)
  • C++17 standard compatible compiler (MSVC / GCC / Clang)
  • Qt 6 Toolkit (requires Core, Widgets, Sql, Charts, and Svg modules)

1. Build the Project

Clone the repository and build via the provided PowerShell scripts or standard CMake commands:

git clone https://github.com/your-username/CTracker.git
cd CTracker

# Quick Build via script (Windows)
.\build_and_run.ps1

Or manually:

mkdir build && cd build
cmake ..
cmake --build .

2. Deploy and Run (Windows)

Before running the executable, ensure the required Qt DLLs are in your build path:

# Deploys active Qt environment DLLs to the build folder
.\build_and_run.ps1

# Or launch directly
.\Run_CTracker.bat

πŸ§ͺ Testing

The repository features comprehensive unit tests using the Qt Test suite.

cd CTracker
.\run-tests.ps1

See CTracker/tests/README.md for the full test catalog and results.

🚦 Roadmap & Current Status

Current Version: v0.0.8

  • βœ… Core database layer (v1 + v2 schema with categories, todos, pomodoro, calendar, settings)
  • βœ… Architecture mapping (Model–View with strict separation)
  • βœ… Extensive testing suite (15+ database tests, model & widget tests)
  • βœ… JSON import/export pipeline
  • βœ… Pomodoro timer with task integration
  • βœ… Calendar view with daily drill-down
  • βœ… Analytics dashboard with contribution heatmap
  • βœ… Todo management with active/completed filtering
  • βœ… Figma-driven dark industrial UI theme
  • 🚧 Known Issue: You may need to resize the application window slightly for the Course View to render/display correctly.

πŸ“œ License

This project is licensed under the MIT License β€” see the LICENSE file for details.


Built with focus for focused work.

About

my first cpp open sorce project a course tracker to track courses as i am in a MESS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors