kopia lustrzana https://github.com/learn-awesome/learndb
misc
rodzic
558ef2c019
commit
bfa2fa4f04
|
@ -1,4 +1,4 @@
|
||||||
# LearnAwesome
|
# SkillTree
|
||||||
|
|
||||||
[Visit the online version at https://skilltree.worldclass.quest/](https://skilltree.worldclass.quest/) but you can also run it on your own machine.
|
[Visit the online version at https://skilltree.worldclass.quest/](https://skilltree.worldclass.quest/) but you can also run it on your own machine.
|
||||||
|
|
||||||
|
|
45
db/README.md
45
db/README.md
|
@ -1,8 +1,49 @@
|
||||||
# JSON format
|
# JSON format
|
||||||
|
|
||||||
These JSON files are now not the master data but will be generated from a PostgreSQL database whose schema is defined in `schema.sql`.
|
These JSON files can also be generated from a PostgreSQL database whose schema is defined in `schema.sql`.
|
||||||
|
|
||||||
We have 4 top-level entities: Topics, Creators and Items. Reviews are are nested within Items and have links to either another Item or a Creator.
|
We have 3 top-level entities: [Topics](topics.json), [Creators](creators.json), [Items](items.json). Reviews are are nested within Items and have links to either another Item or a Creator.
|
||||||
|
|
||||||
|
topis (name, hname, parent, rank)
|
||||||
|
creators (name, hname, links)
|
||||||
|
items (id, name, description, image, splinks, topics, creators, reviews, tags, difficulty, rating)
|
||||||
|
|
||||||
|
spnames are topic names designed to fix many shortcomings of traditional names:
|
||||||
|
- we want case-insensitive, unique, URL-safe, hashtag-compatible names as topic identifiers
|
||||||
|
- but case-sensitive and including special characters for human display. Eg: "AT & T" or "C++ 20"
|
||||||
|
- topics have a taxonomy, typically a hierarchy. For eg: comp.lang.python
|
||||||
|
- within a parent, we usually want to preserve display order which is not alphabetical. This can be done with names like "100-physics", "200-chemistry", "300-biology" etc.
|
||||||
|
|
||||||
|
Wikipedia handles it awkwardly (escape characters that are hard to type manually, no hierarchy):
|
||||||
|
- https://en.wikipedia.org/wiki/Zorn%27s_lemma
|
||||||
|
- https://en.wikipedia.org/wiki/C%2B%2B
|
||||||
|
|
||||||
|
[Newsgroups](https://www.big-8.org/wiki/Big-8_Usenet_hierarchies) are quite nice, but the taxonomy is not granular enough for us to build a universal knowledge graph. For eg: there is [no name yet](https://news.novabbs.org/usenet/article-flat.php?id=34&group=news.announce.newgroups#34) for quadratic equations. Also, everything other than Big-8 (comp, humanities, misc, news, rec, sci, soc, and talk) is shoved into the alt.* hierarchy (the historical reason for that is European networks did not want to pay for groups like religion or racism)
|
||||||
|
|
||||||
|
Taxonomy maintenance is not easy. When does a concept/subtopic deserve its own topic-name? What happens when topics get merged or retired? Should they be language-agnostic or English-first?
|
||||||
|
|
||||||
|
Should names optimize for brevity or readability? What if names get really long?
|
||||||
|
Should names always fully-specified like `math.algebra.quadratics` or just `quadratics`?
|
||||||
|
If sort order is included in the name, do we expect the users to write "100-science.200-chemistry"?
|
||||||
|
If sort order is NOT included in the name then it (and other attributes) needs to be looked up elsewhere.
|
||||||
|
What if a topic belongs under two separate parent topics? statistics.machine_learning or computer_science.machine_learning?
|
||||||
|
Can names be compatible with hashtags?
|
||||||
|
How to handle disambiguation (a name that belongs to 2+ things or a thing that has 2+ names?
|
||||||
|
How about nameless things or topics?
|
||||||
|
Should names be meaningful or randomized?
|
||||||
|
Are names properties (like DNS or ENS)? If not, who assigns them?
|
||||||
|
How can a taxonomy keep up with expanding knowledge?
|
||||||
|
|
||||||
|
|
||||||
|
splinks are HTTP URLs modified specially in a few ways:
|
||||||
|
- Link should indicate the learning media type (eg: book/course/video/game/event etc)
|
||||||
|
- Link should optionally include content-hash for integrity check and alternat fetch mechanism like IPFS
|
||||||
|
- Link should optionally include enable easy lookup for its snapshot on places like Wayback machine
|
||||||
|
- Link should optionally indicate its open-access status:
|
||||||
|
- Does it require login?
|
||||||
|
- Does it require payment?
|
||||||
|
- Does it require ads?
|
||||||
|
- Links should be backward-compatible and should navigate to primary location in the usual way
|
||||||
|
|
||||||
## topics.json
|
## topics.json
|
||||||
|
|
||||||
|
|
|
@ -38,12 +38,11 @@
|
||||||
|
|
||||||
<script type="module" src='/src/main.js'></script>
|
<script type="module" src='/src/main.js'></script>
|
||||||
|
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.18.0/cdn/themes/light.css" />
|
||||||
href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.86/dist/themes/light.css" />
|
<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.18.0/cdn/shoelace.js" ></script>
|
||||||
<script type="module"
|
|
||||||
src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.0.0-beta.86/dist/shoelace.js"></script>
|
|
||||||
<script type="module" src="https://unpkg.com/@fluentui/web-components"></script>
|
<script type="module" src="https://unpkg.com/@fluentui/web-components"></script>
|
||||||
<title>LearnAwesome</title>
|
<title>SkillTree</title>
|
||||||
|
|
||||||
<!-- fonts -->
|
<!-- fonts -->
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"marked": "^15.0.2",
|
"marked": "^15.0.2",
|
||||||
"postcss": "^8.4.30",
|
"postcss": "^8.4.30",
|
||||||
"postcss-load-config": "^6.0.1",
|
"postcss-load-config": "^6.0.1",
|
||||||
"svelte": "^5.2.9",
|
"svelte": "^5.2.10",
|
||||||
"svelte-bricks": "^0.2.1",
|
"svelte-bricks": "^0.2.1",
|
||||||
"svelte-preprocess": "^6.0.0",
|
"svelte-preprocess": "^6.0.0",
|
||||||
"tailwindcss": "^3.3.3",
|
"tailwindcss": "^3.3.3",
|
||||||
|
@ -1397,9 +1397,9 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.65",
|
"version": "1.5.66",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.65.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.66.tgz",
|
||||||
"integrity": "sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==",
|
"integrity": "sha512-pI2QF6+i+zjPbqRzJwkMvtvkdI7MjVbSh2g8dlMguDJIXEPw+kwasS1Jl+YGPEBfGVxsVgGUratAKymPdPo2vQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
@ -1460,9 +1460,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esm-env": {
|
"node_modules/esm-env": {
|
||||||
"version": "1.1.4",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.0.tgz",
|
||||||
"integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==",
|
"integrity": "sha512-OhSQuHL3mUcaQHjGe8UMG8GsJIJHYYz0flR0h9fiTPNMupLMkb7TvcRD0EeJXW5a8GHBgfz08b6FDLNK7kkPQA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/esrap": {
|
"node_modules/esrap": {
|
||||||
|
@ -2699,9 +2699,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/svelte": {
|
"node_modules/svelte": {
|
||||||
"version": "5.2.9",
|
"version": "5.2.10",
|
||||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.9.tgz",
|
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.10.tgz",
|
||||||
"integrity": "sha512-LjO7R6K8FI8dA3l+4CcsbJ3djIe2TtokHGzfpDTro5g8nworMbTz9alCR95EQXGsqlzIAvqJtZ7Yy0o33lL09Q==",
|
"integrity": "sha512-ON0OyO7vOmSjTc9mLjusu3vf1I7BvjovbiRB7j84F1WZMXV6dR+Tj4btIzxQxMHfzbGskaFmRa7qjgmBSVBnhQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ampproject/remapping": "^2.3.0",
|
"@ampproject/remapping": "^2.3.0",
|
||||||
|
@ -2711,7 +2711,7 @@
|
||||||
"acorn-typescript": "^1.4.13",
|
"acorn-typescript": "^1.4.13",
|
||||||
"aria-query": "^5.3.1",
|
"aria-query": "^5.3.1",
|
||||||
"axobject-query": "^4.1.0",
|
"axobject-query": "^4.1.0",
|
||||||
"esm-env": "^1.0.0",
|
"esm-env": "^1.2.0",
|
||||||
"esrap": "^1.2.2",
|
"esrap": "^1.2.2",
|
||||||
"is-reference": "^3.0.3",
|
"is-reference": "^3.0.3",
|
||||||
"locate-character": "^3.0.0",
|
"locate-character": "^3.0.0",
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"marked": "^15.0.2",
|
"marked": "^15.0.2",
|
||||||
"postcss": "^8.4.30",
|
"postcss": "^8.4.30",
|
||||||
"postcss-load-config": "^6.0.1",
|
"postcss-load-config": "^6.0.1",
|
||||||
"svelte": "^5.2.9",
|
"svelte": "^5.2.10",
|
||||||
"svelte-bricks": "^0.2.1",
|
"svelte-bricks": "^0.2.1",
|
||||||
"svelte-preprocess": "^6.0.0",
|
"svelte-preprocess": "^6.0.0",
|
||||||
"tailwindcss": "^3.3.3",
|
"tailwindcss": "^3.3.3",
|
||||||
|
|
Ładowanie…
Reference in New Issue