[{"id":"/root","type":"ROOT","loc":{"start":0,"end":4287,"column":{"s":0,"e":3},"line":{"s":0,"e":160}},"dim":[""],"code":null},{"id":"/root/children/0","type":"paragraph","loc":{"start":0,"end":112,"line":{"s":1,"e":1,"code":[";{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }"]},"column":{"s":0,"e":112}},"dim":["","paragraph.0"],"code":";{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }"},{"id":"/root/children/0/children/0","type":"text","loc":{"start":0,"end":112,"line":{"s":1,"e":1,"code":[";{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }"]},"column":{"s":0,"e":112}},"dim":["","paragraph.0","text.0"],"code":";{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }"},{"id":"/root/children/1","type":"heading","loc":{"start":114,"end":126,"line":{"s":3,"e":3,"code":["# technology"]},"column":{"s":0,"e":12}},"dim":["","heading.1"],"code":"# technology","symbName":"heading","symbRange":[128,556],"symbRangeL":[3,27],"outerCode":"\n- aspect of technology choice\n- what can easilly run on linode?\n- what software is used/needed at this stage?\n\n- duckdb\n- imagick\n- sparql\n- bash\n- nodejs\n  - databox-libs: ast-lake\n- bc (calc)\n- rsvg-convert\n- towebp\n- graphviz\n- inkscape?\n- TODO ...\n- webhook\n  - [ ] do we really need webhook? VS rabbitMq\n- rabbitMq\n  - wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin\n- redis","outerHtml":"\n<ul><li>aspect of technology choice</li><li>what can easilly run on linode?</li><li>what software is used/needed at this stage?</li></ul>\n\n<ul><li>duckdb</li><li>imagick</li><li>sparql</li><li>bash</li><li>nodejs<ul><li>databox-libs: ast-lake</li></ul></li><li>bc (calc)</li><li>rsvg-convert</li><li>towebp</li><li>graphviz</li><li>inkscape?</li><li>TODO ...</li><li>webhook<ul><li>[ ] do we really need webhook? VS rabbitMq</li></ul></li><li>rabbitMq<ul><li>wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin</li></ul></li><li>redis</li></ul>"},{"id":"/root/children/1/children/0","type":"text","loc":{"start":116,"end":126,"line":{"s":3,"e":3,"code":["# technology"]},"column":{"s":2,"e":12}},"dim":["","heading.1","text.0"],"code":"technology"},{"id":"/root/children/2","type":"list","loc":{"start":128,"end":556,"line":{"s":5,"e":26,"code":["- aspect of technology choice","- what can easilly run on linode?","- what software is used/needed at this stage?","","- duckdb","- imagick","- sparql","- bash","- nodejs","  - databox-libs: ast-lake","- bc (calc)","- rsvg-convert","- towebp","- graphviz","- inkscape?","- TODO ...","- webhook","  - [ ] do we really need webhook? VS rabbitMq","- rabbitMq","  - wget","    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin","- redis"]},"column":{"s":0,"e":7}},"dim":["","list.2"],"code":"- aspect of technology choice\n- what can easilly run on linode?\n- what software is used/needed at this stage?\n\n- duckdb\n- imagick\n- sparql\n- bash\n- nodejs\n  - databox-libs: ast-lake\n- bc (calc)\n- rsvg-convert\n- towebp\n- graphviz\n- inkscape?\n- TODO ...\n- webhook\n  - [ ] do we really need webhook? VS rabbitMq\n- rabbitMq\n  - wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin\n- redis","symbName":"list","symbRange":[558,575],"symbRangeL":[5,29],"outerCode":"- what can easilly run on linode?\n- what software is used/needed at this stage?\n\n- duckdb\n- imagick\n- sparql\n- bash\n- nodejs\n  - databox-libs: ast-lake\n- bc (calc)\n- rsvg-convert\n- towebp\n- graphviz\n- inkscape?\n- TODO ...\n- webhook\n  - [ ] do we really need webhook? VS rabbitMq\n- rabbitMq\n  - wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin\n- redis\n\n## web scrape-ing","outerHtml":"<ul><li>what can easilly run on linode?</li><li>what software is used/needed at this stage?</li></ul>\n\n<ul><li>duckdb</li><li>imagick</li><li>sparql</li><li>bash</li><li>nodejs<ul><li>databox-libs: ast-lake</li></ul></li><li>bc (calc)</li><li>rsvg-convert</li><li>towebp</li><li>graphviz</li><li>inkscape?</li><li>TODO ...</li><li>webhook<ul><li>[ ] do we really need webhook? VS rabbitMq</li></ul></li><li>rabbitMq<ul><li>wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin</li></ul></li><li>redis</li></ul>\n\n<h2>web scrape-ing</h2>"},{"id":"/root/children/2/children/0","type":"listItem","loc":{"start":128,"end":157,"line":{"s":5,"e":5,"code":["- aspect of technology choice"]},"column":{"s":0,"e":29}},"dim":["","list.2","listItem.0"],"code":"- aspect of technology choice"},{"id":"/root/children/2/children/0/children/0","type":"paragraph","loc":{"start":130,"end":157,"line":{"s":5,"e":5,"code":["- aspect of technology choice"]},"column":{"s":2,"e":29}},"dim":["","list.2","listItem.0","paragraph.0"],"code":"aspect of technology choice"},{"id":"/root/children/2/children/0/children/0/children/0","type":"text","loc":{"start":130,"end":157,"line":{"s":5,"e":5,"code":["- aspect of technology choice"]},"column":{"s":2,"e":29}},"dim":["","list.2","listItem.0","paragraph.0","text.0"],"code":"aspect of technology choice"},{"id":"/root/children/2/children/1","type":"listItem","loc":{"start":158,"end":191,"line":{"s":6,"e":6,"code":["- what can easilly run on linode?"]},"column":{"s":0,"e":33}},"dim":["","list.2","listItem.1"],"code":"- what can easilly run on linode?"},{"id":"/root/children/2/children/1/children/0","type":"paragraph","loc":{"start":160,"end":191,"line":{"s":6,"e":6,"code":["- what can easilly run on linode?"]},"column":{"s":2,"e":33}},"dim":["","list.2","listItem.1","paragraph.0"],"code":"what can easilly run on linode?"},{"id":"/root/children/2/children/1/children/0/children/0","type":"text","loc":{"start":160,"end":191,"line":{"s":6,"e":6,"code":["- what can easilly run on linode?"]},"column":{"s":2,"e":33}},"dim":["","list.2","listItem.1","paragraph.0","text.0"],"code":"what can easilly run on linode?"},{"id":"/root/children/2/children/2","type":"listItem","loc":{"start":192,"end":237,"line":{"s":7,"e":7,"code":["- what software is used/needed at this stage?"]},"column":{"s":0,"e":45}},"dim":["","list.2","listItem.2"],"code":"- what software is used/needed at this stage?"},{"id":"/root/children/2/children/2/children/0","type":"paragraph","loc":{"start":194,"end":237,"line":{"s":7,"e":7,"code":["- what software is used/needed at this stage?"]},"column":{"s":2,"e":45}},"dim":["","list.2","listItem.2","paragraph.0"],"code":"what software is used/needed at this stage?"},{"id":"/root/children/2/children/2/children/0/children/0","type":"text","loc":{"start":194,"end":237,"line":{"s":7,"e":7,"code":["- what software is used/needed at this stage?"]},"column":{"s":2,"e":45}},"dim":["","list.2","listItem.2","paragraph.0","text.0"],"code":"what software is used/needed at this stage?"},{"id":"/root/children/2/children/3","type":"listItem","loc":{"start":239,"end":247,"line":{"s":9,"e":9,"code":["- duckdb"]},"column":{"s":0,"e":8}},"dim":["","list.2","listItem.3"],"code":"- duckdb"},{"id":"/root/children/2/children/3/children/0","type":"paragraph","loc":{"start":241,"end":247,"line":{"s":9,"e":9,"code":["- duckdb"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.3","paragraph.0"],"code":"duckdb"},{"id":"/root/children/2/children/3/children/0/children/0","type":"text","loc":{"start":241,"end":247,"line":{"s":9,"e":9,"code":["- duckdb"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.3","paragraph.0","text.0"],"code":"duckdb"},{"id":"/root/children/2/children/4","type":"listItem","loc":{"start":248,"end":257,"line":{"s":10,"e":10,"code":["- imagick"]},"column":{"s":0,"e":9}},"dim":["","list.2","listItem.4"],"code":"- imagick"},{"id":"/root/children/2/children/4/children/0","type":"paragraph","loc":{"start":250,"end":257,"line":{"s":10,"e":10,"code":["- imagick"]},"column":{"s":2,"e":9}},"dim":["","list.2","listItem.4","paragraph.0"],"code":"imagick"},{"id":"/root/children/2/children/4/children/0/children/0","type":"text","loc":{"start":250,"end":257,"line":{"s":10,"e":10,"code":["- imagick"]},"column":{"s":2,"e":9}},"dim":["","list.2","listItem.4","paragraph.0","text.0"],"code":"imagick"},{"id":"/root/children/2/children/5","type":"listItem","loc":{"start":258,"end":266,"line":{"s":11,"e":11,"code":["- sparql"]},"column":{"s":0,"e":8}},"dim":["","list.2","listItem.5"],"code":"- sparql"},{"id":"/root/children/2/children/5/children/0","type":"paragraph","loc":{"start":260,"end":266,"line":{"s":11,"e":11,"code":["- sparql"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.5","paragraph.0"],"code":"sparql"},{"id":"/root/children/2/children/5/children/0/children/0","type":"text","loc":{"start":260,"end":266,"line":{"s":11,"e":11,"code":["- sparql"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.5","paragraph.0","text.0"],"code":"sparql"},{"id":"/root/children/2/children/6","type":"listItem","loc":{"start":267,"end":273,"line":{"s":12,"e":12,"code":["- bash"]},"column":{"s":0,"e":6}},"dim":["","list.2","listItem.6"],"code":"- bash"},{"id":"/root/children/2/children/6/children/0","type":"paragraph","loc":{"start":269,"end":273,"line":{"s":12,"e":12,"code":["- bash"]},"column":{"s":2,"e":6}},"dim":["","list.2","listItem.6","paragraph.0"],"code":"bash"},{"id":"/root/children/2/children/6/children/0/children/0","type":"text","loc":{"start":269,"end":273,"line":{"s":12,"e":12,"code":["- bash"]},"column":{"s":2,"e":6}},"dim":["","list.2","listItem.6","paragraph.0","text.0"],"code":"bash"},{"id":"/root/children/2/children/7","type":"listItem","loc":{"start":274,"end":309,"line":{"s":13,"e":14,"code":["- nodejs","  - databox-libs: ast-lake"]},"column":{"s":0,"e":26}},"dim":["","list.2","listItem.7"],"code":"- nodejs\n  - databox-libs: ast-lake"},{"id":"/root/children/2/children/7/children/0","type":"paragraph","loc":{"start":276,"end":282,"line":{"s":13,"e":13,"code":["- nodejs"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.7","paragraph.0"],"code":"nodejs"},{"id":"/root/children/2/children/7/children/0/children/0","type":"text","loc":{"start":276,"end":282,"line":{"s":13,"e":13,"code":["- nodejs"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.7","paragraph.0","text.0"],"code":"nodejs"},{"id":"/root/children/2/children/7/children/1","type":"list","loc":{"start":285,"end":309,"line":{"s":14,"e":14,"code":["  - databox-libs: ast-lake"]},"column":{"s":2,"e":26}},"dim":["","list.2","listItem.7","list.1"],"code":"- databox-libs: ast-lake","symbName":"list","symbRange":[null,null],"symbRangeL":[14,14],"outerCode":"","outerHtml":""},{"id":"/root/children/2/children/7/children/1/children/0","type":"listItem","loc":{"start":285,"end":309,"line":{"s":14,"e":14,"code":["  - databox-libs: ast-lake"]},"column":{"s":2,"e":26}},"dim":["","list.2","listItem.7","list.1","listItem.0"],"code":"- databox-libs: ast-lake"},{"id":"/root/children/2/children/7/children/1/children/0/children/0","type":"paragraph","loc":{"start":287,"end":309,"line":{"s":14,"e":14,"code":["  - databox-libs: ast-lake"]},"column":{"s":4,"e":26}},"dim":["","list.2","listItem.7","list.1","listItem.0","paragraph.0"],"code":"databox-libs: ast-lake"},{"id":"/root/children/2/children/7/children/1/children/0/children/0/children/0","type":"text","loc":{"start":287,"end":309,"line":{"s":14,"e":14,"code":["  - databox-libs: ast-lake"]},"column":{"s":4,"e":26}},"dim":["","list.2","listItem.7","list.1","listItem.0","paragraph.0","text.0"],"code":"databox-libs: ast-lake"},{"id":"/root/children/2/children/8","type":"listItem","loc":{"start":310,"end":321,"line":{"s":15,"e":15,"code":["- bc (calc)"]},"column":{"s":0,"e":11}},"dim":["","list.2","listItem.8"],"code":"- bc (calc)"},{"id":"/root/children/2/children/8/children/0","type":"paragraph","loc":{"start":312,"end":321,"line":{"s":15,"e":15,"code":["- bc (calc)"]},"column":{"s":2,"e":11}},"dim":["","list.2","listItem.8","paragraph.0"],"code":"bc (calc)"},{"id":"/root/children/2/children/8/children/0/children/0","type":"text","loc":{"start":312,"end":321,"line":{"s":15,"e":15,"code":["- bc (calc)"]},"column":{"s":2,"e":11}},"dim":["","list.2","listItem.8","paragraph.0","text.0"],"code":"bc (calc)"},{"id":"/root/children/2/children/9","type":"listItem","loc":{"start":322,"end":336,"line":{"s":16,"e":16,"code":["- rsvg-convert"]},"column":{"s":0,"e":14}},"dim":["","list.2","listItem.9"],"code":"- rsvg-convert"},{"id":"/root/children/2/children/9/children/0","type":"paragraph","loc":{"start":324,"end":336,"line":{"s":16,"e":16,"code":["- rsvg-convert"]},"column":{"s":2,"e":14}},"dim":["","list.2","listItem.9","paragraph.0"],"code":"rsvg-convert"},{"id":"/root/children/2/children/9/children/0/children/0","type":"text","loc":{"start":324,"end":336,"line":{"s":16,"e":16,"code":["- rsvg-convert"]},"column":{"s":2,"e":14}},"dim":["","list.2","listItem.9","paragraph.0","text.0"],"code":"rsvg-convert"},{"id":"/root/children/2/children/10","type":"listItem","loc":{"start":337,"end":345,"line":{"s":17,"e":17,"code":["- towebp"]},"column":{"s":0,"e":8}},"dim":["","list.2","listItem.10"],"code":"- towebp"},{"id":"/root/children/2/children/10/children/0","type":"paragraph","loc":{"start":339,"end":345,"line":{"s":17,"e":17,"code":["- towebp"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.10","paragraph.0"],"code":"towebp"},{"id":"/root/children/2/children/10/children/0/children/0","type":"text","loc":{"start":339,"end":345,"line":{"s":17,"e":17,"code":["- towebp"]},"column":{"s":2,"e":8}},"dim":["","list.2","listItem.10","paragraph.0","text.0"],"code":"towebp"},{"id":"/root/children/2/children/11","type":"listItem","loc":{"start":346,"end":356,"line":{"s":18,"e":18,"code":["- graphviz"]},"column":{"s":0,"e":10}},"dim":["","list.2","listItem.11"],"code":"- graphviz"},{"id":"/root/children/2/children/11/children/0","type":"paragraph","loc":{"start":348,"end":356,"line":{"s":18,"e":18,"code":["- graphviz"]},"column":{"s":2,"e":10}},"dim":["","list.2","listItem.11","paragraph.0"],"code":"graphviz"},{"id":"/root/children/2/children/11/children/0/children/0","type":"text","loc":{"start":348,"end":356,"line":{"s":18,"e":18,"code":["- graphviz"]},"column":{"s":2,"e":10}},"dim":["","list.2","listItem.11","paragraph.0","text.0"],"code":"graphviz"},{"id":"/root/children/2/children/12","type":"listItem","loc":{"start":357,"end":368,"line":{"s":19,"e":19,"code":["- inkscape?"]},"column":{"s":0,"e":11}},"dim":["","list.2","listItem.12"],"code":"- inkscape?"},{"id":"/root/children/2/children/12/children/0","type":"paragraph","loc":{"start":359,"end":368,"line":{"s":19,"e":19,"code":["- inkscape?"]},"column":{"s":2,"e":11}},"dim":["","list.2","listItem.12","paragraph.0"],"code":"inkscape?"},{"id":"/root/children/2/children/12/children/0/children/0","type":"text","loc":{"start":359,"end":368,"line":{"s":19,"e":19,"code":["- inkscape?"]},"column":{"s":2,"e":11}},"dim":["","list.2","listItem.12","paragraph.0","text.0"],"code":"inkscape?"},{"id":"/root/children/2/children/13","type":"listItem","loc":{"start":369,"end":379,"line":{"s":20,"e":20,"code":["- TODO ..."]},"column":{"s":0,"e":10}},"dim":["","list.2","listItem.13"],"code":"- TODO ..."},{"id":"/root/children/2/children/13/children/0","type":"paragraph","loc":{"start":371,"end":379,"line":{"s":20,"e":20,"code":["- TODO ..."]},"column":{"s":2,"e":10}},"dim":["","list.2","listItem.13","paragraph.0"],"code":"TODO ..."},{"id":"/root/children/2/children/13/children/0/children/0","type":"text","loc":{"start":371,"end":379,"line":{"s":20,"e":20,"code":["- TODO ..."]},"column":{"s":2,"e":10}},"dim":["","list.2","listItem.13","paragraph.0","text.0"],"code":"TODO ..."},{"id":"/root/children/2/children/14","type":"listItem","loc":{"start":380,"end":436,"line":{"s":21,"e":22,"code":["- webhook","  - [ ] do we really need webhook? VS rabbitMq"]},"column":{"s":0,"e":46}},"dim":["","list.2","listItem.14"],"code":"- webhook\n  - [ ] do we really need webhook? VS rabbitMq"},{"id":"/root/children/2/children/14/children/0","type":"paragraph","loc":{"start":382,"end":389,"line":{"s":21,"e":21,"code":["- webhook"]},"column":{"s":2,"e":9}},"dim":["","list.2","listItem.14","paragraph.0"],"code":"webhook"},{"id":"/root/children/2/children/14/children/0/children/0","type":"text","loc":{"start":382,"end":389,"line":{"s":21,"e":21,"code":["- webhook"]},"column":{"s":2,"e":9}},"dim":["","list.2","listItem.14","paragraph.0","text.0"],"code":"webhook"},{"id":"/root/children/2/children/14/children/1","type":"list","loc":{"start":392,"end":436,"line":{"s":22,"e":22,"code":["  - [ ] do we really need webhook? VS rabbitMq"]},"column":{"s":2,"e":46}},"dim":["","list.2","listItem.14","list.1"],"code":"- [ ] do we really need webhook? VS rabbitMq","symbName":"list","symbRange":[null,null],"symbRangeL":[22,22],"outerCode":"","outerHtml":""},{"id":"/root/children/2/children/14/children/1/children/0","type":"listItem","loc":{"start":392,"end":436,"line":{"s":22,"e":22,"code":["  - [ ] do we really need webhook? VS rabbitMq"]},"column":{"s":2,"e":46}},"dim":["","list.2","listItem.14","list.1","listItem.0"],"code":"- [ ] do we really need webhook? VS rabbitMq"},{"id":"/root/children/2/children/14/children/1/children/0/children/0","type":"paragraph","loc":{"start":394,"end":436,"line":{"s":22,"e":22,"code":["  - [ ] do we really need webhook? VS rabbitMq"]},"column":{"s":4,"e":46}},"dim":["","list.2","listItem.14","list.1","listItem.0","paragraph.0"],"code":"[ ] do we really need webhook? VS rabbitMq"},{"id":"/root/children/2/children/14/children/1/children/0/children/0/children/0","type":"text","loc":{"start":394,"end":436,"line":{"s":22,"e":22,"code":["  - [ ] do we really need webhook? VS rabbitMq"]},"column":{"s":4,"e":46}},"dim":["","list.2","listItem.14","list.1","listItem.0","paragraph.0","text.0"],"code":"[ ] do we really need webhook? VS rabbitMq"},{"id":"/root/children/2/children/15","type":"listItem","loc":{"start":437,"end":548,"line":{"s":23,"e":25,"code":["- rabbitMq","  - wget","    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"]},"column":{"s":0,"e":91}},"dim":["","list.2","listItem.15"],"code":"- rabbitMq\n  - wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"},{"id":"/root/children/2/children/15/children/0","type":"paragraph","loc":{"start":439,"end":447,"line":{"s":23,"e":23,"code":["- rabbitMq"]},"column":{"s":2,"e":10}},"dim":["","list.2","listItem.15","paragraph.0"],"code":"rabbitMq"},{"id":"/root/children/2/children/15/children/0/children/0","type":"text","loc":{"start":439,"end":447,"line":{"s":23,"e":23,"code":["- rabbitMq"]},"column":{"s":2,"e":10}},"dim":["","list.2","listItem.15","paragraph.0","text.0"],"code":"rabbitMq"},{"id":"/root/children/2/children/15/children/1","type":"list","loc":{"start":450,"end":548,"line":{"s":24,"e":25,"code":["  - wget","    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"]},"column":{"s":2,"e":91}},"dim":["","list.2","listItem.15","list.1"],"code":"- wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin","symbName":"list","symbRange":[null,null],"symbRangeL":[24,25],"outerCode":"","outerHtml":""},{"id":"/root/children/2/children/15/children/1/children/0","type":"listItem","loc":{"start":450,"end":548,"line":{"s":24,"e":25,"code":["  - wget","    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"]},"column":{"s":2,"e":91}},"dim":["","list.2","listItem.15","list.1","listItem.0"],"code":"- wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"},{"id":"/root/children/2/children/15/children/1/children/0/children/0","type":"paragraph","loc":{"start":452,"end":548,"line":{"s":24,"e":25,"code":["  - wget","    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"]},"column":{"s":4,"e":91}},"dim":["","list.2","listItem.15","list.1","listItem.0","paragraph.0"],"code":"wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"},{"id":"/root/children/2/children/15/children/1/children/0/children/0/children/0","type":"text","loc":{"start":452,"end":548,"line":{"s":24,"e":25,"code":["  - wget","    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"]},"column":{"s":4,"e":91}},"dim":["","list.2","listItem.15","list.1","listItem.0","paragraph.0","text.0"],"code":"wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin"},{"id":"/root/children/2/children/16","type":"listItem","loc":{"start":549,"end":556,"line":{"s":26,"e":26,"code":["- redis"]},"column":{"s":0,"e":7}},"dim":["","list.2","listItem.16"],"code":"- redis"},{"id":"/root/children/2/children/16/children/0","type":"paragraph","loc":{"start":551,"end":556,"line":{"s":26,"e":26,"code":["- redis"]},"column":{"s":2,"e":7}},"dim":["","list.2","listItem.16","paragraph.0"],"code":"redis"},{"id":"/root/children/2/children/16/children/0/children/0","type":"text","loc":{"start":551,"end":556,"line":{"s":26,"e":26,"code":["- redis"]},"column":{"s":2,"e":7}},"dim":["","list.2","listItem.16","paragraph.0","text.0"],"code":"redis"},{"id":"/root/children/3","type":"heading","loc":{"start":558,"end":575,"line":{"s":28,"e":28,"code":["## web scrape-ing"]},"column":{"s":0,"e":17}},"dim":["","heading.3"],"code":"## web scrape-ing","symbName":"heading","symbRange":[577,1058],"symbRangeL":[28,41],"outerCode":"\n- - https://crawlee.dev/\n- amerkurev/scrapper\n  - pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"\n- https://apify.com/store/categories/seo-tools\n  - https://apify.com/maged120/seobility-seo-checker\n- https://github.com/gocolly/colly\n- https://github.com/heinrichb/scrapey-cli/\n- see databox-libs: fetchish\n-","outerHtml":"\n<ul><li>- https://crawlee.dev/</li><li>amerkurev/scrapper<ul><li>pecka!</li><li>curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"</li><li>curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"</li></ul></li><li>https://apify.com/store/categories/seo-tools<ul><li>https://apify.com/maged120/seobility-seo-checker</li></ul></li><li>https://github.com/gocolly/colly</li><li>https://github.com/heinrichb/scrapey-cli/</li><li>see databox-libs: fetchish\n-</li></ul>"},{"id":"/root/children/3/children/0","type":"text","loc":{"start":561,"end":575,"line":{"s":28,"e":28,"code":["## web scrape-ing"]},"column":{"s":3,"e":17}},"dim":["","heading.3","text.0"],"code":"web scrape-ing"},{"id":"/root/children/4","type":"list","loc":{"start":577,"end":1058,"line":{"s":30,"e":40,"code":["- - https://crawlee.dev/","- amerkurev/scrapper","  - pecka!","  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"","  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"","- https://apify.com/store/categories/seo-tools","  - https://apify.com/maged120/seobility-seo-checker","- https://github.com/gocolly/colly","- https://github.com/heinrichb/scrapey-cli/","- see databox-libs: fetchish","-"]},"column":{"s":0,"e":1}},"dim":["","list.4"],"code":"- - https://crawlee.dev/\n- amerkurev/scrapper\n  - pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"\n- https://apify.com/store/categories/seo-tools\n  - https://apify.com/maged120/seobility-seo-checker\n- https://github.com/gocolly/colly\n- https://github.com/heinrichb/scrapey-cli/\n- see databox-libs: fetchish\n-","symbName":"list","symbRange":[1060,1072],"symbRangeL":[30,43],"outerCode":"- amerkurev/scrapper\n  - pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"\n- https://apify.com/store/categories/seo-tools\n  - https://apify.com/maged120/seobility-seo-checker\n- https://github.com/gocolly/colly\n- https://github.com/heinrichb/scrapey-cli/\n- see databox-libs: fetchish\n-\n\n## redis + ?","outerHtml":"<ul><li>amerkurev/scrapper<ul><li>pecka!</li><li>curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"</li><li>curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"</li></ul></li><li>https://apify.com/store/categories/seo-tools<ul><li>https://apify.com/maged120/seobility-seo-checker</li></ul></li><li>https://github.com/gocolly/colly</li><li>https://github.com/heinrichb/scrapey-cli/</li><li>see databox-libs: fetchish\n-</li></ul>\n\n<h2>redis + ?</h2>"},{"id":"/root/children/4/children/0","type":"listItem","loc":{"start":577,"end":601,"line":{"s":30,"e":30,"code":["- - https://crawlee.dev/"]},"column":{"s":0,"e":24}},"dim":["","list.4","listItem.0"],"code":"- - https://crawlee.dev/"},{"id":"/root/children/4/children/0/children/0","type":"list","loc":{"start":579,"end":601,"line":{"s":30,"e":30,"code":["- - https://crawlee.dev/"]},"column":{"s":2,"e":24}},"dim":["","list.4","listItem.0","list.0"],"code":"- https://crawlee.dev/","symbName":"list","symbRange":[null,null],"symbRangeL":[30,30],"outerCode":"","outerHtml":""},{"id":"/root/children/4/children/0/children/0/children/0","type":"listItem","loc":{"start":579,"end":601,"line":{"s":30,"e":30,"code":["- - https://crawlee.dev/"]},"column":{"s":2,"e":24}},"dim":["","list.4","listItem.0","list.0","listItem.0"],"code":"- https://crawlee.dev/"},{"id":"/root/children/4/children/0/children/0/children/0/children/0","type":"paragraph","loc":{"start":581,"end":601,"line":{"s":30,"e":30,"code":["- - https://crawlee.dev/"]},"column":{"s":4,"e":24}},"dim":["","list.4","listItem.0","list.0","listItem.0","paragraph.0"],"code":"https://crawlee.dev/"},{"id":"/root/children/4/children/0/children/0/children/0/children/0/children/0","type":"text","loc":{"start":581,"end":601,"line":{"s":30,"e":30,"code":["- - https://crawlee.dev/"]},"column":{"s":4,"e":24}},"dim":["","list.4","listItem.0","list.0","listItem.0","paragraph.0","text.0"],"code":"https://crawlee.dev/"},{"id":"/root/children/4/children/1","type":"listItem","loc":{"start":602,"end":848,"line":{"s":31,"e":34,"code":["- amerkurev/scrapper","  - pecka!","  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"","  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""]},"column":{"s":0,"e":122}},"dim":["","list.4","listItem.1"],"code":"- amerkurev/scrapper\n  - pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""},{"id":"/root/children/4/children/1/children/0","type":"paragraph","loc":{"start":604,"end":622,"line":{"s":31,"e":31,"code":["- amerkurev/scrapper"]},"column":{"s":2,"e":20}},"dim":["","list.4","listItem.1","paragraph.0"],"code":"amerkurev/scrapper"},{"id":"/root/children/4/children/1/children/0/children/0","type":"text","loc":{"start":604,"end":622,"line":{"s":31,"e":31,"code":["- amerkurev/scrapper"]},"column":{"s":2,"e":20}},"dim":["","list.4","listItem.1","paragraph.0","text.0"],"code":"amerkurev/scrapper"},{"id":"/root/children/4/children/1/children/1","type":"list","loc":{"start":625,"end":848,"line":{"s":32,"e":34,"code":["  - pecka!","  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"","  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""]},"column":{"s":2,"e":122}},"dim":["","list.4","listItem.1","list.1"],"code":"- pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"","symbName":"list","symbRange":[null,null],"symbRangeL":[32,34],"outerCode":"  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"","outerHtml":"<ul><li>curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"</li></ul>"},{"id":"/root/children/4/children/1/children/1/children/0","type":"listItem","loc":{"start":625,"end":633,"line":{"s":32,"e":32,"code":["  - pecka!"]},"column":{"s":2,"e":10}},"dim":["","list.4","listItem.1","list.1","listItem.0"],"code":"- pecka!"},{"id":"/root/children/4/children/1/children/1/children/0/children/0","type":"paragraph","loc":{"start":627,"end":633,"line":{"s":32,"e":32,"code":["  - pecka!"]},"column":{"s":4,"e":10}},"dim":["","list.4","listItem.1","list.1","listItem.0","paragraph.0"],"code":"pecka!"},{"id":"/root/children/4/children/1/children/1/children/0/children/0/children/0","type":"text","loc":{"start":627,"end":633,"line":{"s":32,"e":32,"code":["  - pecka!"]},"column":{"s":4,"e":10}},"dim":["","list.4","listItem.1","list.1","listItem.0","paragraph.0","text.0"],"code":"pecka!"},{"id":"/root/children/4/children/1/children/1/children/1","type":"listItem","loc":{"start":636,"end":725,"line":{"s":33,"e":33,"code":["  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\""]},"column":{"s":2,"e":91}},"dim":["","list.4","listItem.1","list.1","listItem.1"],"code":"- curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\""},{"id":"/root/children/4/children/1/children/1/children/1/children/0","type":"paragraph","loc":{"start":638,"end":725,"line":{"s":33,"e":33,"code":["  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\""]},"column":{"s":4,"e":91}},"dim":["","list.4","listItem.1","list.1","listItem.1","paragraph.0"],"code":"curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\""},{"id":"/root/children/4/children/1/children/1/children/1/children/0/children/0","type":"text","loc":{"start":638,"end":725,"line":{"s":33,"e":33,"code":["  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\""]},"column":{"s":4,"e":91}},"dim":["","list.4","listItem.1","list.1","listItem.1","paragraph.0","text.0"],"code":"curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\""},{"id":"/root/children/4/children/1/children/1/children/2","type":"listItem","loc":{"start":728,"end":848,"line":{"s":34,"e":34,"code":["  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""]},"column":{"s":2,"e":122}},"dim":["","list.4","listItem.1","list.1","listItem.2"],"code":"- curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""},{"id":"/root/children/4/children/1/children/1/children/2/children/0","type":"paragraph","loc":{"start":730,"end":848,"line":{"s":34,"e":34,"code":["  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""]},"column":{"s":4,"e":122}},"dim":["","list.4","listItem.1","list.1","listItem.2","paragraph.0"],"code":"curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""},{"id":"/root/children/4/children/1/children/1/children/2/children/0/children/0","type":"text","loc":{"start":730,"end":848,"line":{"s":34,"e":34,"code":["  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""]},"column":{"s":4,"e":122}},"dim":["","list.4","listItem.1","list.1","listItem.2","paragraph.0","text.0"],"code":"curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\""},{"id":"/root/children/4/children/2","type":"listItem","loc":{"start":849,"end":948,"line":{"s":35,"e":36,"code":["- https://apify.com/store/categories/seo-tools","  - https://apify.com/maged120/seobility-seo-checker"]},"column":{"s":0,"e":52}},"dim":["","list.4","listItem.2"],"code":"- https://apify.com/store/categories/seo-tools\n  - https://apify.com/maged120/seobility-seo-checker"},{"id":"/root/children/4/children/2/children/0","type":"paragraph","loc":{"start":851,"end":895,"line":{"s":35,"e":35,"code":["- https://apify.com/store/categories/seo-tools"]},"column":{"s":2,"e":46}},"dim":["","list.4","listItem.2","paragraph.0"],"code":"https://apify.com/store/categories/seo-tools"},{"id":"/root/children/4/children/2/children/0/children/0","type":"text","loc":{"start":851,"end":895,"line":{"s":35,"e":35,"code":["- https://apify.com/store/categories/seo-tools"]},"column":{"s":2,"e":46}},"dim":["","list.4","listItem.2","paragraph.0","text.0"],"code":"https://apify.com/store/categories/seo-tools"},{"id":"/root/children/4/children/2/children/1","type":"list","loc":{"start":898,"end":948,"line":{"s":36,"e":36,"code":["  - https://apify.com/maged120/seobility-seo-checker"]},"column":{"s":2,"e":52}},"dim":["","list.4","listItem.2","list.1"],"code":"- https://apify.com/maged120/seobility-seo-checker","symbName":"list","symbRange":[null,null],"symbRangeL":[36,36],"outerCode":"","outerHtml":""},{"id":"/root/children/4/children/2/children/1/children/0","type":"listItem","loc":{"start":898,"end":948,"line":{"s":36,"e":36,"code":["  - https://apify.com/maged120/seobility-seo-checker"]},"column":{"s":2,"e":52}},"dim":["","list.4","listItem.2","list.1","listItem.0"],"code":"- https://apify.com/maged120/seobility-seo-checker"},{"id":"/root/children/4/children/2/children/1/children/0/children/0","type":"paragraph","loc":{"start":900,"end":948,"line":{"s":36,"e":36,"code":["  - https://apify.com/maged120/seobility-seo-checker"]},"column":{"s":4,"e":52}},"dim":["","list.4","listItem.2","list.1","listItem.0","paragraph.0"],"code":"https://apify.com/maged120/seobility-seo-checker"},{"id":"/root/children/4/children/2/children/1/children/0/children/0/children/0","type":"text","loc":{"start":900,"end":948,"line":{"s":36,"e":36,"code":["  - https://apify.com/maged120/seobility-seo-checker"]},"column":{"s":4,"e":52}},"dim":["","list.4","listItem.2","list.1","listItem.0","paragraph.0","text.0"],"code":"https://apify.com/maged120/seobility-seo-checker"},{"id":"/root/children/4/children/3","type":"listItem","loc":{"start":949,"end":983,"line":{"s":37,"e":37,"code":["- https://github.com/gocolly/colly"]},"column":{"s":0,"e":34}},"dim":["","list.4","listItem.3"],"code":"- https://github.com/gocolly/colly"},{"id":"/root/children/4/children/3/children/0","type":"paragraph","loc":{"start":951,"end":983,"line":{"s":37,"e":37,"code":["- https://github.com/gocolly/colly"]},"column":{"s":2,"e":34}},"dim":["","list.4","listItem.3","paragraph.0"],"code":"https://github.com/gocolly/colly"},{"id":"/root/children/4/children/3/children/0/children/0","type":"text","loc":{"start":951,"end":983,"line":{"s":37,"e":37,"code":["- https://github.com/gocolly/colly"]},"column":{"s":2,"e":34}},"dim":["","list.4","listItem.3","paragraph.0","text.0"],"code":"https://github.com/gocolly/colly"},{"id":"/root/children/4/children/4","type":"listItem","loc":{"start":984,"end":1027,"line":{"s":38,"e":38,"code":["- https://github.com/heinrichb/scrapey-cli/"]},"column":{"s":0,"e":43}},"dim":["","list.4","listItem.4"],"code":"- https://github.com/heinrichb/scrapey-cli/"},{"id":"/root/children/4/children/4/children/0","type":"paragraph","loc":{"start":986,"end":1027,"line":{"s":38,"e":38,"code":["- https://github.com/heinrichb/scrapey-cli/"]},"column":{"s":2,"e":43}},"dim":["","list.4","listItem.4","paragraph.0"],"code":"https://github.com/heinrichb/scrapey-cli/"},{"id":"/root/children/4/children/4/children/0/children/0","type":"text","loc":{"start":986,"end":1027,"line":{"s":38,"e":38,"code":["- https://github.com/heinrichb/scrapey-cli/"]},"column":{"s":2,"e":43}},"dim":["","list.4","listItem.4","paragraph.0","text.0"],"code":"https://github.com/heinrichb/scrapey-cli/"},{"id":"/root/children/4/children/5","type":"listItem","loc":{"start":1028,"end":1056,"line":{"s":39,"e":39,"code":["- see databox-libs: fetchish"]},"column":{"s":0,"e":28}},"dim":["","list.4","listItem.5"],"code":"- see databox-libs: fetchish"},{"id":"/root/children/4/children/5/children/0","type":"paragraph","loc":{"start":1030,"end":1056,"line":{"s":39,"e":39,"code":["- see databox-libs: fetchish"]},"column":{"s":2,"e":28}},"dim":["","list.4","listItem.5","paragraph.0"],"code":"see databox-libs: fetchish"},{"id":"/root/children/4/children/5/children/0/children/0","type":"text","loc":{"start":1030,"end":1056,"line":{"s":39,"e":39,"code":["- see databox-libs: fetchish"]},"column":{"s":2,"e":28}},"dim":["","list.4","listItem.5","paragraph.0","text.0"],"code":"see databox-libs: fetchish"},{"id":"/root/children/4/children/6","type":"listItem","loc":{"start":1057,"end":1058,"line":{"s":40,"e":40,"code":["-"]},"column":{"s":0,"e":1}},"dim":["","list.4","listItem.6"],"code":"-"},{"id":"/root/children/5","type":"heading","loc":{"start":1060,"end":1072,"line":{"s":42,"e":42,"code":["## redis + ?"]},"column":{"s":0,"e":12}},"dim":["","heading.5"],"code":"## redis + ?","symbName":"heading","symbRange":[1074,1386],"symbRangeL":[42,51],"outerCode":"\n- https://github.com/RediSearch/RediSearch\n- https://docs.keydb.dev/\n- https://www.dragonflydb.io/\n- https://github.com/goodform/awesome-redis-module\n- see duck.ai_redis\\*.mdd\n- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/\n  - https://github.com/emacstheviking/gnuprolog-redisclient","outerHtml":"\n<ul><li>https://github.com/RediSearch/RediSearch</li><li>https://docs.keydb.dev/</li><li>https://www.dragonflydb.io/</li><li>https://github.com/goodform/awesome-redis-module</li><li>see duck.ai_redis*.mdd</li><li>ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/<ul><li>https://github.com/emacstheviking/gnuprolog-redisclient</li></ul></li></ul>"},{"id":"/root/children/5/children/0","type":"text","loc":{"start":1063,"end":1072,"line":{"s":42,"e":42,"code":["## redis + ?"]},"column":{"s":3,"e":12}},"dim":["","heading.5","text.0"],"code":"redis + ?"},{"id":"/root/children/6","type":"list","loc":{"start":1074,"end":1386,"line":{"s":44,"e":50,"code":["- https://github.com/RediSearch/RediSearch","- https://docs.keydb.dev/","- https://www.dragonflydb.io/","- https://github.com/goodform/awesome-redis-module","- see duck.ai_redis\\*.mdd","- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/","  - https://github.com/emacstheviking/gnuprolog-redisclient"]},"column":{"s":0,"e":59}},"dim":["","list.6"],"code":"- https://github.com/RediSearch/RediSearch\n- https://docs.keydb.dev/\n- https://www.dragonflydb.io/\n- https://github.com/goodform/awesome-redis-module\n- see duck.ai_redis\\*.mdd\n- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/\n  - https://github.com/emacstheviking/gnuprolog-redisclient","symbName":"list","symbRange":[1388,1400],"symbRangeL":[44,53],"outerCode":"- https://docs.keydb.dev/\n- https://www.dragonflydb.io/\n- https://github.com/goodform/awesome-redis-module\n- see duck.ai_redis\\*.mdd\n- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/\n  - https://github.com/emacstheviking/gnuprolog-redisclient\n\n## rabbit-mq","outerHtml":"<ul><li>https://docs.keydb.dev/</li><li>https://www.dragonflydb.io/</li><li>https://github.com/goodform/awesome-redis-module</li><li>see duck.ai_redis*.mdd</li><li>ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/<ul><li>https://github.com/emacstheviking/gnuprolog-redisclient</li></ul></li></ul>\n\n<h2>rabbit-mq</h2>"},{"id":"/root/children/6/children/0","type":"listItem","loc":{"start":1074,"end":1116,"line":{"s":44,"e":44,"code":["- https://github.com/RediSearch/RediSearch"]},"column":{"s":0,"e":42}},"dim":["","list.6","listItem.0"],"code":"- https://github.com/RediSearch/RediSearch"},{"id":"/root/children/6/children/0/children/0","type":"paragraph","loc":{"start":1076,"end":1116,"line":{"s":44,"e":44,"code":["- https://github.com/RediSearch/RediSearch"]},"column":{"s":2,"e":42}},"dim":["","list.6","listItem.0","paragraph.0"],"code":"https://github.com/RediSearch/RediSearch"},{"id":"/root/children/6/children/0/children/0/children/0","type":"text","loc":{"start":1076,"end":1116,"line":{"s":44,"e":44,"code":["- https://github.com/RediSearch/RediSearch"]},"column":{"s":2,"e":42}},"dim":["","list.6","listItem.0","paragraph.0","text.0"],"code":"https://github.com/RediSearch/RediSearch"},{"id":"/root/children/6/children/1","type":"listItem","loc":{"start":1117,"end":1142,"line":{"s":45,"e":45,"code":["- https://docs.keydb.dev/"]},"column":{"s":0,"e":25}},"dim":["","list.6","listItem.1"],"code":"- https://docs.keydb.dev/"},{"id":"/root/children/6/children/1/children/0","type":"paragraph","loc":{"start":1119,"end":1142,"line":{"s":45,"e":45,"code":["- https://docs.keydb.dev/"]},"column":{"s":2,"e":25}},"dim":["","list.6","listItem.1","paragraph.0"],"code":"https://docs.keydb.dev/"},{"id":"/root/children/6/children/1/children/0/children/0","type":"text","loc":{"start":1119,"end":1142,"line":{"s":45,"e":45,"code":["- https://docs.keydb.dev/"]},"column":{"s":2,"e":25}},"dim":["","list.6","listItem.1","paragraph.0","text.0"],"code":"https://docs.keydb.dev/"},{"id":"/root/children/6/children/2","type":"listItem","loc":{"start":1143,"end":1172,"line":{"s":46,"e":46,"code":["- https://www.dragonflydb.io/"]},"column":{"s":0,"e":29}},"dim":["","list.6","listItem.2"],"code":"- https://www.dragonflydb.io/"},{"id":"/root/children/6/children/2/children/0","type":"paragraph","loc":{"start":1145,"end":1172,"line":{"s":46,"e":46,"code":["- https://www.dragonflydb.io/"]},"column":{"s":2,"e":29}},"dim":["","list.6","listItem.2","paragraph.0"],"code":"https://www.dragonflydb.io/"},{"id":"/root/children/6/children/2/children/0/children/0","type":"text","loc":{"start":1145,"end":1172,"line":{"s":46,"e":46,"code":["- https://www.dragonflydb.io/"]},"column":{"s":2,"e":29}},"dim":["","list.6","listItem.2","paragraph.0","text.0"],"code":"https://www.dragonflydb.io/"},{"id":"/root/children/6/children/3","type":"listItem","loc":{"start":1173,"end":1223,"line":{"s":47,"e":47,"code":["- https://github.com/goodform/awesome-redis-module"]},"column":{"s":0,"e":50}},"dim":["","list.6","listItem.3"],"code":"- https://github.com/goodform/awesome-redis-module"},{"id":"/root/children/6/children/3/children/0","type":"paragraph","loc":{"start":1175,"end":1223,"line":{"s":47,"e":47,"code":["- https://github.com/goodform/awesome-redis-module"]},"column":{"s":2,"e":50}},"dim":["","list.6","listItem.3","paragraph.0"],"code":"https://github.com/goodform/awesome-redis-module"},{"id":"/root/children/6/children/3/children/0/children/0","type":"text","loc":{"start":1175,"end":1223,"line":{"s":47,"e":47,"code":["- https://github.com/goodform/awesome-redis-module"]},"column":{"s":2,"e":50}},"dim":["","list.6","listItem.3","paragraph.0","text.0"],"code":"https://github.com/goodform/awesome-redis-module"},{"id":"/root/children/6/children/4","type":"listItem","loc":{"start":1224,"end":1249,"line":{"s":48,"e":48,"code":["- see duck.ai_redis\\*.mdd"]},"column":{"s":0,"e":25}},"dim":["","list.6","listItem.4"],"code":"- see duck.ai_redis\\*.mdd"},{"id":"/root/children/6/children/4/children/0","type":"paragraph","loc":{"start":1226,"end":1249,"line":{"s":48,"e":48,"code":["- see duck.ai_redis\\*.mdd"]},"column":{"s":2,"e":25}},"dim":["","list.6","listItem.4","paragraph.0"],"code":"see duck.ai_redis\\*.mdd"},{"id":"/root/children/6/children/4/children/0/children/0","type":"text","loc":{"start":1226,"end":1249,"line":{"s":48,"e":48,"code":["- see duck.ai_redis\\*.mdd"]},"column":{"s":2,"e":25}},"dim":["","list.6","listItem.4","paragraph.0","text.0"],"code":"see duck.ai_redis\\*.mdd"},{"id":"/root/children/6/children/5","type":"listItem","loc":{"start":1250,"end":1386,"line":{"s":49,"e":50,"code":["- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/","  - https://github.com/emacstheviking/gnuprolog-redisclient"]},"column":{"s":0,"e":59}},"dim":["","list.6","listItem.5"],"code":"- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/\n  - https://github.com/emacstheviking/gnuprolog-redisclient"},{"id":"/root/children/6/children/5/children/0","type":"paragraph","loc":{"start":1252,"end":1326,"line":{"s":49,"e":49,"code":["- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/"]},"column":{"s":2,"e":76}},"dim":["","list.6","listItem.5","paragraph.0"],"code":"ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/"},{"id":"/root/children/6/children/5/children/0/children/0","type":"text","loc":{"start":1252,"end":1326,"line":{"s":49,"e":49,"code":["- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/"]},"column":{"s":2,"e":76}},"dim":["","list.6","listItem.5","paragraph.0","text.0"],"code":"ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/"},{"id":"/root/children/6/children/5/children/1","type":"list","loc":{"start":1329,"end":1386,"line":{"s":50,"e":50,"code":["  - https://github.com/emacstheviking/gnuprolog-redisclient"]},"column":{"s":2,"e":59}},"dim":["","list.6","listItem.5","list.1"],"code":"- https://github.com/emacstheviking/gnuprolog-redisclient","symbName":"list","symbRange":[null,null],"symbRangeL":[50,50],"outerCode":"","outerHtml":""},{"id":"/root/children/6/children/5/children/1/children/0","type":"listItem","loc":{"start":1329,"end":1386,"line":{"s":50,"e":50,"code":["  - https://github.com/emacstheviking/gnuprolog-redisclient"]},"column":{"s":2,"e":59}},"dim":["","list.6","listItem.5","list.1","listItem.0"],"code":"- https://github.com/emacstheviking/gnuprolog-redisclient"},{"id":"/root/children/6/children/5/children/1/children/0/children/0","type":"paragraph","loc":{"start":1331,"end":1386,"line":{"s":50,"e":50,"code":["  - https://github.com/emacstheviking/gnuprolog-redisclient"]},"column":{"s":4,"e":59}},"dim":["","list.6","listItem.5","list.1","listItem.0","paragraph.0"],"code":"https://github.com/emacstheviking/gnuprolog-redisclient"},{"id":"/root/children/6/children/5/children/1/children/0/children/0/children/0","type":"text","loc":{"start":1331,"end":1386,"line":{"s":50,"e":50,"code":["  - https://github.com/emacstheviking/gnuprolog-redisclient"]},"column":{"s":4,"e":59}},"dim":["","list.6","listItem.5","list.1","listItem.0","paragraph.0","text.0"],"code":"https://github.com/emacstheviking/gnuprolog-redisclient"},{"id":"/root/children/7","type":"heading","loc":{"start":1388,"end":1400,"line":{"s":52,"e":52,"code":["## rabbit-mq"]},"column":{"s":0,"e":12}},"dim":["","heading.7"],"code":"## rabbit-mq","symbName":"heading","symbRange":[1402,1412],"symbRangeL":[52,56],"outerCode":"\n- suoper\n-","outerHtml":"\n<ul><li>suoper\n-</li></ul>"},{"id":"/root/children/7/children/0","type":"text","loc":{"start":1391,"end":1400,"line":{"s":52,"e":52,"code":["## rabbit-mq"]},"column":{"s":3,"e":12}},"dim":["","heading.7","text.0"],"code":"rabbit-mq"},{"id":"/root/children/8","type":"list","loc":{"start":1402,"end":1412,"line":{"s":54,"e":55,"code":["- suoper","-"]},"column":{"s":0,"e":1}},"dim":["","list.8"],"code":"- suoper\n-","symbName":"list","symbRange":[1414,1420],"symbRangeL":[54,58],"outerCode":"-\n\n## LLM","outerHtml":"<p>-</p>\n\n<h2>LLM</h2>"},{"id":"/root/children/8/children/0","type":"listItem","loc":{"start":1402,"end":1410,"line":{"s":54,"e":54,"code":["- suoper"]},"column":{"s":0,"e":8}},"dim":["","list.8","listItem.0"],"code":"- suoper"},{"id":"/root/children/8/children/0/children/0","type":"paragraph","loc":{"start":1404,"end":1410,"line":{"s":54,"e":54,"code":["- suoper"]},"column":{"s":2,"e":8}},"dim":["","list.8","listItem.0","paragraph.0"],"code":"suoper"},{"id":"/root/children/8/children/0/children/0/children/0","type":"text","loc":{"start":1404,"end":1410,"line":{"s":54,"e":54,"code":["- suoper"]},"column":{"s":2,"e":8}},"dim":["","list.8","listItem.0","paragraph.0","text.0"],"code":"suoper"},{"id":"/root/children/8/children/1","type":"listItem","loc":{"start":1411,"end":1412,"line":{"s":55,"e":55,"code":["-"]},"column":{"s":0,"e":1}},"dim":["","list.8","listItem.1"],"code":"-"},{"id":"/root/children/9","type":"heading","loc":{"start":1414,"end":1420,"line":{"s":57,"e":57,"code":["## LLM"]},"column":{"s":0,"e":6}},"dim":["","heading.9"],"code":"## LLM","symbName":"heading","symbRange":[1422,1536],"symbRangeL":[57,63],"outerCode":"\n- https://www.jan.ai/\n- https://localai.io/\n- see llm-tagger... shit\n- https://www.youtube.com/watch?v=0XLRZavOjSs","outerHtml":"\n<ul><li>https://www.jan.ai/</li><li>https://localai.io/</li><li>see llm-tagger... shit</li><li>https://www.youtube.com/watch?v=0XLRZavOjSs</li></ul>"},{"id":"/root/children/9/children/0","type":"text","loc":{"start":1417,"end":1420,"line":{"s":57,"e":57,"code":["## LLM"]},"column":{"s":3,"e":6}},"dim":["","heading.9","text.0"],"code":"LLM"},{"id":"/root/children/10","type":"list","loc":{"start":1422,"end":1536,"line":{"s":59,"e":62,"code":["- https://www.jan.ai/","- https://localai.io/","- see llm-tagger... shit","- https://www.youtube.com/watch?v=0XLRZavOjSs"]},"column":{"s":0,"e":45}},"dim":["","list.10"],"code":"- https://www.jan.ai/\n- https://localai.io/\n- see llm-tagger... shit\n- https://www.youtube.com/watch?v=0XLRZavOjSs","symbName":"list","symbRange":[1538,1563],"symbRangeL":[59,65],"outerCode":"- https://localai.io/\n- see llm-tagger... shit\n- https://www.youtube.com/watch?v=0XLRZavOjSs\n\n## collabora for markdown","outerHtml":"<ul><li>https://localai.io/</li><li>see llm-tagger... shit</li><li>https://www.youtube.com/watch?v=0XLRZavOjSs</li></ul>\n\n<h2>collabora for markdown</h2>"},{"id":"/root/children/10/children/0","type":"listItem","loc":{"start":1422,"end":1443,"line":{"s":59,"e":59,"code":["- https://www.jan.ai/"]},"column":{"s":0,"e":21}},"dim":["","list.10","listItem.0"],"code":"- https://www.jan.ai/"},{"id":"/root/children/10/children/0/children/0","type":"paragraph","loc":{"start":1424,"end":1443,"line":{"s":59,"e":59,"code":["- https://www.jan.ai/"]},"column":{"s":2,"e":21}},"dim":["","list.10","listItem.0","paragraph.0"],"code":"https://www.jan.ai/"},{"id":"/root/children/10/children/0/children/0/children/0","type":"text","loc":{"start":1424,"end":1443,"line":{"s":59,"e":59,"code":["- https://www.jan.ai/"]},"column":{"s":2,"e":21}},"dim":["","list.10","listItem.0","paragraph.0","text.0"],"code":"https://www.jan.ai/"},{"id":"/root/children/10/children/1","type":"listItem","loc":{"start":1444,"end":1465,"line":{"s":60,"e":60,"code":["- https://localai.io/"]},"column":{"s":0,"e":21}},"dim":["","list.10","listItem.1"],"code":"- https://localai.io/"},{"id":"/root/children/10/children/1/children/0","type":"paragraph","loc":{"start":1446,"end":1465,"line":{"s":60,"e":60,"code":["- https://localai.io/"]},"column":{"s":2,"e":21}},"dim":["","list.10","listItem.1","paragraph.0"],"code":"https://localai.io/"},{"id":"/root/children/10/children/1/children/0/children/0","type":"text","loc":{"start":1446,"end":1465,"line":{"s":60,"e":60,"code":["- https://localai.io/"]},"column":{"s":2,"e":21}},"dim":["","list.10","listItem.1","paragraph.0","text.0"],"code":"https://localai.io/"},{"id":"/root/children/10/children/2","type":"listItem","loc":{"start":1466,"end":1490,"line":{"s":61,"e":61,"code":["- see llm-tagger... shit"]},"column":{"s":0,"e":24}},"dim":["","list.10","listItem.2"],"code":"- see llm-tagger... shit"},{"id":"/root/children/10/children/2/children/0","type":"paragraph","loc":{"start":1468,"end":1490,"line":{"s":61,"e":61,"code":["- see llm-tagger... shit"]},"column":{"s":2,"e":24}},"dim":["","list.10","listItem.2","paragraph.0"],"code":"see llm-tagger... shit"},{"id":"/root/children/10/children/2/children/0/children/0","type":"text","loc":{"start":1468,"end":1490,"line":{"s":61,"e":61,"code":["- see llm-tagger... shit"]},"column":{"s":2,"e":24}},"dim":["","list.10","listItem.2","paragraph.0","text.0"],"code":"see llm-tagger... shit"},{"id":"/root/children/10/children/3","type":"listItem","loc":{"start":1491,"end":1536,"line":{"s":62,"e":62,"code":["- https://www.youtube.com/watch?v=0XLRZavOjSs"]},"column":{"s":0,"e":45}},"dim":["","list.10","listItem.3"],"code":"- https://www.youtube.com/watch?v=0XLRZavOjSs"},{"id":"/root/children/10/children/3/children/0","type":"paragraph","loc":{"start":1493,"end":1536,"line":{"s":62,"e":62,"code":["- https://www.youtube.com/watch?v=0XLRZavOjSs"]},"column":{"s":2,"e":45}},"dim":["","list.10","listItem.3","paragraph.0"],"code":"https://www.youtube.com/watch?v=0XLRZavOjSs"},{"id":"/root/children/10/children/3/children/0/children/0","type":"text","loc":{"start":1493,"end":1536,"line":{"s":62,"e":62,"code":["- https://www.youtube.com/watch?v=0XLRZavOjSs"]},"column":{"s":2,"e":45}},"dim":["","list.10","listItem.3","paragraph.0","text.0"],"code":"https://www.youtube.com/watch?v=0XLRZavOjSs"},{"id":"/root/children/11","type":"heading","loc":{"start":1538,"end":1563,"line":{"s":64,"e":64,"code":["## collabora for markdown"]},"column":{"s":0,"e":25}},"dim":["","heading.11"],"code":"## collabora for markdown","symbName":"heading","symbRange":[1565,1881],"symbRangeL":[64,69],"outerCode":"\n- [Etherpad](https://etherpad.org/)\n- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)\n- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)","outerHtml":"\n<ul><li><a href=\"https://etherpad.org/\">Etherpad</a></li><li><a href=\"https://github.com/Docmost/docmost\">GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub</a></li><li><a href=\"https://www.getoutline.com/\">Outline – Team knowledge base &amp; wiki</a></li></ul>"},{"id":"/root/children/11/children/0","type":"text","loc":{"start":1541,"end":1563,"line":{"s":64,"e":64,"code":["## collabora for markdown"]},"column":{"s":3,"e":25}},"dim":["","heading.11","text.0"],"code":"collabora for markdown"},{"id":"/root/children/12","type":"list","loc":{"start":1565,"end":1881,"line":{"s":66,"e":68,"code":["- [Etherpad](https://etherpad.org/)","- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)","- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"]},"column":{"s":0,"e":73}},"dim":["","list.12"],"code":"- [Etherpad](https://etherpad.org/)\n- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)\n- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)","symbName":"list","symbRange":[1883,1895],"symbRangeL":[66,71],"outerCode":"- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)\n- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)\n\n### hedgedoc","outerHtml":"<ul><li><a href=\"https://github.com/Docmost/docmost\">GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub</a></li><li><a href=\"https://www.getoutline.com/\">Outline – Team knowledge base &amp; wiki</a></li></ul>\n\n<h3>hedgedoc</h3>"},{"id":"/root/children/12/children/0","type":"listItem","loc":{"start":1565,"end":1600,"line":{"s":66,"e":66,"code":["- [Etherpad](https://etherpad.org/)"]},"column":{"s":0,"e":35}},"dim":["","list.12","listItem.0"],"code":"- [Etherpad](https://etherpad.org/)"},{"id":"/root/children/12/children/0/children/0","type":"paragraph","loc":{"start":1567,"end":1600,"line":{"s":66,"e":66,"code":["- [Etherpad](https://etherpad.org/)"]},"column":{"s":2,"e":35}},"dim":["","list.12","listItem.0","paragraph.0"],"code":"[Etherpad](https://etherpad.org/)"},{"id":"/root/children/12/children/0/children/0/children/0","type":"link","loc":{"start":1567,"end":1600,"line":{"s":66,"e":66,"code":["- [Etherpad](https://etherpad.org/)"]},"column":{"s":2,"e":35}},"dim":["","list.12","listItem.0","paragraph.0","link.0"],"code":"[Etherpad](https://etherpad.org/)","symbName":"link","symbRange":[null,null],"symbRangeL":[66,66],"outerCode":"[Etherpad](https://etherpad.org/)","outerHtml":"<p><a href=\"https://etherpad.org/\">Etherpad</a></p>"},{"id":"/root/children/12/children/0/children/0/children/0/children/0","type":"text","loc":{"start":1568,"end":1576,"line":{"s":66,"e":66,"code":["- [Etherpad](https://etherpad.org/)"]},"column":{"s":3,"e":11}},"dim":["","list.12","listItem.0","paragraph.0","link.0","text.0"],"code":"Etherpad"},{"id":"/root/children/12/children/1","type":"listItem","loc":{"start":1601,"end":1807,"line":{"s":67,"e":67,"code":["- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)"]},"column":{"s":0,"e":206}},"dim":["","list.12","listItem.1"],"code":"- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)"},{"id":"/root/children/12/children/1/children/0","type":"paragraph","loc":{"start":1603,"end":1807,"line":{"s":67,"e":67,"code":["- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)"]},"column":{"s":2,"e":206}},"dim":["","list.12","listItem.1","paragraph.0"],"code":"[GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)"},{"id":"/root/children/12/children/1/children/0/children/0","type":"link","loc":{"start":1603,"end":1807,"line":{"s":67,"e":67,"code":["- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)"]},"column":{"s":2,"e":206}},"dim":["","list.12","listItem.1","paragraph.0","link.0"],"code":"[GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)","symbName":"link","symbRange":[null,null],"symbRangeL":[67,67],"outerCode":"[GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)","outerHtml":"<p><a href=\"https://github.com/Docmost/docmost\">GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub</a></p>"},{"id":"/root/children/12/children/1/children/0/children/0/children/0","type":"text","loc":{"start":1604,"end":1770,"line":{"s":67,"e":67,"code":["- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)"]},"column":{"s":3,"e":169}},"dim":["","list.12","listItem.1","paragraph.0","link.0","text.0"],"code":"GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub"},{"id":"/root/children/12/children/2","type":"listItem","loc":{"start":1808,"end":1881,"line":{"s":68,"e":68,"code":["- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"]},"column":{"s":0,"e":73}},"dim":["","list.12","listItem.2"],"code":"- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"},{"id":"/root/children/12/children/2/children/0","type":"paragraph","loc":{"start":1810,"end":1881,"line":{"s":68,"e":68,"code":["- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"]},"column":{"s":2,"e":73}},"dim":["","list.12","listItem.2","paragraph.0"],"code":"[Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"},{"id":"/root/children/12/children/2/children/0/children/0","type":"link","loc":{"start":1810,"end":1881,"line":{"s":68,"e":68,"code":["- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"]},"column":{"s":2,"e":73}},"dim":["","list.12","listItem.2","paragraph.0","link.0"],"code":"[Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)","symbName":"link","symbRange":[null,null],"symbRangeL":[68,68],"outerCode":"[Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)","outerHtml":"<p><a href=\"https://www.getoutline.com/\">Outline – Team knowledge base &amp; wiki</a></p>"},{"id":"/root/children/12/children/2/children/0/children/0/children/0","type":"text","loc":{"start":1811,"end":1851,"line":{"s":68,"e":68,"code":["- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)"]},"column":{"s":3,"e":43}},"dim":["","list.12","listItem.2","paragraph.0","link.0","text.0"],"code":"Outline – Team knowledge base &amp; wiki"},{"id":"/root/children/13","type":"heading","loc":{"start":1883,"end":1895,"line":{"s":70,"e":70,"code":["### hedgedoc"]},"column":{"s":0,"e":12}},"dim":["","heading.13"],"code":"### hedgedoc","symbName":"heading","symbRange":[1897,2627],"symbRangeL":[70,98],"outerCode":"\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- HedgeDoc = flat key-value store of Markdown documents\n  - its DB can be hijacked\n- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)\n- prompt:\n\n```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)\n\n### collabora for markdown\n\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- prompt:\n\n```\n\n- how to embed in a website?\n- Use polling + incremental APIs (standard approach)\n  - see hedgedoc-to-files.js and hedgedoc-from-files.js","outerHtml":"\n<ul><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>HedgeDoc = flat key-value store of Markdown documents<ul><li>its DB can be hijacked</li></ul></li><li>api: [API - HedgeDoc](<<a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a>dev/api/>)</li><li>prompt:</li></ul>\n\n<p>```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)</p>\n\n<h3>collabora for markdown</h3>\n\n<ul><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>prompt:</li></ul>\n\n<p>```</p>\n\n<ul><li>how to embed in a website?</li><li>Use polling + incremental APIs (standard approach)<ul><li>see hedgedoc-to-files.js and hedgedoc-from-files.js</li></ul></li></ul>"},{"id":"/root/children/13/children/0","type":"text","loc":{"start":1887,"end":1895,"line":{"s":70,"e":70,"code":["### hedgedoc"]},"column":{"s":4,"e":12}},"dim":["","heading.13","text.0"],"code":"hedgedoc"},{"id":"/root/children/14","type":"list","loc":{"start":1897,"end":2190,"line":{"s":72,"e":78,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)","- [HedgeDoc](https://docs.hedgedoc.org/)","- !!! [HedgeDoc](https://docs.hedgedoc.org/)","- HedgeDoc = flat key-value store of Markdown documents","  - its DB can be hijacked","- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)","- prompt:"]},"column":{"s":0,"e":9}},"dim":["","list.14"],"code":"- [HedgeDoc](https://docs.hedgedoc.org/)\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- HedgeDoc = flat key-value store of Markdown documents\n  - its DB can be hijacked\n- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)\n- prompt:","symbName":"list","symbRange":[2192,2488],"symbRangeL":[72,94],"outerCode":"- [HedgeDoc](https://docs.hedgedoc.org/)\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- HedgeDoc = flat key-value store of Markdown documents\n  - its DB can be hijacked\n- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)\n- prompt:\n\n```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)\n\n### collabora for markdown\n\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- prompt:\n\n```","outerHtml":"<ul><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>HedgeDoc = flat key-value store of Markdown documents<ul><li>its DB can be hijacked</li></ul></li><li>api: [API - HedgeDoc](<<a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a>dev/api/>)</li><li>prompt:</li></ul>\n\n<p>```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)</p>\n\n<h3>collabora for markdown</h3>\n\n<ul><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>prompt:</li></ul>\n\n<p>```</p>"},{"id":"/root/children/14/children/0","type":"listItem","loc":{"start":1897,"end":1937,"line":{"s":72,"e":72,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":0,"e":40}},"dim":["","list.14","listItem.0"],"code":"- [HedgeDoc](https://docs.hedgedoc.org/)"},{"id":"/root/children/14/children/0/children/0","type":"paragraph","loc":{"start":1899,"end":1937,"line":{"s":72,"e":72,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":2,"e":40}},"dim":["","list.14","listItem.0","paragraph.0"],"code":"[HedgeDoc](https://docs.hedgedoc.org/)"},{"id":"/root/children/14/children/0/children/0/children/0","type":"link","loc":{"start":1899,"end":1937,"line":{"s":72,"e":72,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":2,"e":40}},"dim":["","list.14","listItem.0","paragraph.0","link.0"],"code":"[HedgeDoc](https://docs.hedgedoc.org/)","symbName":"link","symbRange":[null,null],"symbRangeL":[72,72],"outerCode":"[HedgeDoc](https://docs.hedgedoc.org/)","outerHtml":"<p><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></p>"},{"id":"/root/children/14/children/0/children/0/children/0/children/0","type":"text","loc":{"start":1900,"end":1908,"line":{"s":72,"e":72,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":3,"e":11}},"dim":["","list.14","listItem.0","paragraph.0","link.0","text.0"],"code":"HedgeDoc"},{"id":"/root/children/14/children/1","type":"listItem","loc":{"start":1938,"end":1978,"line":{"s":73,"e":73,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":0,"e":40}},"dim":["","list.14","listItem.1"],"code":"- [HedgeDoc](https://docs.hedgedoc.org/)"},{"id":"/root/children/14/children/1/children/0","type":"paragraph","loc":{"start":1940,"end":1978,"line":{"s":73,"e":73,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":2,"e":40}},"dim":["","list.14","listItem.1","paragraph.0"],"code":"[HedgeDoc](https://docs.hedgedoc.org/)"},{"id":"/root/children/14/children/1/children/0/children/0","type":"link","loc":{"start":1940,"end":1978,"line":{"s":73,"e":73,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":2,"e":40}},"dim":["","list.14","listItem.1","paragraph.0","link.0"],"code":"[HedgeDoc](https://docs.hedgedoc.org/)","symbName":"link","symbRange":[null,null],"symbRangeL":[73,73],"outerCode":"[HedgeDoc](https://docs.hedgedoc.org/)","outerHtml":"<p><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></p>"},{"id":"/root/children/14/children/1/children/0/children/0/children/0","type":"text","loc":{"start":1941,"end":1949,"line":{"s":73,"e":73,"code":["- [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":3,"e":11}},"dim":["","list.14","listItem.1","paragraph.0","link.0","text.0"],"code":"HedgeDoc"},{"id":"/root/children/14/children/2","type":"listItem","loc":{"start":1979,"end":2023,"line":{"s":74,"e":74,"code":["- !!! [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":0,"e":44}},"dim":["","list.14","listItem.2"],"code":"- !!! [HedgeDoc](https://docs.hedgedoc.org/)"},{"id":"/root/children/14/children/2/children/0","type":"paragraph","loc":{"start":1981,"end":2023,"line":{"s":74,"e":74,"code":["- !!! [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":2,"e":44}},"dim":["","list.14","listItem.2","paragraph.0"],"code":"!!! [HedgeDoc](https://docs.hedgedoc.org/)"},{"id":"/root/children/14/children/2/children/0/children/0","type":"text","loc":{"start":1981,"end":1985,"line":{"s":74,"e":74,"code":["- !!! [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":2,"e":6}},"dim":["","list.14","listItem.2","paragraph.0","text.0"],"code":"!!! "},{"id":"/root/children/14/children/2/children/0/children/1","type":"link","loc":{"start":1985,"end":2023,"line":{"s":74,"e":74,"code":["- !!! [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":6,"e":44}},"dim":["","list.14","listItem.2","paragraph.0","link.1"],"code":"[HedgeDoc](https://docs.hedgedoc.org/)","symbName":"link","symbRange":[null,null],"symbRangeL":[74,74],"outerCode":"[HedgeDoc](https://docs.hedgedoc.org/)","outerHtml":"<p><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></p>"},{"id":"/root/children/14/children/2/children/0/children/1/children/0","type":"text","loc":{"start":1986,"end":1994,"line":{"s":74,"e":74,"code":["- !!! [HedgeDoc](https://docs.hedgedoc.org/)"]},"column":{"s":7,"e":15}},"dim":["","list.14","listItem.2","paragraph.0","link.1","text.0"],"code":"HedgeDoc"},{"id":"/root/children/14/children/3","type":"listItem","loc":{"start":2024,"end":2106,"line":{"s":75,"e":76,"code":["- HedgeDoc = flat key-value store of Markdown documents","  - its DB can be hijacked"]},"column":{"s":0,"e":26}},"dim":["","list.14","listItem.3"],"code":"- HedgeDoc = flat key-value store of Markdown documents\n  - its DB can be hijacked"},{"id":"/root/children/14/children/3/children/0","type":"paragraph","loc":{"start":2026,"end":2079,"line":{"s":75,"e":75,"code":["- HedgeDoc = flat key-value store of Markdown documents"]},"column":{"s":2,"e":55}},"dim":["","list.14","listItem.3","paragraph.0"],"code":"HedgeDoc = flat key-value store of Markdown documents"},{"id":"/root/children/14/children/3/children/0/children/0","type":"text","loc":{"start":2026,"end":2079,"line":{"s":75,"e":75,"code":["- HedgeDoc = flat key-value store of Markdown documents"]},"column":{"s":2,"e":55}},"dim":["","list.14","listItem.3","paragraph.0","text.0"],"code":"HedgeDoc = flat key-value store of Markdown documents"},{"id":"/root/children/14/children/3/children/1","type":"list","loc":{"start":2082,"end":2106,"line":{"s":76,"e":76,"code":["  - its DB can be hijacked"]},"column":{"s":2,"e":26}},"dim":["","list.14","listItem.3","list.1"],"code":"- its DB can be hijacked","symbName":"list","symbRange":[null,null],"symbRangeL":[76,76],"outerCode":"","outerHtml":""},{"id":"/root/children/14/children/3/children/1/children/0","type":"listItem","loc":{"start":2082,"end":2106,"line":{"s":76,"e":76,"code":["  - its DB can be hijacked"]},"column":{"s":2,"e":26}},"dim":["","list.14","listItem.3","list.1","listItem.0"],"code":"- its DB can be hijacked"},{"id":"/root/children/14/children/3/children/1/children/0/children/0","type":"paragraph","loc":{"start":2084,"end":2106,"line":{"s":76,"e":76,"code":["  - its DB can be hijacked"]},"column":{"s":4,"e":26}},"dim":["","list.14","listItem.3","list.1","listItem.0","paragraph.0"],"code":"its DB can be hijacked"},{"id":"/root/children/14/children/3/children/1/children/0/children/0/children/0","type":"text","loc":{"start":2084,"end":2106,"line":{"s":76,"e":76,"code":["  - its DB can be hijacked"]},"column":{"s":4,"e":26}},"dim":["","list.14","listItem.3","list.1","listItem.0","paragraph.0","text.0"],"code":"its DB can be hijacked"},{"id":"/root/children/14/children/4","type":"listItem","loc":{"start":2107,"end":2180,"line":{"s":77,"e":77,"code":["- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"]},"column":{"s":0,"e":73}},"dim":["","list.14","listItem.4"],"code":"- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"},{"id":"/root/children/14/children/4/children/0","type":"paragraph","loc":{"start":2109,"end":2180,"line":{"s":77,"e":77,"code":["- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"]},"column":{"s":2,"e":73}},"dim":["","list.14","listItem.4","paragraph.0"],"code":"api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"},{"id":"/root/children/14/children/4/children/0/children/0","type":"text","loc":{"start":2109,"end":2114,"line":{"s":77,"e":77,"code":["- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"]},"column":{"s":2,"e":7}},"dim":["","list.14","listItem.4","paragraph.0","text.0"],"code":"api: "},{"id":"/root/children/14/children/4/children/0/children/1","type":"link","loc":{"start":2114,"end":2180,"line":{"s":77,"e":77,"code":["- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"]},"column":{"s":7,"e":73}},"dim":["","list.14","listItem.4","paragraph.0","link.1"],"code":"[API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)","symbName":"link","symbRange":[null,null],"symbRangeL":[77,77],"outerCode":"[API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)","outerHtml":"<p>[API - HedgeDoc](<<a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a>dev/api/>)</p>"},{"id":"/root/children/14/children/4/children/0/children/1/children/0","type":"text","loc":{"start":2115,"end":2129,"line":{"s":77,"e":77,"code":["- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)"]},"column":{"s":8,"e":22}},"dim":["","list.14","listItem.4","paragraph.0","link.1","text.0"],"code":"API - HedgeDoc"},{"id":"/root/children/14/children/5","type":"listItem","loc":{"start":2181,"end":2190,"line":{"s":78,"e":78,"code":["- prompt:"]},"column":{"s":0,"e":9}},"dim":["","list.14","listItem.5"],"code":"- prompt:"},{"id":"/root/children/14/children/5/children/0","type":"paragraph","loc":{"start":2183,"end":2190,"line":{"s":78,"e":78,"code":["- prompt:"]},"column":{"s":2,"e":9}},"dim":["","list.14","listItem.5","paragraph.0"],"code":"prompt:"},{"id":"/root/children/14/children/5/children/0/children/0","type":"text","loc":{"start":2183,"end":2190,"line":{"s":78,"e":78,"code":["- prompt:"]},"column":{"s":2,"e":9}},"dim":["","list.14","listItem.5","paragraph.0","text.0"],"code":"prompt:"},{"id":"/root/children/15","type":"code","loc":{"start":2192,"end":2488,"line":{"s":80,"e":93,"code":["```","Collaborative Markdown editors (closest to Collabora use case)","⭐ HedgeDoc","Real-time collaboration (like Google Docs)","Native Markdown editing","TOC, headings, anchors all first-class","Easy self-host (Docker)","","### collabora for markdown","","- !!! [HedgeDoc](https://docs.hedgedoc.org/)","- prompt:","","```"]},"column":{"s":0,"e":3}},"dim":["","code.15"],"code":"```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)\n\n### collabora for markdown\n\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- prompt:\n\n```","symbName":"code","symbRange":[2490,3091],"symbRangeL":[null,104],"outerCode":";{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }\n\n# technology\n\n- aspect of technology choice\n- what can easilly run on linode?\n- what software is used/needed at this stage?\n\n- duckdb\n- imagick\n- sparql\n- bash\n- nodejs\n  - databox-libs: ast-lake\n- bc (calc)\n- rsvg-convert\n- towebp\n- graphviz\n- inkscape?\n- TODO ...\n- webhook\n  - [ ] do we really need webhook? VS rabbitMq\n- rabbitMq\n  - wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin\n- redis\n\n## web scrape-ing\n\n- - https://crawlee.dev/\n- amerkurev/scrapper\n  - pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"\n- https://apify.com/store/categories/seo-tools\n  - https://apify.com/maged120/seobility-seo-checker\n- https://github.com/gocolly/colly\n- https://github.com/heinrichb/scrapey-cli/\n- see databox-libs: fetchish\n-\n\n## redis + ?\n\n- https://github.com/RediSearch/RediSearch\n- https://docs.keydb.dev/\n- https://www.dragonflydb.io/\n- https://github.com/goodform/awesome-redis-module\n- see duck.ai_redis\\*.mdd\n- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/\n  - https://github.com/emacstheviking/gnuprolog-redisclient\n\n## rabbit-mq\n\n- suoper\n-\n\n## LLM\n\n- https://www.jan.ai/\n- https://localai.io/\n- see llm-tagger... shit\n- https://www.youtube.com/watch?v=0XLRZavOjSs\n\n## collabora for markdown\n\n- [Etherpad](https://etherpad.org/)\n- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)\n- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)\n\n### hedgedoc\n\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- HedgeDoc = flat key-value store of Markdown documents\n  - its DB can be hijacked\n- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)\n- prompt:\n\n```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)\n\n### collabora for markdown\n\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- prompt:\n\n```\n\n- how to embed in a website?\n- Use polling + incremental APIs (standard approach)\n  - see hedgedoc-to-files.js and hedgedoc-from-files.js\n\n#### collabora ast-nav?\n\nCollabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.\n\n##### Option 2: Search → jump","outerHtml":"<p>;{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }</p>\n\n<h1>technology</h1>\n\n<ul><li>aspect of technology choice</li><li>what can easilly run on linode?</li><li>what software is used/needed at this stage?</li></ul>\n\n<ul><li>duckdb</li><li>imagick</li><li>sparql</li><li>bash</li><li>nodejs<ul><li>databox-libs: ast-lake</li></ul></li><li>bc (calc)</li><li>rsvg-convert</li><li>towebp</li><li>graphviz</li><li>inkscape?</li><li>TODO ...</li><li>webhook<ul><li>[ ] do we really need webhook? VS rabbitMq</li></ul></li><li>rabbitMq<ul><li>wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin</li></ul></li><li>redis</li></ul>\n\n<h2>web scrape-ing</h2>\n\n<ul><li>- https://crawlee.dev/</li><li>amerkurev/scrapper<ul><li>pecka!</li><li>curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"</li><li>curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"</li></ul></li><li>https://apify.com/store/categories/seo-tools<ul><li>https://apify.com/maged120/seobility-seo-checker</li></ul></li><li>https://github.com/gocolly/colly</li><li>https://github.com/heinrichb/scrapey-cli/</li><li>see databox-libs: fetchish\n-</li></ul>\n\n<h2>redis + ?</h2>\n\n<ul><li>https://github.com/RediSearch/RediSearch</li><li>https://docs.keydb.dev/</li><li>https://www.dragonflydb.io/</li><li>https://github.com/goodform/awesome-redis-module</li><li>see duck.ai_redis*.mdd</li><li>ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/<ul><li>https://github.com/emacstheviking/gnuprolog-redisclient</li></ul></li></ul>\n\n<h2>rabbit-mq</h2>\n\n<ul><li>suoper\n-</li></ul>\n\n<h2>LLM</h2>\n\n<ul><li>https://www.jan.ai/</li><li>https://localai.io/</li><li>see llm-tagger... shit</li><li>https://www.youtube.com/watch?v=0XLRZavOjSs</li></ul>\n\n<h2>collabora for markdown</h2>\n\n<ul><li><a href=\"https://etherpad.org/\">Etherpad</a></li><li><a href=\"https://github.com/Docmost/docmost\">GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub</a></li><li><a href=\"https://www.getoutline.com/\">Outline – Team knowledge base &amp; wiki</a></li></ul>\n\n<h3>hedgedoc</h3>\n\n<ul><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>HedgeDoc = flat key-value store of Markdown documents<ul><li>its DB can be hijacked</li></ul></li><li>api: [API - HedgeDoc](<<a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a>dev/api/>)</li><li>prompt:</li></ul>\n\n<p>```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)</p>\n\n<h3>collabora for markdown</h3>\n\n<ul><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>prompt:</li></ul>\n\n<p>```</p>\n\n<ul><li>how to embed in a website?</li><li>Use polling + incremental APIs (standard approach)<ul><li>see hedgedoc-to-files.js and hedgedoc-from-files.js</li></ul></li></ul>\n\n<h4>collabora ast-nav?</h4>\n\n<p>Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.</p>\n\n<h5>Option 2: Search → jump</h5>"},{"id":"/root/children/16","type":"list","loc":{"start":2490,"end":2627,"line":{"s":95,"e":97,"code":["- how to embed in a website?","- Use polling + incremental APIs (standard approach)","  - see hedgedoc-to-files.js and hedgedoc-from-files.js"]},"column":{"s":0,"e":55}},"dim":["","list.16"],"code":"- how to embed in a website?\n- Use polling + incremental APIs (standard approach)\n  - see hedgedoc-to-files.js and hedgedoc-from-files.js","symbName":"list","symbRange":[2629,3308],"symbRangeL":[95,120],"outerCode":"- Use polling + incremental APIs (standard approach)\n  - see hedgedoc-to-files.js and hedgedoc-from-files.js\n\n#### collabora ast-nav?\n\nCollabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.\n\n##### Option 2: Search → jump\n\n```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```\n\n# database","outerHtml":"<ul><li>Use polling + incremental APIs (standard approach)<ul><li>see hedgedoc-to-files.js and hedgedoc-from-files.js</li></ul></li></ul>\n\n<h4>collabora ast-nav?</h4>\n\n<p>Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.</p>\n\n<h5>Option 2: Search → jump</h5>\n\n<p>```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```</p>\n\n<h1>database</h1>"},{"id":"/root/children/16/children/0","type":"listItem","loc":{"start":2490,"end":2518,"line":{"s":95,"e":95,"code":["- how to embed in a website?"]},"column":{"s":0,"e":28}},"dim":["","list.16","listItem.0"],"code":"- how to embed in a website?"},{"id":"/root/children/16/children/0/children/0","type":"paragraph","loc":{"start":2492,"end":2518,"line":{"s":95,"e":95,"code":["- how to embed in a website?"]},"column":{"s":2,"e":28}},"dim":["","list.16","listItem.0","paragraph.0"],"code":"how to embed in a website?"},{"id":"/root/children/16/children/0/children/0/children/0","type":"text","loc":{"start":2492,"end":2518,"line":{"s":95,"e":95,"code":["- how to embed in a website?"]},"column":{"s":2,"e":28}},"dim":["","list.16","listItem.0","paragraph.0","text.0"],"code":"how to embed in a website?"},{"id":"/root/children/16/children/1","type":"listItem","loc":{"start":2519,"end":2627,"line":{"s":96,"e":97,"code":["- Use polling + incremental APIs (standard approach)","  - see hedgedoc-to-files.js and hedgedoc-from-files.js"]},"column":{"s":0,"e":55}},"dim":["","list.16","listItem.1"],"code":"- Use polling + incremental APIs (standard approach)\n  - see hedgedoc-to-files.js and hedgedoc-from-files.js"},{"id":"/root/children/16/children/1/children/0","type":"paragraph","loc":{"start":2521,"end":2571,"line":{"s":96,"e":96,"code":["- Use polling + incremental APIs (standard approach)"]},"column":{"s":2,"e":52}},"dim":["","list.16","listItem.1","paragraph.0"],"code":"Use polling + incremental APIs (standard approach)"},{"id":"/root/children/16/children/1/children/0/children/0","type":"text","loc":{"start":2521,"end":2571,"line":{"s":96,"e":96,"code":["- Use polling + incremental APIs (standard approach)"]},"column":{"s":2,"e":52}},"dim":["","list.16","listItem.1","paragraph.0","text.0"],"code":"Use polling + incremental APIs (standard approach)"},{"id":"/root/children/16/children/1/children/1","type":"list","loc":{"start":2574,"end":2627,"line":{"s":97,"e":97,"code":["  - see hedgedoc-to-files.js and hedgedoc-from-files.js"]},"column":{"s":2,"e":55}},"dim":["","list.16","listItem.1","list.1"],"code":"- see hedgedoc-to-files.js and hedgedoc-from-files.js","symbName":"list","symbRange":[null,null],"symbRangeL":[97,97],"outerCode":"","outerHtml":""},{"id":"/root/children/16/children/1/children/1/children/0","type":"listItem","loc":{"start":2574,"end":2627,"line":{"s":97,"e":97,"code":["  - see hedgedoc-to-files.js and hedgedoc-from-files.js"]},"column":{"s":2,"e":55}},"dim":["","list.16","listItem.1","list.1","listItem.0"],"code":"- see hedgedoc-to-files.js and hedgedoc-from-files.js"},{"id":"/root/children/16/children/1/children/1/children/0/children/0","type":"paragraph","loc":{"start":2576,"end":2627,"line":{"s":97,"e":97,"code":["  - see hedgedoc-to-files.js and hedgedoc-from-files.js"]},"column":{"s":4,"e":55}},"dim":["","list.16","listItem.1","list.1","listItem.0","paragraph.0"],"code":"see hedgedoc-to-files.js and hedgedoc-from-files.js"},{"id":"/root/children/16/children/1/children/1/children/0/children/0/children/0","type":"text","loc":{"start":2576,"end":2627,"line":{"s":97,"e":97,"code":["  - see hedgedoc-to-files.js and hedgedoc-from-files.js"]},"column":{"s":4,"e":55}},"dim":["","list.16","listItem.1","list.1","listItem.0","paragraph.0","text.0"],"code":"see hedgedoc-to-files.js and hedgedoc-from-files.js"},{"id":"/root/children/17","type":"heading","loc":{"start":2629,"end":2652,"line":{"s":99,"e":99,"code":["#### collabora ast-nav?"]},"column":{"s":0,"e":23}},"dim":["","heading.17"],"code":"#### collabora ast-nav?","symbName":"heading","symbRange":[2654,3060],"symbRangeL":[99,102],"outerCode":"\nCollabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.","outerHtml":"\n<p>Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.</p>"},{"id":"/root/children/17/children/0","type":"text","loc":{"start":2634,"end":2652,"line":{"s":99,"e":99,"code":["#### collabora ast-nav?"]},"column":{"s":5,"e":23}},"dim":["","heading.17","text.0"],"code":"collabora ast-nav?"},{"id":"/root/children/18","type":"paragraph","loc":{"start":2654,"end":3060,"line":{"s":101,"e":101,"code":["Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document."]},"column":{"s":0,"e":406}},"dim":["","paragraph.18"],"code":"Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document."},{"id":"/root/children/18/children/0","type":"text","loc":{"start":2654,"end":3060,"line":{"s":101,"e":101,"code":["Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document."]},"column":{"s":0,"e":406}},"dim":["","paragraph.18","text.0"],"code":"Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document."},{"id":"/root/children/19","type":"heading","loc":{"start":3062,"end":3091,"line":{"s":103,"e":103,"code":["##### Option 2: Search → jump"]},"column":{"s":0,"e":29}},"dim":["","heading.19"],"code":"##### Option 2: Search → jump","symbName":"heading","symbRange":[3093,3296],"symbRangeL":[103,118],"outerCode":"\n```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```","outerHtml":"\n<p>```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```</p>"},{"id":"/root/children/19/children/0","type":"text","loc":{"start":3068,"end":3091,"line":{"s":103,"e":103,"code":["##### Option 2: Search → jump"]},"column":{"s":6,"e":29}},"dim":["","heading.19","text.0"],"code":"Option 2: Search → jump"},{"id":"/root/children/20","type":"code","loc":{"start":3093,"end":3296,"line":{"s":105,"e":117,"code":["```js","iframe.contentWindow.postMessage(","  JSON.stringify({","    MessageId: \"Search\",","    SearchItem: {","      SearchString: \"My Heading\",","      Backward: false,","      Command: 0,","    },","  }),","  \"*\",",");","```"]},"column":{"s":0,"e":3}},"dim":["","code.20"],"code":"```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```","symbName":"code","symbRange":[3298,4149],"symbRangeL":[null,152],"outerCode":";{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }\n\n# technology\n\n- aspect of technology choice\n- what can easilly run on linode?\n- what software is used/needed at this stage?\n\n- duckdb\n- imagick\n- sparql\n- bash\n- nodejs\n  - databox-libs: ast-lake\n- bc (calc)\n- rsvg-convert\n- towebp\n- graphviz\n- inkscape?\n- TODO ...\n- webhook\n  - [ ] do we really need webhook? VS rabbitMq\n- rabbitMq\n  - wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin\n- redis\n\n## web scrape-ing\n\n- - https://crawlee.dev/\n- amerkurev/scrapper\n  - pecka!\n  - curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"\n  - curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"\n- https://apify.com/store/categories/seo-tools\n  - https://apify.com/maged120/seobility-seo-checker\n- https://github.com/gocolly/colly\n- https://github.com/heinrichb/scrapey-cli/\n- see databox-libs: fetchish\n-\n\n## redis + ?\n\n- https://github.com/RediSearch/RediSearch\n- https://docs.keydb.dev/\n- https://www.dragonflydb.io/\n- https://github.com/goodform/awesome-redis-module\n- see duck.ai_redis\\*.mdd\n- ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/\n  - https://github.com/emacstheviking/gnuprolog-redisclient\n\n## rabbit-mq\n\n- suoper\n-\n\n## LLM\n\n- https://www.jan.ai/\n- https://localai.io/\n- see llm-tagger... shit\n- https://www.youtube.com/watch?v=0XLRZavOjSs\n\n## collabora for markdown\n\n- [Etherpad](https://etherpad.org/)\n- [GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub](https://github.com/Docmost/docmost)\n- [Outline – Team knowledge base &amp; wiki](https://www.getoutline.com/)\n\n### hedgedoc\n\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- [HedgeDoc](https://docs.hedgedoc.org/)\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- HedgeDoc = flat key-value store of Markdown documents\n  - its DB can be hijacked\n- api: [API - HedgeDoc](<[HedgeDoc](https://docs.hedgedoc.org/)dev/api/>)\n- prompt:\n\n```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)\n\n### collabora for markdown\n\n- !!! [HedgeDoc](https://docs.hedgedoc.org/)\n- prompt:\n\n```\n\n- how to embed in a website?\n- Use polling + incremental APIs (standard approach)\n  - see hedgedoc-to-files.js and hedgedoc-from-files.js\n\n#### collabora ast-nav?\n\nCollabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.\n\n##### Option 2: Search → jump\n\n```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```\n\n# database\n\n- sqlite alternative: https://turso.tech/\n- todo sqlite-tricks\n\n## sqlite tricks\n\n- https://github.com/npiesco/absurder-sql\n- https://github.com/sqlpage/SQLPage\n- https://github.com/nalgeon/sqlime?tab=readme-ov-file\n- https://github.com/nalgeon/sqlean\n- https://datasette.io/\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n\n### JSON to sqlite\n\n- datasette\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n  - sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1\n\n- LanceDB + DuckDB + SQLite is a killer combo\n  - https://www.npmjs.com/package/@lancedb/lancedb\n\n### admins\n\n- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com\n- SQLite Web?\n- https://dbeaver.io/download/\n- https://www.beekeeperstudio.io/\n- https://github.com/superfly/litefs\n- ./pocketbase serve\n- npx dbgate","outerHtml":"<p>;{ engine: dot rankdir: BT useGvPack: true clusterize: true intention: semi nodeNomen: absolute applyCss: true }</p>\n\n<h1>technology</h1>\n\n<ul><li>aspect of technology choice</li><li>what can easilly run on linode?</li><li>what software is used/needed at this stage?</li></ul>\n\n<ul><li>duckdb</li><li>imagick</li><li>sparql</li><li>bash</li><li>nodejs<ul><li>databox-libs: ast-lake</li></ul></li><li>bc (calc)</li><li>rsvg-convert</li><li>towebp</li><li>graphviz</li><li>inkscape?</li><li>TODO ...</li><li>webhook<ul><li>[ ] do we really need webhook? VS rabbitMq</li></ul></li><li>rabbitMq<ul><li>wget\n    https://raw.githubusercontent.com/rabbitmq/rabbitmq-management/v3.7.8/bin/rabbitmqadmin</li></ul></li><li>redis</li></ul>\n\n<h2>web scrape-ing</h2>\n\n<ul><li>- https://crawlee.dev/</li><li>amerkurev/scrapper<ul><li>pecka!</li><li>curl -X GET \"localhost:3000/api/article?url=https://en.wikipedia.org/wiki/web_scraping\"</li><li>curl -X GET \"localhost:3000/api/article?cache=no&url=https://blog.sme.sk/richter/politika/povod-pellegriniho-milionov\"</li></ul></li><li>https://apify.com/store/categories/seo-tools<ul><li>https://apify.com/maged120/seobility-seo-checker</li></ul></li><li>https://github.com/gocolly/colly</li><li>https://github.com/heinrichb/scrapey-cli/</li><li>see databox-libs: fetchish\n-</li></ul>\n\n<h2>redis + ?</h2>\n\n<ul><li>https://github.com/RediSearch/RediSearch</li><li>https://docs.keydb.dev/</li><li>https://www.dragonflydb.io/</li><li>https://github.com/goodform/awesome-redis-module</li><li>see duck.ai_redis*.mdd</li><li>ORM for Redis: https://redis.io/docs/latest/integrate/redisom-for-node-js/<ul><li>https://github.com/emacstheviking/gnuprolog-redisclient</li></ul></li></ul>\n\n<h2>rabbit-mq</h2>\n\n<ul><li>suoper\n-</li></ul>\n\n<h2>LLM</h2>\n\n<ul><li>https://www.jan.ai/</li><li>https://localai.io/</li><li>see llm-tagger... shit</li><li>https://www.youtube.com/watch?v=0XLRZavOjSs</li></ul>\n\n<h2>collabora for markdown</h2>\n\n<ul><li><a href=\"https://etherpad.org/\">Etherpad</a></li><li><a href=\"https://github.com/Docmost/docmost\">GitHub - docmost/docmost: Docmost is an open-source collaborative wiki and documentation software. It is an open-source alternative to Confluence and Notion. · GitHub</a></li><li><a href=\"https://www.getoutline.com/\">Outline – Team knowledge base &amp; wiki</a></li></ul>\n\n<h3>hedgedoc</h3>\n\n<ul><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li><a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>HedgeDoc = flat key-value store of Markdown documents<ul><li>its DB can be hijacked</li></ul></li><li>api: [API - HedgeDoc](<<a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a>dev/api/>)</li><li>prompt:</li></ul>\n\n<p>```\nCollaborative Markdown editors (closest to Collabora use case)\n⭐ HedgeDoc\nReal-time collaboration (like Google Docs)\nNative Markdown editing\nTOC, headings, anchors all first-class\nEasy self-host (Docker)</p>\n\n<h3>collabora for markdown</h3>\n\n<ul><li>!!! <a href=\"https://docs.hedgedoc.org/\">HedgeDoc</a></li><li>prompt:</li></ul>\n\n<p>```</p>\n\n<ul><li>how to embed in a website?</li><li>Use polling + incremental APIs (standard approach)<ul><li>see hedgedoc-to-files.js and hedgedoc-from-files.js</li></ul></li></ul>\n\n<h4>collabora ast-nav?</h4>\n\n<p>Collabora Online WOPI lacks an API to move the cursor directly to headings or TOC entries. The practical workaround is using the postMessage search command to locate heading text and jump there. For reliable positioning, preprocess documents to insert unique bookmarks or hidden markers at headings, then search for those identifiers to achieve precise, deterministic cursor navigation within the document.</p>\n\n<h5>Option 2: Search → jump</h5>\n\n<p>```js\niframe.contentWindow.postMessage(\n  JSON.stringify({\n    MessageId: \"Search\",\n    SearchItem: {\n      SearchString: \"My Heading\",\n      Backward: false,\n      Command: 0,\n    },\n  }),\n  \"*\",\n);\n```</p>\n\n<h1>database</h1>\n\n<ul><li>sqlite alternative: https://turso.tech/</li><li>todo sqlite-tricks</li></ul>\n\n<h2>sqlite tricks</h2>\n\n<ul><li>https://github.com/npiesco/absurder-sql</li><li>https://github.com/sqlpage/SQLPage</li><li>https://github.com/nalgeon/sqlime?tab=readme-ov-file</li><li>https://github.com/nalgeon/sqlean</li><li>https://datasette.io/<ul><li>https://www.youtube.com/watch?v=wc8FBhQtdsA</li></ul></li></ul>\n\n<h3>JSON to sqlite</h3>\n\n<ul><li>datasette<ul><li>https://www.youtube.com/watch?v=wc8FBhQtdsA</li><li>sqlite-utils (Simon Willison)<ul><li>sqlite-utils insert my.db rows data.json --table mytable --flatten 1</li></ul></li></ul></li></ul>\n\n<ul><li>LanceDB + DuckDB + SQLite is a killer combo<ul><li>https://www.npmjs.com/package/@lancedb/lancedb</li></ul></li></ul>\n\n<h3>admins</h3>\n\n<ul><li>https://github.com/ermouth/couch-photon?utm_source=chatgpt.com</li><li>SQLite Web?</li><li>https://dbeaver.io/download/</li><li>https://www.beekeeperstudio.io/</li><li>https://github.com/superfly/litefs</li><li>./pocketbase serve</li><li>npx dbgate</li></ul>"},{"id":"/root/children/21","type":"heading","loc":{"start":3298,"end":3308,"line":{"s":119,"e":119,"code":["# database"]},"column":{"s":0,"e":10}},"dim":["","heading.21"],"code":"# database","symbName":"heading","symbRange":[3310,3372],"symbRangeL":[119,123],"outerCode":"\n- sqlite alternative: https://turso.tech/\n- todo sqlite-tricks","outerHtml":"\n<ul><li>sqlite alternative: https://turso.tech/</li><li>todo sqlite-tricks</li></ul>"},{"id":"/root/children/21/children/0","type":"text","loc":{"start":3300,"end":3308,"line":{"s":119,"e":119,"code":["# database"]},"column":{"s":2,"e":10}},"dim":["","heading.21","text.0"],"code":"database"},{"id":"/root/children/22","type":"list","loc":{"start":3310,"end":3372,"line":{"s":121,"e":122,"code":["- sqlite alternative: https://turso.tech/","- todo sqlite-tricks"]},"column":{"s":0,"e":20}},"dim":["","list.22"],"code":"- sqlite alternative: https://turso.tech/\n- todo sqlite-tricks","symbName":"list","symbRange":[3374,3390],"symbRangeL":[121,125],"outerCode":"- todo sqlite-tricks\n\n## sqlite tricks","outerHtml":"<ul><li>todo sqlite-tricks</li></ul>\n\n<h2>sqlite tricks</h2>"},{"id":"/root/children/22/children/0","type":"listItem","loc":{"start":3310,"end":3351,"line":{"s":121,"e":121,"code":["- sqlite alternative: https://turso.tech/"]},"column":{"s":0,"e":41}},"dim":["","list.22","listItem.0"],"code":"- sqlite alternative: https://turso.tech/"},{"id":"/root/children/22/children/0/children/0","type":"paragraph","loc":{"start":3312,"end":3351,"line":{"s":121,"e":121,"code":["- sqlite alternative: https://turso.tech/"]},"column":{"s":2,"e":41}},"dim":["","list.22","listItem.0","paragraph.0"],"code":"sqlite alternative: https://turso.tech/"},{"id":"/root/children/22/children/0/children/0/children/0","type":"text","loc":{"start":3312,"end":3351,"line":{"s":121,"e":121,"code":["- sqlite alternative: https://turso.tech/"]},"column":{"s":2,"e":41}},"dim":["","list.22","listItem.0","paragraph.0","text.0"],"code":"sqlite alternative: https://turso.tech/"},{"id":"/root/children/22/children/1","type":"listItem","loc":{"start":3352,"end":3372,"line":{"s":122,"e":122,"code":["- todo sqlite-tricks"]},"column":{"s":0,"e":20}},"dim":["","list.22","listItem.1"],"code":"- todo sqlite-tricks"},{"id":"/root/children/22/children/1/children/0","type":"paragraph","loc":{"start":3354,"end":3372,"line":{"s":122,"e":122,"code":["- todo sqlite-tricks"]},"column":{"s":2,"e":20}},"dim":["","list.22","listItem.1","paragraph.0"],"code":"todo sqlite-tricks"},{"id":"/root/children/22/children/1/children/0/children/0","type":"text","loc":{"start":3354,"end":3372,"line":{"s":122,"e":122,"code":["- todo sqlite-tricks"]},"column":{"s":2,"e":20}},"dim":["","list.22","listItem.1","paragraph.0","text.0"],"code":"todo sqlite-tricks"},{"id":"/root/children/23","type":"heading","loc":{"start":3374,"end":3390,"line":{"s":124,"e":124,"code":["## sqlite tricks"]},"column":{"s":0,"e":16}},"dim":["","heading.23"],"code":"## sqlite tricks","symbName":"heading","symbRange":[3392,3633],"symbRangeL":[124,132],"outerCode":"\n- https://github.com/npiesco/absurder-sql\n- https://github.com/sqlpage/SQLPage\n- https://github.com/nalgeon/sqlime?tab=readme-ov-file\n- https://github.com/nalgeon/sqlean\n- https://datasette.io/\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA","outerHtml":"\n<ul><li>https://github.com/npiesco/absurder-sql</li><li>https://github.com/sqlpage/SQLPage</li><li>https://github.com/nalgeon/sqlime?tab=readme-ov-file</li><li>https://github.com/nalgeon/sqlean</li><li>https://datasette.io/<ul><li>https://www.youtube.com/watch?v=wc8FBhQtdsA</li></ul></li></ul>"},{"id":"/root/children/23/children/0","type":"text","loc":{"start":3377,"end":3390,"line":{"s":124,"e":124,"code":["## sqlite tricks"]},"column":{"s":3,"e":16}},"dim":["","heading.23","text.0"],"code":"sqlite tricks"},{"id":"/root/children/24","type":"list","loc":{"start":3392,"end":3633,"line":{"s":126,"e":131,"code":["- https://github.com/npiesco/absurder-sql","- https://github.com/sqlpage/SQLPage","- https://github.com/nalgeon/sqlime?tab=readme-ov-file","- https://github.com/nalgeon/sqlean","- https://datasette.io/","  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":0,"e":47}},"dim":["","list.24"],"code":"- https://github.com/npiesco/absurder-sql\n- https://github.com/sqlpage/SQLPage\n- https://github.com/nalgeon/sqlime?tab=readme-ov-file\n- https://github.com/nalgeon/sqlean\n- https://datasette.io/\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA","symbName":"list","symbRange":[3635,3653],"symbRangeL":[126,134],"outerCode":"- https://github.com/sqlpage/SQLPage\n- https://github.com/nalgeon/sqlime?tab=readme-ov-file\n- https://github.com/nalgeon/sqlean\n- https://datasette.io/\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n\n### JSON to sqlite","outerHtml":"<ul><li>https://github.com/sqlpage/SQLPage</li><li>https://github.com/nalgeon/sqlime?tab=readme-ov-file</li><li>https://github.com/nalgeon/sqlean</li><li>https://datasette.io/<ul><li>https://www.youtube.com/watch?v=wc8FBhQtdsA</li></ul></li></ul>\n\n<h3>JSON to sqlite</h3>"},{"id":"/root/children/24/children/0","type":"listItem","loc":{"start":3392,"end":3433,"line":{"s":126,"e":126,"code":["- https://github.com/npiesco/absurder-sql"]},"column":{"s":0,"e":41}},"dim":["","list.24","listItem.0"],"code":"- https://github.com/npiesco/absurder-sql"},{"id":"/root/children/24/children/0/children/0","type":"paragraph","loc":{"start":3394,"end":3433,"line":{"s":126,"e":126,"code":["- https://github.com/npiesco/absurder-sql"]},"column":{"s":2,"e":41}},"dim":["","list.24","listItem.0","paragraph.0"],"code":"https://github.com/npiesco/absurder-sql"},{"id":"/root/children/24/children/0/children/0/children/0","type":"text","loc":{"start":3394,"end":3433,"line":{"s":126,"e":126,"code":["- https://github.com/npiesco/absurder-sql"]},"column":{"s":2,"e":41}},"dim":["","list.24","listItem.0","paragraph.0","text.0"],"code":"https://github.com/npiesco/absurder-sql"},{"id":"/root/children/24/children/1","type":"listItem","loc":{"start":3434,"end":3470,"line":{"s":127,"e":127,"code":["- https://github.com/sqlpage/SQLPage"]},"column":{"s":0,"e":36}},"dim":["","list.24","listItem.1"],"code":"- https://github.com/sqlpage/SQLPage"},{"id":"/root/children/24/children/1/children/0","type":"paragraph","loc":{"start":3436,"end":3470,"line":{"s":127,"e":127,"code":["- https://github.com/sqlpage/SQLPage"]},"column":{"s":2,"e":36}},"dim":["","list.24","listItem.1","paragraph.0"],"code":"https://github.com/sqlpage/SQLPage"},{"id":"/root/children/24/children/1/children/0/children/0","type":"text","loc":{"start":3436,"end":3470,"line":{"s":127,"e":127,"code":["- https://github.com/sqlpage/SQLPage"]},"column":{"s":2,"e":36}},"dim":["","list.24","listItem.1","paragraph.0","text.0"],"code":"https://github.com/sqlpage/SQLPage"},{"id":"/root/children/24/children/2","type":"listItem","loc":{"start":3471,"end":3525,"line":{"s":128,"e":128,"code":["- https://github.com/nalgeon/sqlime?tab=readme-ov-file"]},"column":{"s":0,"e":54}},"dim":["","list.24","listItem.2"],"code":"- https://github.com/nalgeon/sqlime?tab=readme-ov-file"},{"id":"/root/children/24/children/2/children/0","type":"paragraph","loc":{"start":3473,"end":3525,"line":{"s":128,"e":128,"code":["- https://github.com/nalgeon/sqlime?tab=readme-ov-file"]},"column":{"s":2,"e":54}},"dim":["","list.24","listItem.2","paragraph.0"],"code":"https://github.com/nalgeon/sqlime?tab=readme-ov-file"},{"id":"/root/children/24/children/2/children/0/children/0","type":"text","loc":{"start":3473,"end":3525,"line":{"s":128,"e":128,"code":["- https://github.com/nalgeon/sqlime?tab=readme-ov-file"]},"column":{"s":2,"e":54}},"dim":["","list.24","listItem.2","paragraph.0","text.0"],"code":"https://github.com/nalgeon/sqlime?tab=readme-ov-file"},{"id":"/root/children/24/children/3","type":"listItem","loc":{"start":3526,"end":3561,"line":{"s":129,"e":129,"code":["- https://github.com/nalgeon/sqlean"]},"column":{"s":0,"e":35}},"dim":["","list.24","listItem.3"],"code":"- https://github.com/nalgeon/sqlean"},{"id":"/root/children/24/children/3/children/0","type":"paragraph","loc":{"start":3528,"end":3561,"line":{"s":129,"e":129,"code":["- https://github.com/nalgeon/sqlean"]},"column":{"s":2,"e":35}},"dim":["","list.24","listItem.3","paragraph.0"],"code":"https://github.com/nalgeon/sqlean"},{"id":"/root/children/24/children/3/children/0/children/0","type":"text","loc":{"start":3528,"end":3561,"line":{"s":129,"e":129,"code":["- https://github.com/nalgeon/sqlean"]},"column":{"s":2,"e":35}},"dim":["","list.24","listItem.3","paragraph.0","text.0"],"code":"https://github.com/nalgeon/sqlean"},{"id":"/root/children/24/children/4","type":"listItem","loc":{"start":3562,"end":3633,"line":{"s":130,"e":131,"code":["- https://datasette.io/","  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":0,"e":47}},"dim":["","list.24","listItem.4"],"code":"- https://datasette.io/\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/24/children/4/children/0","type":"paragraph","loc":{"start":3564,"end":3585,"line":{"s":130,"e":130,"code":["- https://datasette.io/"]},"column":{"s":2,"e":23}},"dim":["","list.24","listItem.4","paragraph.0"],"code":"https://datasette.io/"},{"id":"/root/children/24/children/4/children/0/children/0","type":"text","loc":{"start":3564,"end":3585,"line":{"s":130,"e":130,"code":["- https://datasette.io/"]},"column":{"s":2,"e":23}},"dim":["","list.24","listItem.4","paragraph.0","text.0"],"code":"https://datasette.io/"},{"id":"/root/children/24/children/4/children/1","type":"list","loc":{"start":3588,"end":3633,"line":{"s":131,"e":131,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":2,"e":47}},"dim":["","list.24","listItem.4","list.1"],"code":"- https://www.youtube.com/watch?v=wc8FBhQtdsA","symbName":"list","symbRange":[null,null],"symbRangeL":[131,131],"outerCode":"","outerHtml":""},{"id":"/root/children/24/children/4/children/1/children/0","type":"listItem","loc":{"start":3588,"end":3633,"line":{"s":131,"e":131,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":2,"e":47}},"dim":["","list.24","listItem.4","list.1","listItem.0"],"code":"- https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/24/children/4/children/1/children/0/children/0","type":"paragraph","loc":{"start":3590,"end":3633,"line":{"s":131,"e":131,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":4,"e":47}},"dim":["","list.24","listItem.4","list.1","listItem.0","paragraph.0"],"code":"https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/24/children/4/children/1/children/0/children/0/children/0","type":"text","loc":{"start":3590,"end":3633,"line":{"s":131,"e":131,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":4,"e":47}},"dim":["","list.24","listItem.4","list.1","listItem.0","paragraph.0","text.0"],"code":"https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/25","type":"heading","loc":{"start":3635,"end":3653,"line":{"s":133,"e":133,"code":["### JSON to sqlite"]},"column":{"s":0,"e":18}},"dim":["","heading.25"],"code":"### JSON to sqlite","symbName":"heading","symbRange":[3655,3921],"symbRangeL":[133,142],"outerCode":"\n- datasette\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n  - sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1\n\n- LanceDB + DuckDB + SQLite is a killer combo\n  - https://www.npmjs.com/package/@lancedb/lancedb","outerHtml":"\n<ul><li>datasette<ul><li>https://www.youtube.com/watch?v=wc8FBhQtdsA</li><li>sqlite-utils (Simon Willison)<ul><li>sqlite-utils insert my.db rows data.json --table mytable --flatten 1</li></ul></li></ul></li></ul>\n\n<ul><li>LanceDB + DuckDB + SQLite is a killer combo<ul><li>https://www.npmjs.com/package/@lancedb/lancedb</li></ul></li></ul>"},{"id":"/root/children/25/children/0","type":"text","loc":{"start":3639,"end":3653,"line":{"s":133,"e":133,"code":["### JSON to sqlite"]},"column":{"s":4,"e":18}},"dim":["","heading.25","text.0"],"code":"JSON to sqlite"},{"id":"/root/children/26","type":"list","loc":{"start":3655,"end":3921,"line":{"s":135,"e":141,"code":["- datasette","  - https://www.youtube.com/watch?v=wc8FBhQtdsA","  - sqlite-utils (Simon Willison)","    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1","","- LanceDB + DuckDB + SQLite is a killer combo","  - https://www.npmjs.com/package/@lancedb/lancedb"]},"column":{"s":0,"e":50}},"dim":["","list.26"],"code":"- datasette\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n  - sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1\n\n- LanceDB + DuckDB + SQLite is a killer combo\n  - https://www.npmjs.com/package/@lancedb/lancedb","symbName":"list","symbRange":[3923,3933],"symbRangeL":[135,144],"outerCode":"  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n  - sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1\n\n- LanceDB + DuckDB + SQLite is a killer combo\n  - https://www.npmjs.com/package/@lancedb/lancedb\n\n### admins","outerHtml":"<ul><li>https://www.youtube.com/watch?v=wc8FBhQtdsA</li><li>sqlite-utils (Simon Willison)<ul><li>sqlite-utils insert my.db rows data.json --table mytable --flatten 1</li></ul></li></ul>\n\n<ul><li>LanceDB + DuckDB + SQLite is a killer combo<ul><li>https://www.npmjs.com/package/@lancedb/lancedb</li></ul></li></ul>\n\n<h3>admins</h3>"},{"id":"/root/children/26/children/0","type":"listItem","loc":{"start":3655,"end":3823,"line":{"s":135,"e":138,"code":["- datasette","  - https://www.youtube.com/watch?v=wc8FBhQtdsA","  - sqlite-utils (Simon Willison)","    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":0,"e":74}},"dim":["","list.26","listItem.0"],"code":"- datasette\n  - https://www.youtube.com/watch?v=wc8FBhQtdsA\n  - sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"},{"id":"/root/children/26/children/0/children/0","type":"paragraph","loc":{"start":3657,"end":3666,"line":{"s":135,"e":135,"code":["- datasette"]},"column":{"s":2,"e":11}},"dim":["","list.26","listItem.0","paragraph.0"],"code":"datasette"},{"id":"/root/children/26/children/0/children/0/children/0","type":"text","loc":{"start":3657,"end":3666,"line":{"s":135,"e":135,"code":["- datasette"]},"column":{"s":2,"e":11}},"dim":["","list.26","listItem.0","paragraph.0","text.0"],"code":"datasette"},{"id":"/root/children/26/children/0/children/1","type":"list","loc":{"start":3669,"end":3823,"line":{"s":136,"e":138,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA","  - sqlite-utils (Simon Willison)","    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":2,"e":74}},"dim":["","list.26","listItem.0","list.1"],"code":"- https://www.youtube.com/watch?v=wc8FBhQtdsA\n  - sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1","symbName":"list","symbRange":[null,null],"symbRangeL":[136,138],"outerCode":"  - sqlite-utils (Simon Willison)","outerHtml":"<ul><li>sqlite-utils (Simon Willison)</li></ul>"},{"id":"/root/children/26/children/0/children/1/children/0","type":"listItem","loc":{"start":3669,"end":3714,"line":{"s":136,"e":136,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":2,"e":47}},"dim":["","list.26","listItem.0","list.1","listItem.0"],"code":"- https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/26/children/0/children/1/children/0/children/0","type":"paragraph","loc":{"start":3671,"end":3714,"line":{"s":136,"e":136,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":4,"e":47}},"dim":["","list.26","listItem.0","list.1","listItem.0","paragraph.0"],"code":"https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/26/children/0/children/1/children/0/children/0/children/0","type":"text","loc":{"start":3671,"end":3714,"line":{"s":136,"e":136,"code":["  - https://www.youtube.com/watch?v=wc8FBhQtdsA"]},"column":{"s":4,"e":47}},"dim":["","list.26","listItem.0","list.1","listItem.0","paragraph.0","text.0"],"code":"https://www.youtube.com/watch?v=wc8FBhQtdsA"},{"id":"/root/children/26/children/0/children/1/children/1","type":"listItem","loc":{"start":3717,"end":3823,"line":{"s":137,"e":138,"code":["  - sqlite-utils (Simon Willison)","    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":2,"e":74}},"dim":["","list.26","listItem.0","list.1","listItem.1"],"code":"- sqlite-utils (Simon Willison)\n    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"},{"id":"/root/children/26/children/0/children/1/children/1/children/0","type":"paragraph","loc":{"start":3719,"end":3748,"line":{"s":137,"e":137,"code":["  - sqlite-utils (Simon Willison)"]},"column":{"s":4,"e":33}},"dim":["","list.26","listItem.0","list.1","listItem.1","paragraph.0"],"code":"sqlite-utils (Simon Willison)"},{"id":"/root/children/26/children/0/children/1/children/1/children/0/children/0","type":"text","loc":{"start":3719,"end":3748,"line":{"s":137,"e":137,"code":["  - sqlite-utils (Simon Willison)"]},"column":{"s":4,"e":33}},"dim":["","list.26","listItem.0","list.1","listItem.1","paragraph.0","text.0"],"code":"sqlite-utils (Simon Willison)"},{"id":"/root/children/26/children/0/children/1/children/1/children/1","type":"list","loc":{"start":3753,"end":3823,"line":{"s":138,"e":138,"code":["    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":4,"e":74}},"dim":["","list.26","listItem.0","list.1","listItem.1","list.1"],"code":"- sqlite-utils insert my.db rows data.json --table mytable --flatten 1","symbName":"list","symbRange":[null,null],"symbRangeL":[138,138],"outerCode":"","outerHtml":""},{"id":"/root/children/26/children/0/children/1/children/1/children/1/children/0","type":"listItem","loc":{"start":3753,"end":3823,"line":{"s":138,"e":138,"code":["    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":4,"e":74}},"dim":["","list.26","listItem.0","list.1","listItem.1","list.1","listItem.0"],"code":"- sqlite-utils insert my.db rows data.json --table mytable --flatten 1"},{"id":"/root/children/26/children/0/children/1/children/1/children/1/children/0/children/0","type":"paragraph","loc":{"start":3755,"end":3823,"line":{"s":138,"e":138,"code":["    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":6,"e":74}},"dim":["","list.26","listItem.0","list.1","listItem.1","list.1","listItem.0","paragraph.0"],"code":"sqlite-utils insert my.db rows data.json --table mytable --flatten 1"},{"id":"/root/children/26/children/0/children/1/children/1/children/1/children/0/children/0/children/0","type":"text","loc":{"start":3755,"end":3823,"line":{"s":138,"e":138,"code":["    - sqlite-utils insert my.db rows data.json --table mytable --flatten 1"]},"column":{"s":6,"e":74}},"dim":["","list.26","listItem.0","list.1","listItem.1","list.1","listItem.0","paragraph.0","text.0"],"code":"sqlite-utils insert my.db rows data.json --table mytable --flatten 1"},{"id":"/root/children/26/children/1","type":"listItem","loc":{"start":3825,"end":3921,"line":{"s":140,"e":141,"code":["- LanceDB + DuckDB + SQLite is a killer combo","  - https://www.npmjs.com/package/@lancedb/lancedb"]},"column":{"s":0,"e":50}},"dim":["","list.26","listItem.1"],"code":"- LanceDB + DuckDB + SQLite is a killer combo\n  - https://www.npmjs.com/package/@lancedb/lancedb"},{"id":"/root/children/26/children/1/children/0","type":"paragraph","loc":{"start":3827,"end":3870,"line":{"s":140,"e":140,"code":["- LanceDB + DuckDB + SQLite is a killer combo"]},"column":{"s":2,"e":45}},"dim":["","list.26","listItem.1","paragraph.0"],"code":"LanceDB + DuckDB + SQLite is a killer combo"},{"id":"/root/children/26/children/1/children/0/children/0","type":"text","loc":{"start":3827,"end":3870,"line":{"s":140,"e":140,"code":["- LanceDB + DuckDB + SQLite is a killer combo"]},"column":{"s":2,"e":45}},"dim":["","list.26","listItem.1","paragraph.0","text.0"],"code":"LanceDB + DuckDB + SQLite is a killer combo"},{"id":"/root/children/26/children/1/children/1","type":"list","loc":{"start":3873,"end":3921,"line":{"s":141,"e":141,"code":["  - https://www.npmjs.com/package/@lancedb/lancedb"]},"column":{"s":2,"e":50}},"dim":["","list.26","listItem.1","list.1"],"code":"- https://www.npmjs.com/package/@lancedb/lancedb","symbName":"list","symbRange":[null,null],"symbRangeL":[141,141],"outerCode":"","outerHtml":""},{"id":"/root/children/26/children/1/children/1/children/0","type":"listItem","loc":{"start":3873,"end":3921,"line":{"s":141,"e":141,"code":["  - https://www.npmjs.com/package/@lancedb/lancedb"]},"column":{"s":2,"e":50}},"dim":["","list.26","listItem.1","list.1","listItem.0"],"code":"- https://www.npmjs.com/package/@lancedb/lancedb"},{"id":"/root/children/26/children/1/children/1/children/0/children/0","type":"paragraph","loc":{"start":3875,"end":3921,"line":{"s":141,"e":141,"code":["  - https://www.npmjs.com/package/@lancedb/lancedb"]},"column":{"s":4,"e":50}},"dim":["","list.26","listItem.1","list.1","listItem.0","paragraph.0"],"code":"https://www.npmjs.com/package/@lancedb/lancedb"},{"id":"/root/children/26/children/1/children/1/children/0/children/0/children/0","type":"text","loc":{"start":3875,"end":3921,"line":{"s":141,"e":141,"code":["  - https://www.npmjs.com/package/@lancedb/lancedb"]},"column":{"s":4,"e":50}},"dim":["","list.26","listItem.1","list.1","listItem.0","paragraph.0","text.0"],"code":"https://www.npmjs.com/package/@lancedb/lancedb"},{"id":"/root/children/27","type":"heading","loc":{"start":3923,"end":3933,"line":{"s":143,"e":143,"code":["### admins"]},"column":{"s":0,"e":10}},"dim":["","heading.27"],"code":"### admins","symbName":"heading","symbRange":[3935,4149],"symbRangeL":[143,152],"outerCode":"\n- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com\n- SQLite Web?\n- https://dbeaver.io/download/\n- https://www.beekeeperstudio.io/\n- https://github.com/superfly/litefs\n- ./pocketbase serve\n- npx dbgate","outerHtml":"\n<ul><li>https://github.com/ermouth/couch-photon?utm_source=chatgpt.com</li><li>SQLite Web?</li><li>https://dbeaver.io/download/</li><li>https://www.beekeeperstudio.io/</li><li>https://github.com/superfly/litefs</li><li>./pocketbase serve</li><li>npx dbgate</li></ul>"},{"id":"/root/children/27/children/0","type":"text","loc":{"start":3927,"end":3933,"line":{"s":143,"e":143,"code":["### admins"]},"column":{"s":4,"e":10}},"dim":["","heading.27","text.0"],"code":"admins"},{"id":"/root/children/28","type":"list","loc":{"start":3935,"end":4149,"line":{"s":145,"e":151,"code":["- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com","- SQLite Web?","- https://dbeaver.io/download/","- https://www.beekeeperstudio.io/","- https://github.com/superfly/litefs","- ./pocketbase serve","- npx dbgate"]},"column":{"s":0,"e":12}},"dim":["","list.28"],"code":"- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com\n- SQLite Web?\n- https://dbeaver.io/download/\n- https://www.beekeeperstudio.io/\n- https://github.com/superfly/litefs\n- ./pocketbase serve\n- npx dbgate","symbName":"list","symbRange":[4151,null],"symbRangeL":[145,152],"outerCode":"- SQLite Web?\n- https://dbeaver.io/download/\n- https://www.beekeeperstudio.io/\n- https://github.com/superfly/litefs\n- ./pocketbase serve\n- npx dbgate","outerHtml":"<ul><li>SQLite Web?</li><li>https://dbeaver.io/download/</li><li>https://www.beekeeperstudio.io/</li><li>https://github.com/superfly/litefs</li><li>./pocketbase serve</li><li>npx dbgate</li></ul>"},{"id":"/root/children/28/children/0","type":"listItem","loc":{"start":3935,"end":3999,"line":{"s":145,"e":145,"code":["- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com"]},"column":{"s":0,"e":64}},"dim":["","list.28","listItem.0"],"code":"- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com"},{"id":"/root/children/28/children/0/children/0","type":"paragraph","loc":{"start":3937,"end":3999,"line":{"s":145,"e":145,"code":["- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com"]},"column":{"s":2,"e":64}},"dim":["","list.28","listItem.0","paragraph.0"],"code":"https://github.com/ermouth/couch-photon?utm_source=chatgpt.com"},{"id":"/root/children/28/children/0/children/0/children/0","type":"text","loc":{"start":3937,"end":3999,"line":{"s":145,"e":145,"code":["- https://github.com/ermouth/couch-photon?utm_source=chatgpt.com"]},"column":{"s":2,"e":64}},"dim":["","list.28","listItem.0","paragraph.0","text.0"],"code":"https://github.com/ermouth/couch-photon?utm_source=chatgpt.com"},{"id":"/root/children/28/children/1","type":"listItem","loc":{"start":4000,"end":4013,"line":{"s":146,"e":146,"code":["- SQLite Web?"]},"column":{"s":0,"e":13}},"dim":["","list.28","listItem.1"],"code":"- SQLite Web?"},{"id":"/root/children/28/children/1/children/0","type":"paragraph","loc":{"start":4002,"end":4013,"line":{"s":146,"e":146,"code":["- SQLite Web?"]},"column":{"s":2,"e":13}},"dim":["","list.28","listItem.1","paragraph.0"],"code":"SQLite Web?"},{"id":"/root/children/28/children/1/children/0/children/0","type":"text","loc":{"start":4002,"end":4013,"line":{"s":146,"e":146,"code":["- SQLite Web?"]},"column":{"s":2,"e":13}},"dim":["","list.28","listItem.1","paragraph.0","text.0"],"code":"SQLite Web?"},{"id":"/root/children/28/children/2","type":"listItem","loc":{"start":4014,"end":4044,"line":{"s":147,"e":147,"code":["- https://dbeaver.io/download/"]},"column":{"s":0,"e":30}},"dim":["","list.28","listItem.2"],"code":"- https://dbeaver.io/download/"},{"id":"/root/children/28/children/2/children/0","type":"paragraph","loc":{"start":4016,"end":4044,"line":{"s":147,"e":147,"code":["- https://dbeaver.io/download/"]},"column":{"s":2,"e":30}},"dim":["","list.28","listItem.2","paragraph.0"],"code":"https://dbeaver.io/download/"},{"id":"/root/children/28/children/2/children/0/children/0","type":"text","loc":{"start":4016,"end":4044,"line":{"s":147,"e":147,"code":["- https://dbeaver.io/download/"]},"column":{"s":2,"e":30}},"dim":["","list.28","listItem.2","paragraph.0","text.0"],"code":"https://dbeaver.io/download/"},{"id":"/root/children/28/children/3","type":"listItem","loc":{"start":4045,"end":4078,"line":{"s":148,"e":148,"code":["- https://www.beekeeperstudio.io/"]},"column":{"s":0,"e":33}},"dim":["","list.28","listItem.3"],"code":"- https://www.beekeeperstudio.io/"},{"id":"/root/children/28/children/3/children/0","type":"paragraph","loc":{"start":4047,"end":4078,"line":{"s":148,"e":148,"code":["- https://www.beekeeperstudio.io/"]},"column":{"s":2,"e":33}},"dim":["","list.28","listItem.3","paragraph.0"],"code":"https://www.beekeeperstudio.io/"},{"id":"/root/children/28/children/3/children/0/children/0","type":"text","loc":{"start":4047,"end":4078,"line":{"s":148,"e":148,"code":["- https://www.beekeeperstudio.io/"]},"column":{"s":2,"e":33}},"dim":["","list.28","listItem.3","paragraph.0","text.0"],"code":"https://www.beekeeperstudio.io/"},{"id":"/root/children/28/children/4","type":"listItem","loc":{"start":4079,"end":4115,"line":{"s":149,"e":149,"code":["- https://github.com/superfly/litefs"]},"column":{"s":0,"e":36}},"dim":["","list.28","listItem.4"],"code":"- https://github.com/superfly/litefs"},{"id":"/root/children/28/children/4/children/0","type":"paragraph","loc":{"start":4081,"end":4115,"line":{"s":149,"e":149,"code":["- https://github.com/superfly/litefs"]},"column":{"s":2,"e":36}},"dim":["","list.28","listItem.4","paragraph.0"],"code":"https://github.com/superfly/litefs"},{"id":"/root/children/28/children/4/children/0/children/0","type":"text","loc":{"start":4081,"end":4115,"line":{"s":149,"e":149,"code":["- https://github.com/superfly/litefs"]},"column":{"s":2,"e":36}},"dim":["","list.28","listItem.4","paragraph.0","text.0"],"code":"https://github.com/superfly/litefs"},{"id":"/root/children/28/children/5","type":"listItem","loc":{"start":4116,"end":4136,"line":{"s":150,"e":150,"code":["- ./pocketbase serve"]},"column":{"s":0,"e":20}},"dim":["","list.28","listItem.5"],"code":"- ./pocketbase serve"},{"id":"/root/children/28/children/5/children/0","type":"paragraph","loc":{"start":4118,"end":4136,"line":{"s":150,"e":150,"code":["- ./pocketbase serve"]},"column":{"s":2,"e":20}},"dim":["","list.28","listItem.5","paragraph.0"],"code":"./pocketbase serve"},{"id":"/root/children/28/children/5/children/0/children/0","type":"text","loc":{"start":4118,"end":4136,"line":{"s":150,"e":150,"code":["- ./pocketbase serve"]},"column":{"s":2,"e":20}},"dim":["","list.28","listItem.5","paragraph.0","text.0"],"code":"./pocketbase serve"},{"id":"/root/children/28/children/6","type":"listItem","loc":{"start":4137,"end":4149,"line":{"s":151,"e":151,"code":["- npx dbgate"]},"column":{"s":0,"e":12}},"dim":["","list.28","listItem.6"],"code":"- npx dbgate"},{"id":"/root/children/28/children/6/children/0","type":"paragraph","loc":{"start":4139,"end":4149,"line":{"s":151,"e":151,"code":["- npx dbgate"]},"column":{"s":2,"e":12}},"dim":["","list.28","listItem.6","paragraph.0"],"code":"npx dbgate"},{"id":"/root/children/28/children/6/children/0/children/0","type":"text","loc":{"start":4139,"end":4149,"line":{"s":151,"e":151,"code":["- npx dbgate"]},"column":{"s":2,"e":12}},"dim":["","list.28","listItem.6","paragraph.0","text.0"],"code":"npx dbgate"},{"id":"/root/children/29","type":"code","loc":{"start":4151,"end":4286,"line":{"s":153,"e":160,"code":["```","docker run -d \\","  --name dbgate-instance \\","  --restart always \\","  -p 3000:3000 \\","  -v /home/stefan/data:/data \\","  dbgate/dbgate","```"]},"column":{"s":0,"e":3}},"dim":["","code.29"],"code":"```\ndocker run -d \\\n  --name dbgate-instance \\\n  --restart always \\\n  -p 3000:3000 \\\n  -v /home/stefan/data:/data \\\n  dbgate/dbgate\n```","symbName":"code","symbRange":[null,null],"symbRangeL":[null,null],"outerCode":"","outerHtml":""}]