Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/curvenote/curvenote
Create, edit, share, and publish scientific and technical documents.
https://github.com/curvenote/curvenote
latex markdown pdf-generation science-research scientific-visualization writing-software
Last synced: 30 days ago
JSON representation
Create, edit, share, and publish scientific and technical documents.
- Host: GitHub
- URL: https://github.com/curvenote/curvenote
- Owner: curvenote
- License: mit
- Created: 2021-09-24T22:26:13.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-26T21:48:54.000Z (about 1 month ago)
- Last Synced: 2024-09-29T05:04:12.098Z (about 1 month ago)
- Topics: latex, markdown, pdf-generation, science-research, scientific-visualization, writing-software
- Language: TypeScript
- Homepage: https://curvenote.com/docs/cli
- Size: 16.6 MB
- Stars: 84
- Watchers: 6
- Forks: 9
- Open Issues: 104
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `curvenote`
[![curvenote on npm](https://img.shields.io/npm/v/curvenote.svg)](https://www.npmjs.com/package/curvenote)
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/curvenote/curvenote/blob/main/LICENSE)
[![CI](https://github.com/curvenote/curvenote/workflows/CI/badge.svg)](https://github.com/curvenote/curvenote/actions)Create, edit, share and publish scientific documents.
## Overview
`curvenote` is an open source library and command line interface (CLI) to create share and publish technical documents.
- Write papers and reports in Markdown and Jupyter ([docs](https://curvenote.com/docs/publish/authoring-in-myst))
- Create and share interactive websites ([docs](https://curvenote.com/docs/publish/tutorial-deploy-local))
- Export to [Word](https://curvenote.com/docs/write/export-microsoft-word), [LaTeX](https://curvenote.com/docs/write/export-latex), and [PDF](https://curvenote.com/docs/write/export-pdf) with any [template](https://github.com/curvenote/templates)In addition to being completely local, `curvenote` can optionally sync content to to allow you to work with collaborators who enjoy WYSIWYG editing, commenting & real time collaboration for technical documents.
## Get Started
Curvenote is available through Node and NPM. Unless you already have this on your system you will have to [install NodeJS](https://curvenote.com/docs/publish/installing-prerequisites). See [full install instructions](https://curvenote.com/docs/publish/installing) in the docs!
```bash
npm install -g curvenote
curvenote init
curvenote start
curvenote deploy
```[![](packages/curvenote/images/cli-init.png)](https://curvenote.com/docs/publish/tutorial-deploy-local)
## Built with Curvenote
Curvenote allows you to easily create, edit, and publish content to the web as a fast, optimized site with interactive citations, cross-referencing, math, and dynamic figures from Jupyter Notebooks.
Curvenote can be used to create all sorts of open-access content, click the links below to see some examples!
- [Courses](https://geosci-inversion.curve.space) & [books](https://climasoma.curve.space/)
- [Seminar](https://seminars.simpeg.xyz/) & [conference](https://transform.softwareunderground.org/) websites
- [Blogs](https://curvenote.com/blog) & [technical websites](https://www.stevejpurves.com/blog)
- [Papers](https://www.stevejpurves.com/la-palma-earthquakes) & [reports](https://www.stevejpurves.com/computational-finance)
- [Documentation](http://curvenote.com/docs)
- [Sharing Jupyter Notebooks](https://jarmitage.curve.space/)### Interactive and Linked
The default website you create can have interactive Jupyter Notebook features, and live-preview of cross-references and citations.
[PhD Thesis](https://phd.row1.ca/) with linked references, equations, and export to PDF.
[![](packages/curvenote/images/phd-simple.gif)](https://phd.row1.ca/)[Interactive Papers](https://www.stevejpurves.com/la-palma-earthquakes/interactive-timelines-altair) with Jupyter Notebooks and interactive visualizations.
[![](packages/curvenote/images/web-interactive.gif)](https://www.stevejpurves.com/la-palma-earthquakes/interactive-timelines-altair)These interactive scientific sites can be easily deployed on a hosting service called [curve.space](https://curve.space) or can also be hosted on your own custom domain.
## Work locally with Live Reload
The client library is entirely local, and rebuilds in ~50ms for most projects. Meaning you can preview your content as you are writing!
[![](packages/curvenote/images/live-reload.gif)](https://www.stevejpurves.com/la-palma-earthquakes/interactive-timelines-altair)
## Direct export from Curvenote
First login, see [authentication docs](https://curvenote.com/docs/publish/authentication) to get an API token.
```bash
curvenote token set
> YOUR_API_TOKEN
```Then you can directly export your curvenote documents to:
- Microsoft Word (.docx)
- Markdown (.md) - using MyST
- LaTeX (.tex)
- PDF (.pdf)```bash
curvenote export docx https://curvenote.com/@curvenote/blog/communicating-science communicating-science.docx
curvenote export md https://curvenote.com/@curvenote/blog/version-control-for-scientists version-control.md
curvenote export tex https://curvenote.com/@curvenote/blog/version-control-for-scientists version-control.tex -template plain_latex
curvenote export pdf https://curvenote.com/@curvenote/blog/version-control-for-scientists version-control.pdf -template arxiv_nips
```# Development
All dependencies for `curvenote` are included in this repository (a monorepo!).
## What's inside?
`curvenote` uses [npm](https://www.npmjs.com/) as a package manager. It includes the following packages/apps:
**Apps:**
- `curvenote`: the Curvenote command line interface (CLI)
- `curvespace`: the web-experience for Curvenote sites, using Remix**Packages:**
- `ui-providers`: React providers for references and site configuration
- `myst-to-react`: expose MyST content as an article, built with React
- `site`: components and utilities for building React and Remix sites
- `icons`: icons used throughout our projects, built for React
- `citation-js-utils`: utilities for using the citation-js library
- `eslint-config-custom`: `eslint` configurations
- `tsconfig`: `tsconfig.json`s used throughout the monorepoEach package and app is 100% [TypeScript](https://www.typescriptlang.org/).
### Versioning & Publishing
Curvenote uses [changesets](https://github.com/changesets/changesets) to document changes to this monorepo, call `npx changeset` and follow the prompts. Later, `npm run version` will be called and then `npm run publish`.
### Utilities
`curvenote` is built and developed using:
- [TypeScript](https://www.typescriptlang.org/) for static type checking
- [ESLint](https://eslint.org/) for code linting
- [Prettier](https://prettier.io) for code formatting### Build
To build all apps and packages, run the following command:
```
cd curvenote
npm run build
```### Develop
To develop all apps and packages, run the following command:
```
cd curvenote
npm run dev
```