Skip to content

Terms diagram builder. Polish your knowledge with accurate definitions.

License

Notifications You must be signed in to change notification settings

SavenkovIgor/TermGraph

Repository files navigation

TermGraph

TermGraph

C++ Qt CMake Conan       Ubuntu Android WebAssembly

⚡️ Description

TermGraph 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. Like this, but bigger:

graph RL
classDef stdN fill:#1f5f5f,stroke-width:0px;
Node("<b><i>Node</i></b></br>some point in space"):::stdN
Edge("<b><i>Edge</i></b></br>line, connecting two {nodes}"):::stdN
Arc("<b><i>Arc</i></b></br>{edge}, that has a direction"):::stdN
Graph("fa:fa-diagram-project <b><i>Graph</i></b></br>set of {nodes} and associated with them {edges}"):::stdN

Edge --> Node
Arc --> Edge
Graph -.-> Node
Graph --> Edge
Loading

What for?

Short answer: This will help you learn something new faster and with deep understanding.

Long answer: In all well-structured areas of knowledge, it is easy to see how explanations are built up on each other.

The most basic concepts are easily accessible to any beginner. More complex concepts require more effort and are always explained in terms of simpler ones.

If 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.

Benefits for beginners (if you don't have the map yet)

  • Its construction guarantees learning with active memorization
  • Wikipedia wandering can become a good teacher with this approach (I have checked)

Benefits for beginners (if you already have such map)

  • Understanding what to learn and in what order
  • Easier to google something
  • If you forgot the term, but remember it's connections - you can easily find it
  • You see the "big picture" of knowledge

Benefits for the experienced

  • Blind spots of your knowledge become visible
  • Fights the illusion of knowledge
  • The learning curve gets higher

Benefits for experts

  • Assistance in the transfer of experience
  • Understanding how your expertise relates to other areas of knowledge

🌿 Key features

  • Builds on Desktop, Wasm and Android
  • Supports big maps (at least 1500 nodes)
  • Devices synchronization
  • Semi-automatic links markup

🚀 Installation

Get it on Google Play

  • Desktop: build from sources on ubuntu (yet)
  • Wasm: build from sources or available here

🗺 Roadmap

🧬 Tech stack

  • C++ 20
  • Qt 6.6 | Qml
  • Cmake 3.22+
  • Conan 2
  • GTest lib (tests)

🛠️ Build

Build app

Requirements for ubuntu hosted build

You can build project with QtCreator, using CMake Presets (which QtCreator more or less understands).

Also you can build it with python script at repository root.

Try ./project.py --install --build --run, it would build and run desktop version

⚗️ Tests

Tests working only with desktop target. GTest library installed via conan, only for desktop target.

You can start tests from:

  • QtCreator or
  • run ctest ./ in build folder at build/desktop_(dev|release) or
  • run ./project.py --test at repository root

🔬 Project structure

├── .github/workflows/       # Github actions
├── android/                 # Android build
├── conanfiles/              # Conan profiles, and generated stuff
├── doc/                     # Documents
├── qml/                     # Main.qml file
│   ├── Atoms/               # Qml atoms components     (atomic design)
│   ├── Molecules/           # Qml molecules components (atomic design)
│   ├── Pages/               # Qml pages
│   ├── Theme/               # Qml theme. Colors, icons, fonts etc...
│   ├── Tools/               # Some qml debugging tools
├── resources/               # Resources: app icons, main html wrapper etc...
├── source/                  # Main source code
│   ├── commonTools/         # Some common tools with wide reuse
│   ├── graph/               # Graph headers
│   ├── QrcHelpImages/       # Help images resources
│   ├── staticDataStorage/   # Static data storage. Qrc with terms info
│   ├── TermDataInterface/   # Interface, describing data connection interface
│   ├── TermDataStorage/     # Data storage sqlite
│   └── Text                 # Text processing
├── tests/                   # Tests
├── tools/                   # Some side stuff, need from time to time
├── CMakeLists.txt           # Main CMake file
├── CMakePresets.json        # CMake presets
├── conanfile.txt            # Conan dependencies (gtest)
└── project.py               # Python script for building and running project

📌 Credits

LinkedIn

Built with ❤️