cosma
Cosma is a document graph visualization tool. It modelizes interlinked Markdown files and renders them as an interactive network in a web interface.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.7%) to scientific vocabulary
Repository
Cosma is a document graph visualization tool. It modelizes interlinked Markdown files and renders them as an interactive network in a web interface.
Basic Info
- Host: GitHub
- Owner: graphlab-fr
- License: gpl-3.0
- Language: JavaScript
- Default Branch: develop
- Homepage: https://cosma.arthurperret.fr
- Size: 2.44 MB
Statistics
- Stars: 148
- Watchers: 5
- Forks: 8
- Open Issues: 20
- Releases: 21
Metadata Files
README.md
Cosma 
Cosma is a visualization tool for knowledge workers. It reads plain text files with [[wiki links]] and renders them as an interactive network of index cards.
Cosma provides an interface to navigate and share non-linear documentation:
- if you have a personal wiki, Zettelkasten or digital garden;
- if you create mind maps, networks of people and concepts;
- if you work with citations and bibliographies;
- if you study things that involve time metadata;
then you can use Cosma to create a portable knowledge base, combining rich hypertextual descriptions with the affordances of a graph view, contextualized backlinks, automatically generated citations, metadata filters and more.
Visit https://cosma.arthurperret.fr to learn more about the software.
Cosma's development is publicly funded through Université Jean Moulin Lyon 3 and Université Bordeaux Montaigne.
Commands
Install
Need NodeJs v.20 or later.
You want to install app on your computer:
bash
npm i @graphlab-fr/cosma --global
cosma --help # enjoy
You want to install app on your own project (see exemple):
```bash npm i @graphlab-fr/cosma npx cosma --help
or
./node_modules/.bin/cosma cosma --help ```
You have dowloaded this repository and want to execute app:
bash
npm i # install dependences + build executable file
node dist/back.cjs # execute app
Development
You want build executable each time you edit files:
```bash npm run watch:front # build web browser script npm run watch:back # build NodeJs executable file
install nodemon and export files when executable change
nodemon --ext css,njk,js,cjs --watch dist/ --watch static/ --exec "sh e2e/exec-modelize.sh" ```
You want build production app and export files with:
bash
npm prepare
sh e2e/exec-modelize.sh
Maintenance
The software is written in JavaScript. Uses ESM.
Code is documented wherever possible using JSDoc, by add heads to functions, classes and variables. You find many exemples on repository.
Code from directory core/frontend should be executed on web browser, the rest with NodeJS.
Build
The software is build as back.cjs NodeJs CommonJs executable, using Webpack. See below how code is bundled in two steps.
────────────┐
static/icons/** │
───┐ static/template/**.njk│
core/frontend/**.js├──► front.raw.js │
───────────────────────┘ │
webpack-front.config.mjs core/i18n.yml │
app.js ├───► back.cjs
──────────────────────┘
webpack-back.config.mjs
Read architecture.md for details about repository files and directories.
Testing
Unit testing: make some asserts and documentation about business functions and models. Using Jest.
bash
npm run test:unit
npm run test:unit -- --verbose --watchAll
npm run test:unit -- --runTestsByPath <filepath> --verbose --watchAll
E2E testing: generate Cosma's .html and .md files and make some asserts on. Using Cypress.
bash
npm prepare
sh e2e/exec-modelize.sh
npm run test:e2e -- --spec "**/graph.cy.js"
CI
For each PR and commit at "develop" branch, unit and e2e tests are executed. In case of e2e tests fail, you can download .zip contains screenshots and .html files are tested by Cypress.
Concepts
Graph
Cosma read files (.md, .csv and .json) to extract Records. Each Record contains metadatas (id, title, types, tags…) and links to other Records. Links are parsed from files content, as wikilinks [[link]] or quotes @author. Each Record became a node and links became edges on a graph. This process is made by the software named Cosmographe. Cosma finally exports .html file, which is visualization tool for the graph. This file is called Cosmoscope.
User give .yml config file contains options to control Records extraction and Cosmoscope display. For exemple, config file contains types for records and links. Cosma will remove unknows types from graph entities.
Owner
- Name: GraphLab
- Login: graphlab-fr
- Kind: organization
- Location: France
- Website: https://www.graphlab.fr
- Repositories: 8
- Profile: https://github.com/graphlab-fr
Citation (CITATION.cff)
cff-version: 1.2.0
title: Cosma
message: Please cite this software using these metadata.
type: software
authors:
- given-names: Arthur
family-names: Perret
affiliation: Université Bordeaux Montaigne
orcid: 'https://orcid.org/0000-0002-4130-6669'
- given-names: Guillaume
family-names: Brioudes
affiliation: Université Bordeaux Montaigne
- given-names: Clément
family-names: Borel
affiliation: Université Bordeaux Montaigne
- given-names: Olivier
family-names: Le Deuff
affiliation: Université Bordeaux Montaigne
orcid: 'https://orcid.org/0000-0003-0721-5779'
identifiers:
- type: doi
value: 10.5281/zenodo.5920615
repository-code: 'https://github.com/graphlab-fr/cosma/'
url: 'https://cosma.graphlab.fr'
repository: 'https://zenodo.org/record/5920616'
license: GPL-3.0-or-later
GitHub Events
Total
- Create event: 33
- Issues event: 7
- Release event: 7
- Watch event: 22
- Delete event: 30
- Issue comment event: 33
- Push event: 136
- Pull request review comment event: 8
- Pull request review event: 9
- Pull request event: 54
- Fork event: 5
Last Year
- Create event: 33
- Issues event: 7
- Release event: 7
- Watch event: 22
- Delete event: 30
- Issue comment event: 33
- Push event: 136
- Pull request review comment event: 8
- Pull request review event: 9
- Pull request event: 54
- Fork event: 5
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 0
- Total pull requests: 17
- Average time to close issues: N/A
- Average time to close pull requests: 5 days
- Total issue authors: 0
- Total pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 13
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 0
- Pull requests: 17
- Average time to close issues: N/A
- Average time to close pull requests: 5 days
- Issue authors: 0
- Pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 13
- Bot issues: 0
- Bot pull requests: 1
Top Authors
Issue Authors
- IgnacioHeredia (4)
- GuillaumeHM (3)
- mefor44 (2)
- infologie (2)
- mcaruel (1)
- PhilB-RLB (1)
- carsanbu (1)
- lazycodeman (1)
- adam-devel (1)
- certainlyNotHeisenberg (1)
- Jonathan-Zollinger (1)
Pull Request Authors
- Myllaume (52)
- dependabot[bot] (1)
- infologie (1)
- adam-devel (1)
- snowsign (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- npm 299 last-month
- Total dependent packages: 1
- Total dependent repositories: 1
- Total versions: 28
- Total maintainers: 2
npmjs.org: @graphlab-fr/cosma
Cosma is a document graph visualization tool. It modelizes interlinked Markdown files and renders them as an interactive network in a web interface.
- Homepage: https://cosma.arthurperret.fr/
- License: GPL-3.0-or-later
-
Latest release: 2.5.4
published over 1 year ago
Rankings
Maintainers (2)
Dependencies
- electron ^17.1.2 development
- electron-installer-debian ^3.1.0 development
- electron-packager ^15.4.0 development
- @zettlr/citr ^1.2.2
- citeproc ^2.4.62
- glob ^7.2.0
- js-yaml ^4.1.0
- markdown-it ^12.3.2
- markdown-it-attrs ^4.1.3
- moment ^2.29.1
- nunjucks ^3.2.3
- slugify ^1.6.5
- yaml-front-matter ^4.1.1
- @babel/core ^7.20.5 development
- @babel/preset-env ^7.20.2 development
- @faker-js/faker ^7.5.0 development
- babel-loader ^9.1.0 development
- chai ^4.3.6 development
- chai-fs ^2.0.0 development
- cypress ^10.9.0 development
- mocha ^10.0.0 development
- prettier 2.8.0 development
- webpack ^5.74.0 development
- webpack-cli ^4.10.0 development
- webpack-dev-server ^4.11.1 development
- @zettlr/citr ^1.2.2
- axios ^0.27.2
- citeproc ^2.4.62
- csv-parse ^5.3.0
- d3 ^4.13.0
- d3-array ^2.12.1
- d3-scale ^3.3.0
- fuse.js ^6.6.2
- glob ^7.2.0
- graphology ^0.25.1
- graphology-traversal ^0.3.1
- hotkeys-js ^3.10.0
- markdown-it ^13.0.1
- nunjucks ^3.2.3
- slugify ^1.6.5
- yaml ^2.2.1