Skip to content

zachhannum/orca

Repository files navigation

logo

Orca

Write and Publish Novels With Ease

Build and Test Release github release version github release downloads

app

🌟 About the Project

Orca (previously Calamus) is a React Electron application for writing and publishing novels.

🎯 Features

Orca is currently still in pre-alpha stages---not all features are available. For a feature roadmap, please visit our Project Board.

  • Open format project files (json)
  • Markdown Editor
  • LanguageTool Integration
  • Customizable Interface
  • Print-ready PDF export
  • Custom print formatting

🖊️ Write Your Next Novel

Orca has what you need to organize and write your next novel. Organize your project into folders and use Markdown to make writing a breeze.

👐 Open Format

Orca stores all of your project data in a human readable json format. In addition, all book content is written using Markdown, making all of your work truly portable. You can export all of your book's content into markdown files at any time.

.orca Format

Orca project files use the .orca file extension, but are really just json files (yes this means you can edit .orca files by hand, but it is not recommended!). See below for a table detailing the properties inside of a .orca file.

Property Name Description
bookTitle The novel's title.
bookSubTitle YThe novel's sub title. This is an optional property.
authorName The novel's author name.
seriesName The name of the series the novel is a part of. This is an optional property.
ISBN The novel's ISBN number.
language The language the novel is written in.
publisher The name of the novel's publisher.
content Array containing the novel's content. See a table detailing the Section below.
publishSettings PublishSettings object. See a table detailing PublishSettings below.

The content property contains a JSON array of the Section object type, detailed below.

Property Name Description
id A uniquely generated identifier.
name The section's name.
content Minified string of markdown content. Newlines are replaced with \n and " with \".
type Section type. One of 4 values: folder, maincontent, frontmatter, backmatter.
canHaveChildren true or false value indicating whether the Section can have children. Only valid for folder sections.
children A JSON array of Section[]. Only valid for folder sections.
collapsed true or false value indicating whether then section is collapsed. Only valid for folder sections.
depth Depth of the section in the tree. Starts at 0.
index Index of section related to its children. Starts at 0.
parentId For child sections, this is equal to the id of the section's parent

The PublishSettings object type contains the book's formatting settings for eBook and print PDF.

Property Name Description
dropCap Boolean value indicating whether or not to use a drop cap at the beginning of chapters.
dropCapEnableAdvancedSettings Boolean value for enabling advanced drop cap settings.
dropCapFont An advanced drop cap setting for setting the drop cap to a different font.
dropCapLineHeight An advanced drop cap setting for adjusting the line height of the drop cap.
dropCapBottomMargin An advanced drop cap setting for adjusting the bottom margin of the drop cap.
leadIn Lead in (first line of each chapter) type. Can be 'None', 'Small Caps', or 'Italics'
sceneBreak A string that will be used for scene breaks. Replaces horizontal rules.
rectoPageHeaders Header for recto (odd) pages. Can be 'None', 'Chapter Title', 'Book Title', or 'Author Name'
versoPageHeaders Header for verso (even) pages. Can be 'None', 'Chapter Title', 'Book Title', or 'Author Name'
paragraphFont Font to use for paragraph text. Can be any font installed on system.
fontSize Font size to use for paragraph text.
lineHeight Paragraph line height. Can be 'Single', '1.5', or 'Double'.
dropFolio Boolean value indicating whether or not to add a drop folio to the first page of each chapter.
topMargin Top margin of each page in inches.
bottomMargin Bottom margin of each page in inches.
insideMargin Inside margin of each page in inches.
outsideMargin Outside margin of each page in inches.
trimSize Trim size of the book. i.e., '5in x 8in'

📕 Print-ready PDF and EBook

Orca is equipped to format your novel for Print and Ebook publication, with pre-made themes and endless customization.

preview.mp4
preview_live.mp4

⚙️ Installation

Download the latest release here.

⌨️ Contributing

📜 Contribution Guidelines

TODO

🏃 Run Locally

Clone the project

  git clone https://github.com/midnightprioriem/orca.git

Go to the project directory

  cd my-project

Install dependencies

  yarn install

Start the app

  yarn start

🧪 Running Tests

To run tests, run the following command

  yarn test

💎 Acknowledgements