Description • Key features • Installation • Roadmap • Tech stack
Build • Tests • Project structure • Credits
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
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.
- Its construction guarantees learning with active memorization
- Wikipedia wandering can become a good teacher with this approach (I have checked)
- 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
- Blind spots of your knowledge become visible
- Fights the illusion of knowledge
- The learning curve gets higher
- Assistance in the transfer of experience
- Understanding how your expertise relates to other areas of knowledge
- Builds on Desktop, Wasm and Android
- Supports big maps (at least 1500 nodes)
- Devices synchronization
- Semi-automatic links markup
- Desktop: build from sources on ubuntu (yet)
- Wasm: build from sources or available here
- Make "hard/quick links" with uuid
- Fully automatic link search
- Map layers
- C++ 20
- Qt 6.6 | Qml
- Cmake 3.22+
- Conan 2
- GTest lib (tests)
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 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 atbuild/desktop_(dev|release)
or - run
./project.py --test
at repository root
├── .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