Forge your workflow - a native Windows task manager with hierarchical tasks, hand-rolled algorithms, and a Dear ImGui interface.
- π― About The Project & Docs
- β¨ Features
- π Installation & Run
- π Project Structure
- π Example Usage / How It Works
- π οΈ Tech Stack
- π₯ Team
- π Acknowledgements
DataForge is a single-window desktop task management system written in procedural C++20 and rendered with Dear ImGui. It treats work the way humans actually think about it - as a tree of tasks and subtasks - rather than a flat checklist.
That single design choice turns every requirement of the brief into something that feels native to the domain:
- Recursion sums estimated time across a subtree, cascades deletions, and computes weighted completion - not a toy factorial.
- Sorting is offered in two hand-rolled flavours (Bubble & Quick), user-selectable, with a live benchmark panel that shows why algorithm choice matters.
- Searching pairs a substring linear scan over titles (what users expect from a search bar) with a recursive binary search over a cached ID index (the fast internal lookup).
Under the hood, DataForge is built on a strict three-tier architecture - presentation β logic β data - with one-way calls only. The presentation layer never touches the data layer directly; every mutation flows through the logic tier. No OOP, no classes, no inheritance - just structs and free functions passed explicitly between layers.
main.cpp βββΆ presentation βββΆ logic βββΆ data
(Dear ImGui) (rules) (CRUD + I/O)
- Zero external dependencies beyond the Windows SDK and vendored ImGui sources - no vcpkg, no NuGet, no package manager gymnastics.
- Atomic save via write-and-rename protects user data from mid-save crashes.
- Custom
.dftaskstext format that you can read, diff, and edit in Notepad.
.DOCX Documentation
β³ View on SharePoint
.PPTX Presentation
β³ View on SharePoint
.XLSX QA Reports
β³ View on SharePoint
| Feature | Description |
|---|---|
| Hierarchical Tasks | Every task can have unlimited subtasks, forming a tree encoded by parentId. |
| Dual Sort Algorithms | Bubble Sort (iterative, by priority DESC) and Quick Sort (recursive, by deadline ASC) - user-selectable. |
| Sort Benchmark Panel | Generates N synthetic tasks and times both algorithms head-to-head in milliseconds. |
| Dual Search | Case-insensitive substring linear search on titles plus recursive binary search by ID. |
| Recursive Aggregates | Five domain-meaningful tree functions: total estimated time, weighted completion, descendant count, max depth, descendant-ID collection. |
| Cascade Delete | Removing a task recursively removes its subtree after a confirmation dialog that shows how many descendants will go. |
| Filter + Search Compose | Filter by status or priority first, then substring-match within the narrowed set. |
| Statistics Panel | Counts by priority, counts by status, overdue tasks, and total estimated time across all roots. |
| Urgency Coloring | Deadline cells tint red when overdue, amber when β€ 3 days away, green when comfortable. |
| Input Validation | Invalid drafts are caught before they reach the store; errors show inline and as a toast. |
| Single-Step Undo | Snapshot-based undo restores the store after a destructive operation - procedural-friendly, not command-based. |
| Keyboard Shortcuts | Ctrl+N new, Ctrl+S save, Ctrl+O open, Ctrl+F focus search, Ctrl+Z undo, Del remove selected, arrow keys to navigate. |
| Light / Dark Theme | ImGui theme toggle persisted in UiState. |
| Atomic Persistence | Human-readable .dftasks format written via write-and-rename - no corruption on crash. |
| Dirty-Flag UX | Window title marks unsaved changes; exit confirms if work is pending. |
| Status Bar | Live total count, filtered count, last action, and save state - always visible. |
| Requirement | Version / Notes |
|---|---|
| OS | Windows 10 / 11 (64-bit) |
| IDE | Visual Studio 2026 (or 2022 with the v143 toolset) |
| Workloads | Desktop development with C++ (includes MSVC, Windows SDK, and the DirectX headers) |
| Toolset | MSVC with /std:c++20 |
| Git | Any recent version |
No external package manager is required. Dear ImGui is vendored into src/vendor/imgui/.
# 1. Clone the repository
git clone https://github.com/codingburgas/DataForge.git
cd DataForge
# 2. Open the solution in Visual Studio 2026
start DataForge.slnInside Visual Studio:
- Select the
x64platform and either theDebugorReleaseconfiguration. - Build the solution (
Ctrl + Shift + B). - Run with
F5(debug) orCtrl + F5(run without debugging).
On first launch DataForge looks for Resources/sample_tasks.dftasks and loads it if present, so the app opens with realistic demo data. Use File β New to start from a blank store, or File β Openβ¦ to load your own .dftasks file.
DataForge/
βββ DataForge.slnx # Visual Studio solution
βββ DataForge.vcxproj # Main application project
βββ DataForge.vcxproj.filters # Source grouping for the IDE
β
βββ src/ # Application source (strict 3-tier split)
β βββ main.cpp # Win32 + D3D11 + ImGui bootstrap, main loop
β βββ presentation layer # Dear ImGui rendering & UiState (calls logic only)
β βββ logic layer # Business rules, algorithms, validation
β βββ data layer # Task / TaskStore / Date structs, CRUD, file I/O
β βββ vendor/
β βββ imgui/ # Vendored Dear ImGui sources (pinned SHA in VERSION.txt)
β βββ imgui*.cpp / .h
β βββ backends/
β βββ imgui_impl_win32.*
β βββ imgui_impl_dx11.*
β
βββ Documentation/ # Architecture diagram and sprint reports
β βββ DOCX Documentation
β βββ PPTX Presentation
β βββ QA Report
β
β
βββ README.md # You are here
βββ .gitignore
| Shortcut | Action |
|---|---|
Ctrl + N |
New task |
Ctrl + S |
Save store |
Ctrl + O |
Open store |
Ctrl + F |
Focus search |
Ctrl + Z |
Undo last destructive action |
Delete |
Remove selected task |
β / β |
Navigate task list |
| Layer | Choice | Why |
|---|---|---|
| Language | C++20 | std::optional, structured bindings, <=>, std::format, std::span, designated initialisers - modern without being exotic. |
| Compiler | MSVC (Visual Studio 2026), /std:c++20, /W4 /WX in Release |
First-party Microsoft toolchain; no cross-compilation friction. |
| GUI | Dear ImGui (vendored) | Immediate-mode, single-window desktop apps in ~20 files. Pinned commit SHA in src/vendor/imgui/VERSION.txt. |
| Rendering Backend | Win32 + Direct3D 11 | Zero external package managers - every header ships with the Windows SDK. |
| Build System | Visual Studio .sln / .vcxproj |
Single solution, one project for the app, optional test project. No NuGet, no vcpkg. |
| Persistence | Custom .dftasks line-based text format |
Human-readable, diff-friendly, zero library dependencies. |
| Linker Dependencies | d3d11.lib, dxgi.lib, d3dcompiler.lib |
Windows SDK only. |
| Name | Role |
|---|---|
| Atanas Todorov | Scrum Trainer & Project Lead |
| Dimitar Yanakiev | Back-End Developer |
| Georgi Dinkov | Back-End Developer |
| Stoqn Savakov | QA Engineer |
| Dimitar Dimitrov | QA & F-E Developer |
- Dear ImGui by Omar Cornut - the immediate-mode GUI library at the heart of DataForge.
- Shields.io - for all tech badges above.
- Placehold.co - placeholder imagery during early development.
- Microsoft Visual Studio & the Windows SDK - the C++20 toolchain and D3D11 backend.
- Every author of the classic algorithms textbooks whose Bubble Sort, Quick Sort, and Binary Search we re-implement by hand in this repository.
Forged with C++20 and much β€οΈ for the Windows desktop.