{"id":16110020,"url":"https://github.com/savenkovigor/termgraph","last_synced_at":"2025-07-22T01:03:23.672Z","repository":{"id":45760993,"uuid":"417941267","full_name":"SavenkovIgor/TermGraph","owner":"SavenkovIgor","description":"Terms diagram builder. Polish your knowledge with accurate definitions.","archived":false,"fork":false,"pushed_at":"2025-07-13T16:57:48.000Z","size":5887,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-13T17:30:52.591Z","etag":null,"topics":["cpp","cpp20","knowledge-graph","qml","qt","qt6","visualization"],"latest_commit_sha":null,"homepage":"https://termgraph.app/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SavenkovIgor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-16T20:31:14.000Z","updated_at":"2025-07-13T16:57:52.000Z","dependencies_parsed_at":"2022-08-12T12:20:16.198Z","dependency_job_id":"ab4ed4cf-14cf-45d4-87cb-660a4537877d","html_url":"https://github.com/SavenkovIgor/TermGraph","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/SavenkovIgor/TermGraph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SavenkovIgor%2FTermGraph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SavenkovIgor%2FTermGraph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SavenkovIgor%2FTermGraph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SavenkovIgor%2FTermGraph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SavenkovIgor","download_url":"https://codeload.github.com/SavenkovIgor/TermGraph/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SavenkovIgor%2FTermGraph/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266405362,"owners_count":23923535,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp20","knowledge-graph","qml","qt","qt6","visualization"],"created_at":"2024-10-09T19:35:13.444Z","updated_at":"2025-07-22T01:03:23.656Z","avatar_url":"https://github.com/SavenkovIgor.png","language":"C++","readme":"\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://savenkovigor.github.io/TermGraph/\"\u003e\u003cimg\n      width=\"100\"\n      alt=\"TermGraph\"\n      src=\"resources/applicationIcons/appIcon128x128.png\"\u003e\u003c/a\u003e\n    \u003ch1\u003eTermGraph\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![C++](https://img.shields.io/badge/C%2B%2B-00599C?style=for-the-badge\u0026logo=c%2B%2B\u0026logoColor=white)](https://isocpp.org/)\n[![Qt](https://img.shields.io/badge/Qt-41CD52?style=for-the-badge\u0026logo=qt\u0026logoColor=white)](https://www.qt.io/)\n[![CMake](https://img.shields.io/badge/CMake-064F8C?style=for-the-badge\u0026logo=cmake\u0026logoColor=white)](https://cmake.org/)\n[![Conan](https://img.shields.io/badge/Conan-6699cb?style=for-the-badge\u0026logo=conan\u0026logoColor=white)](https://conan.io/)\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n[![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge\u0026logo=ubuntu\u0026logoColor=white)]()\n[![WebAssembly](https://img.shields.io/badge/WASM-654FF0?style=for-the-badge\u0026logo=WebAssembly\u0026logoColor=white)](https://emscripten.org/index.html)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[Description](#%EF%B8%8F-description) • [Key features](#-key-features) • [SetUp](#-setup) • [Roadmap](#-roadmap) •\n[Tech stack](#-tech-stack)\n\n[Build](#hammer_and_wrench-build) • [Tests](#alembic-tests) • [Project structure](#microscope-project-structure) • [Credits](#pushpin-credits)\n\n\u003c/div\u003e\n\n# ⚡️ Description\n\nTermGraph is a terms diagram builder. It helps to make a hierarchical projection of a terms-space onto 2d plane and build a map of definitions.\nLike this, but bigger:\n\n```mermaid\ngraph RL\nclassDef stdN fill:#1f5f5f,stroke-width:0px;\nNode(\"\u003cb\u003e\u003ci\u003eNode\u003c/i\u003e\u003c/b\u003e\u003c/br\u003esome point in space\"):::stdN\nEdge(\"\u003cb\u003e\u003ci\u003eEdge\u003c/i\u003e\u003c/b\u003e\u003c/br\u003eline, connecting two {nodes}\"):::stdN\nArc(\"\u003cb\u003e\u003ci\u003eArc\u003c/i\u003e\u003c/b\u003e\u003c/br\u003e{edge}, that has a direction\"):::stdN\nGraph(\"fa:fa-diagram-project \u003cb\u003e\u003ci\u003eGraph\u003c/i\u003e\u003c/b\u003e\u003c/br\u003eset of {nodes} and associated with them {edges}\"):::stdN\n\nEdge --\u003e Node\nArc --\u003e Edge\nGraph -.-\u003e Node\nGraph --\u003e Edge\n```\n\n## What for?\n\n**Short answer:** This will help you learn something new faster and with deep understanding.\n\n**Long answer:**\nIn all well-structured areas of knowledge, it is easy to see how explanations are built up on each other.\n\nThe most basic concepts are easily accessible to any beginner. More complex concepts require more effort and are always explained in terms of simpler ones.\n\nIf you try to draw the first few \"layers\" of these terms, it will look like a ladder or lasagna) If you draw them all, you will get a knowledge area map, which can be very useful.\n\n### Benefits for beginners (if you don't have the map yet)\n\n- Its construction guarantees learning with active memorization\n- Wikipedia wandering can become a good teacher with this approach (I have checked)\n\n### Benefits for beginners (if you already have such map)\n\n- Understanding what to learn and in what order\n- Easier to google something\n- If you forgot the term, but remember it's connections - you can easily find it\n- You see the \"big picture\" of knowledge\n\n### Benefits for the experienced\n\n- Blind spots of your knowledge become visible\n- Fights the illusion of knowledge\n- The learning curve gets higher\n\n### Benefits for experts\n\n- Assistance in the transfer of experience\n- Understanding how your expertise relates to other areas of knowledge\n\n## 🌿 Key features\n\n- Builds on Desktop and Wasm\n- Supports big maps (at least 1500 nodes)\n- Devices synchronization\n- Semi-automatic links markup\n\n# 🚀 SetUp\n\n- Desktop: build from sources on ubuntu (yet)\n- Wasm: build from sources or available [here](https://termgraph.app)\n\n## 🗺 Roadmap\n\n- [x] Make \"hard/quick links\" with uuid\n- [ ] [Fully automatic link search](https://github.com/SavenkovIgor/TermGraph/issues/5)\n- [ ] [Map layers](https://github.com/SavenkovIgor/TermGraph/issues/6)\n\n## 🧬 Tech stack\n\n- \u003cimg src=\"https://isocpp.org/favicon.ico\" width=\"16\" height=\"16\"\u003e C++ 20\n- \u003cimg src=\"https://www.qt.io/hubfs/2016_Qt_Logo/qt_logo_green_rgb_16x16.png\" width=\"16\" height=\"16\"\u003e Qt 6.8 | Qml\n- \u003cimg src=\"https://cmake.org/wp-content/uploads/2019/05/cropped-cmake_512-32x32.png\" width=\"16\" height=\"16\"\u003e Cmake 3.22+\n- \u003cimg src=\"https://conan.io/favicon.png\" width=\"16\" height=\"16\"\u003e Conan 2\n- [GTest lib](https://github.com/google/googletest) (tests)\n\n# :hammer_and_wrench: Build\n\n[![Build app](https://github.com/SavenkovIgor/TermGraph/actions/workflows/AppBuild.yml/badge.svg)](https://github.com/SavenkovIgor/TermGraph/actions/workflows/AppBuild.yml)\n\n## Requirements for ubuntu hosted build\n\n- [Conan](https://docs.conan.io/en/latest/installation.html)\n- [Cmake](https://cmake.org/) + Ninja\n- [Qt + Qml](https://www.qt.io/download-qt-installer)\n\nYou can build project with QtCreator, using CMake Presets (which QtCreator more or less understands).\n\nAlso you can build it with python script at repository root.\n\nTry `./project.py --deps-install --build --run`, it would build and run desktop version\n\n## :alembic: Tests\n\nTests working only with desktop target. GTest library installed via conan, only for desktop target.\n\nYou can start tests from:\n\n- QtCreator **or**\n- run `ctest ./` in build folder at `build/desktop_(dev|release)` **or**\n- run `./project.py --test` at repository root\n\n## :microscope: Project structure\n\n```bash\n├── .github/workflows/       # Github actions\n├── conanfiles/              # Conan profiles, and generated stuff\n├── doc/                     # Documents\n├── data/                    # Folder with static data\n├── qml/                     # Main.qml file\n│   ├── Atoms/               # Qml atoms components     (atomic design)\n│   ├── Molecules/           # Qml molecules components (atomic design)\n│   ├── Pages/               # Qml pages\n│   ├── Theme/               # Qml theme. Colors, icons, fonts etc...\n│   ├── Tools/               # Some qml debugging tools\n├── resources/               # Resources: app icons, main html wrapper etc...\n├── source/                  # Main source code\n│   ├── CommonTools/         # Some common tools with wide reuse\n│   ├── graph/               # Graph headers\n│   ├── QrcHelpImages/       # Help images resources\n│   ├── staticDataStorage/   # Static data storage class\n│   ├── TermDataInterface/   # Interface, describing data connection interface\n│   ├── TermDataStorage/     # Data storage sqlite\n│   └── Text                 # Text processing\n├── tests/                   # Tests\n├── tools/                   # Some side stuff, need from time to time\n├── CMakeLists.txt           # Main CMake file\n├── CMakePresets.json        # CMake presets\n├── conanfile.txt            # Conan dependencies (gtest)\n└── project.py               # Python script for building and running project\n```\n\n## :pushpin: Credits\n\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-SavenkovIgor-555555?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white\u0026labelColor=0077B5)](https://www.linkedin.com/in/savenkovigor-dev/)\n\n[![Built with ❤️](https://img.shields.io/badge/Coded%20with-%E2%9D%A4%EF%B8%8F-e36d25?style=for-the-badge)](https://github.com/SavenkovIgor/TermGraph)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsavenkovigor%2Ftermgraph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsavenkovigor%2Ftermgraph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsavenkovigor%2Ftermgraph/lists"}