docs(docs): add clickable flow chart

This commit is contained in:
Dániel Kántor 2021-03-02 11:45:55 +01:00 committed by Daniel Kantor
parent 1342631e7f
commit fe5d9bb9b0
4 changed files with 208 additions and 23 deletions

View File

@ -5,6 +5,31 @@ This project exists to create a beginner-friendly, community-oriented,
free software licensed language learning application. If you want to learn more
about LibreLingo's background, [I recommend reading my article](https://dev.to/kantord/why-i-built-librelingo-280o).
## Project structure
### Clickable flow chart
``` mermaid
graph LR
YAML[YAML course] --> LOAD
LOAD[librelingo-yaml-loader] --> EXPORT[librelingo-json-export]
EXPORT -->|JSON files| APP
LOAD -->|TODO| AUDIO
LOAD -->|TODO| IMAGE
AUDIO[Audio files] --> APP
IMAGE[Image files] --> APP
TYPES[librelingo-types] --> LOAD
UTILS[librelingo-utils] --> LOAD
click APP "https://github.com/kantord/LibreLingo/tree/main/apps/web"
click EXPORT "https://pypi.org/project/librelingo-json-export/"
click UTILS "https://pypi.org/project/librelingo-utils/"
click TYPES "https://pypi.org/project/librelingo-types/"
click IMAGE "https://github.com/kantord/LibreLingo/tree/main/apps/web/static/images"
click AUDIO "https://github.com/kantord/LibreLingo/tree/main/apps/web/static/voice"
click LOAD "https://pypi.org/project/librelingo-yaml-loader/"
click YAML "https://github.com/kantord/LibreLingo/tree/main/courses"
```
## Setting up the development environment
Clone the repository:

View File

@ -5,3 +5,7 @@ theme:
name: material
palette:
primary: #325f74;
plugins:
- search
- mermaid2

201
poetry.lock generated
View File

@ -20,11 +20,42 @@ docs = ["furo", "sphinx", "zope.interface"]
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
[[package]]
name = "beautifulsoup4"
version = "4.9.3"
description = "Screen-scraping library"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
soupsieve = {version = ">1.2", markers = "python_version >= \"3.0\""}
[package.extras]
html5lib = ["html5lib"]
lxml = ["lxml"]
[[package]]
name = "certifi"
version = "2020.12.5"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "chardet"
version = "4.0.0"
description = "Universal encoding detector for Python 2 and 3"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "click"
version = "7.1.2"
description = "Composable command line interface toolkit"
category = "dev"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@ -44,6 +75,14 @@ category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "editorconfig"
version = "0.12.3"
description = "EditorConfig File Locator and Interpreter for Python"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "fastdiff"
version = "0.2.0"
@ -59,10 +98,18 @@ wasmer = {version = ">=0.3.0", markers = "python_version >= \"3.5\" and platform
name = "future"
version = "0.18.2"
description = "Clean single-source support for Python 3 and 2"
category = "dev"
category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "idna"
version = "2.10"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "iniconfig"
version = "1.1.1"
@ -75,7 +122,7 @@ python-versions = "*"
name = "jinja2"
version = "2.11.3"
description = "A very fast and expressive template engine."
category = "dev"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@ -89,13 +136,25 @@ i18n = ["Babel (>=0.8)"]
name = "joblib"
version = "1.0.1"
description = "Lightweight pipelining with Python functions"
category = "dev"
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "jsbeautifier"
version = "1.13.5"
description = "JavaScript unobfuscator and beautifier."
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
editorconfig = ">=0.12.2"
six = ">=1.13.0"
[[package]]
name = "librelingo-fakes"
version = "0.1.2"
version = "0.1.4"
description = "Fake data for testing LibreLingo-related packages"
category = "dev"
optional = false
@ -135,7 +194,7 @@ python-versions = ">=3.9,<4.0"
[[package]]
name = "librelingo-utils"
version = "0.1.2"
version = "0.1.3"
description = "Utilities to be used in LibreLingo-related-packages"
category = "dev"
optional = false
@ -151,7 +210,7 @@ url = "apps/librelingo_utils"
[[package]]
name = "librelingo-yaml-loader"
version = "0.1.2"
version = "0.1.3"
description = "Load YAML-based LibreLingo courses in your Python project."
category = "dev"
optional = false
@ -175,7 +234,7 @@ url = "apps/librelingo_yaml_loader"
name = "livereload"
version = "2.6.3"
description = "Python LiveReload is an awesome tool for web developers"
category = "dev"
category = "main"
optional = false
python-versions = "*"
@ -187,7 +246,7 @@ tornado = {version = "*", markers = "python_version > \"2.7\""}
name = "lunr"
version = "0.5.8"
description = "A Python implementation of Lunr.js"
category = "dev"
category = "main"
optional = false
python-versions = "*"
@ -203,7 +262,7 @@ languages = ["nltk (>=3.2.5,<3.5)", "nltk (>=3.2.5)"]
name = "markdown"
version = "3.3.4"
description = "Python implementation of Markdown."
category = "dev"
category = "main"
optional = false
python-versions = ">=3.6"
@ -214,7 +273,7 @@ testing = ["coverage", "pyyaml"]
name = "markupsafe"
version = "1.1.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "dev"
category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
@ -222,7 +281,7 @@ python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
name = "mkdocs"
version = "1.1.2"
description = "Project documentation with Markdown."
category = "dev"
category = "main"
optional = false
python-versions = ">=3.5"
@ -239,7 +298,7 @@ tornado = ">=5.0"
name = "mkdocs-material"
version = "7.0.3"
description = "A Material Design theme for MkDocs"
category = "dev"
category = "main"
optional = false
python-versions = "*"
@ -254,18 +313,35 @@ pymdown-extensions = ">=7.0"
name = "mkdocs-material-extensions"
version = "1.0.1"
description = "Extension pack for Python Markdown."
category = "dev"
category = "main"
optional = false
python-versions = ">=3.5"
[package.dependencies]
mkdocs-material = ">=5.0.0"
[[package]]
name = "mkdocs-mermaid2-plugin"
version = "0.5.1"
description = "A MkDocs plugin for including mermaid graphs in markdown sources"
category = "main"
optional = false
python-versions = ">=3.5"
[package.dependencies]
beautifulsoup4 = ">=4.6.3"
jsbeautifier = "*"
mkdocs = ">=1.0.4"
mkdocs-material = "*"
pymdown-extensions = ">=8.0"
pyyaml = "*"
requests = "*"
[[package]]
name = "nltk"
version = "3.5"
description = "Natural Language Toolkit"
category = "dev"
category = "main"
optional = false
python-versions = "*"
@ -325,7 +401,7 @@ python-versions = ">=3.5"
name = "pygments"
version = "2.8.0"
description = "Pygments is a syntax highlighting package written in Python."
category = "dev"
category = "main"
optional = false
python-versions = ">=3.5"
@ -333,7 +409,7 @@ python-versions = ">=3.5"
name = "pymdown-extensions"
version = "8.1.1"
description = "Extension pack for Python Markdown."
category = "dev"
category = "main"
optional = false
python-versions = ">=3.6"
@ -415,7 +491,7 @@ unidecode = ["Unidecode (>=1.1.1)"]
name = "pyyaml"
version = "5.4.1"
description = "YAML parser and emitter for Python"
category = "dev"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
@ -423,15 +499,33 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
name = "regex"
version = "2020.11.13"
description = "Alternative regular expression module, to replace re."
category = "dev"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "requests"
version = "2.25.1"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.dependencies]
certifi = ">=2017.4.17"
chardet = ">=3.0.2,<5"
idna = ">=2.5,<3"
urllib3 = ">=1.21.1,<1.27"
[package.extras]
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
[[package]]
name = "six"
version = "1.15.0"
description = "Python 2 and 3 compatibility utilities"
category = "dev"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
@ -461,6 +555,14 @@ nose = ["nose"]
pytest = ["pytest"]
test = ["six", "pytest (>=4.6)", "pytest-cov", "nose", "django (>=1.10.6)"]
[[package]]
name = "soupsieve"
version = "2.2"
description = "A modern CSS selector implementation for Beautiful Soup."
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "termcolor"
version = "1.1.0"
@ -489,7 +591,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
name = "tornado"
version = "6.1"
description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
category = "dev"
category = "main"
optional = false
python-versions = ">= 3.5"
@ -497,7 +599,7 @@ python-versions = ">= 3.5"
name = "tqdm"
version = "4.58.0"
description = "Fast, Extensible Progress Meter"
category = "dev"
category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
@ -505,6 +607,19 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
dev = ["py-make (>=0.1.0)", "twine", "wheel"]
telegram = ["requests"]
[[package]]
name = "urllib3"
version = "1.26.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
name = "wasmer"
version = "1.0.0"
@ -527,7 +642,7 @@ watchmedo = ["PyYAML (>=3.10)", "argh (>=0.24.1)"]
[metadata]
lock-version = "1.1"
python-versions = "^3.9"
content-hash = "ab0e2bc56b423a854867cb4f36befd79cc1b99c8298fccf041752a934388d038"
content-hash = "1c689f99dd86f08c458fbea2295933a8b1e1e5d2be6c084c7879fe32924e29b5"
[metadata.files]
atomicwrites = [
@ -538,6 +653,19 @@ attrs = [
{file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"},
{file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"},
]
beautifulsoup4 = [
{file = "beautifulsoup4-4.9.3-py2-none-any.whl", hash = "sha256:4c98143716ef1cb40bf7f39a8e3eec8f8b009509e74904ba3a7b315431577e35"},
{file = "beautifulsoup4-4.9.3-py3-none-any.whl", hash = "sha256:fff47e031e34ec82bf17e00da8f592fe7de69aeea38be00523c04623c04fb666"},
{file = "beautifulsoup4-4.9.3.tar.gz", hash = "sha256:84729e322ad1d5b4d25f805bfa05b902dd96450f43842c4e99067d5e1369eb25"},
]
certifi = [
{file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"},
{file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"},
]
chardet = [
{file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
{file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
]
click = [
{file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
{file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
@ -549,12 +677,20 @@ colorama = [
docopt = [
{file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"},
]
editorconfig = [
{file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"},
{file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"},
]
fastdiff = [
{file = "fastdiff-0.2.0.tar.gz", hash = "sha256:623ad3d9055ab78e014d0d10767cb033d98d5d4f66052abf498350c8e42e29aa"},
]
future = [
{file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
]
idna = [
{file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
{file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
@ -567,6 +703,9 @@ joblib = [
{file = "joblib-1.0.1-py3-none-any.whl", hash = "sha256:feeb1ec69c4d45129954f1b7034954241eedfd6ba39b5e9e4b6883be3332d5e5"},
{file = "joblib-1.0.1.tar.gz", hash = "sha256:9c17567692206d2f3fb9ecf5e991084254fe631665c450b443761c4186a613f7"},
]
jsbeautifier = [
{file = "jsbeautifier-1.13.5.tar.gz", hash = "sha256:4532a6bc85ba91ffc542b55d65cd13cedc971a934f26f51ed56d4c680b3fbe66"},
]
librelingo-fakes = []
librelingo-json-export = []
librelingo-types = [
@ -652,6 +791,10 @@ mkdocs-material-extensions = [
{file = "mkdocs-material-extensions-1.0.1.tar.gz", hash = "sha256:6947fb7f5e4291e3c61405bad3539d81e0b3cd62ae0d66ced018128af509c68f"},
{file = "mkdocs_material_extensions-1.0.1-py3-none-any.whl", hash = "sha256:d90c807a88348aa6d1805657ec5c0b2d8d609c110e62b9dce4daf7fa981fa338"},
]
mkdocs-mermaid2-plugin = [
{file = "mkdocs-mermaid2-plugin-0.5.1.tar.gz", hash = "sha256:a267b77d0e80336ca12a72851209e90a07ba86b3551fa5422f3cd2ee1886f38a"},
{file = "mkdocs_mermaid2_plugin-0.5.1-py3-none-any.whl", hash = "sha256:03709ef450ddcbd0a07ebeee2b68d6a90e63c4611401c2d3cf8bca24e075ff3e"},
]
nltk = [
{file = "nltk-3.5.zip", hash = "sha256:845365449cd8c5f9731f7cb9f8bd6fd0767553b9d53af9eb1b3abf7700936b35"},
]
@ -763,6 +906,10 @@ regex = [
{file = "regex-2020.11.13-cp39-cp39-win_amd64.whl", hash = "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d"},
{file = "regex-2020.11.13.tar.gz", hash = "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562"},
]
requests = [
{file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"},
{file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"},
]
six = [
{file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
{file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
@ -774,6 +921,10 @@ snapshottest = [
{file = "snapshottest-0.6.0-py2.py3-none-any.whl", hash = "sha256:9b177cffe0870c589df8ddbee0a770149c5474b251955bdbde58b7f32a4ec429"},
{file = "snapshottest-0.6.0.tar.gz", hash = "sha256:bbcaf81d92d8e330042e5c928e13d9f035e99e91b314fe55fda949c2f17b653c"},
]
soupsieve = [
{file = "soupsieve-2.2-py3-none-any.whl", hash = "sha256:d3a5ea5b350423f47d07639f74475afedad48cf41c0ad7a82ca13a3928af34f6"},
{file = "soupsieve-2.2.tar.gz", hash = "sha256:407fa1e8eb3458d1b5614df51d9651a1180ea5fedf07feb46e45d7e25e6d6cdd"},
]
termcolor = [
{file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"},
]
@ -832,6 +983,10 @@ tqdm = [
{file = "tqdm-4.58.0-py2.py3-none-any.whl", hash = "sha256:2c44efa73b8914dba7807aefd09653ac63c22b5b4ea34f7a80973f418f1a3089"},
{file = "tqdm-4.58.0.tar.gz", hash = "sha256:c23ac707e8e8aabb825e4d91f8e17247f9cc14b0d64dd9e97be0781e9e525bba"},
]
urllib3 = [
{file = "urllib3-1.26.3-py2.py3-none-any.whl", hash = "sha256:1b465e494e3e0d8939b50680403e3aedaa2bc434b7d5af64dfd3c958d7f5ae80"},
{file = "urllib3-1.26.3.tar.gz", hash = "sha256:de3eedaad74a2683334e282005cd8d7f22f4d55fa690a2a1020a416cb0a47e73"},
]
wasmer = [
{file = "wasmer-1.0.0-cp36-cp36m-macosx_10_7_x86_64.whl", hash = "sha256:0d755a93184380f9785e1f8269b070f4a4a3285ae0f7f9571cfaf2ea215b102d"},
{file = "wasmer-1.0.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:6b41046db73facc064cb9649627d9cdd1b88ada74e745134e44e09ada6827056"},

View File

@ -6,6 +6,7 @@ authors = ["Dániel Kántor <git@daniel-kantor.com>"]
[tool.poetry.dependencies]
python = "^3.9"
mkdocs-mermaid2-plugin = "^0.5.1"
[tool.poetry.dev-dependencies]
librelingo-yaml-loader = { path = "./apps/librelingo_yaml_loader/" }