cosma

Cosma is a document graph visualization tool. It modelizes interlinked Markdown files and renders them as an interactive network in a web interface.

https://github.com/graphlab-fr/cosma

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
Last synced: 9 months ago · JSON representation ·

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
Created almost 5 years ago · Last pushed 10 months ago
Metadata Files
Readme License Citation Authors

README.md

Cosma DOI

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

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
bug (10) enhancement (8)
Pull Request Labels
dependencies (1) javascript (1) enhancement (1)

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.

  • Versions: 28
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 299 Last month
Rankings
Stargazers count: 5.5%
Downloads: 7.0%
Forks count: 8.9%
Dependent repos count: 10.4%
Average: 10.6%
Dependent packages count: 21.0%
Maintainers (2)
Last synced: 10 months ago

Dependencies

package.json npm
  • 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
core/package.json npm
  • @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