/ciphereditor

Web app for cryptography, coding and data encouraging beginners and pros alike to explore new operations and build own workflows.

Primary LanguageTypeScriptMIT LicenseMIT

MIT license Standard Code Style

Your playground for cryptography, coding & data

ciphereditor is a web app for cryptography, coding, and data encouraging beginners and pros alike to explore new operations and build own workflows – ciphereditor.com

Repository structure

As a monorepo this repository contains multiple packages that share common dependencies or depend on each other. All packages listed below share the same version.

Packages

The following packages contain the logic necessary to build the app itself (excl. operations).

  • app-web - Core web app built on React and Redux Toolkit (requires processor and library)
  • app-desktop - Desktop application source built on app-web and Electron
  • website - Official ciphereditor.com website app-web is embedded in (closed source)
  • processor - JavaScript sandbox and “runtime environment” for extensions
  • library - Logic, schemas and types shared between the app and extensions

Extensions

Extensions provide operations, the nodes or methods you can use on the ciphereditor canvas. They run in the environment created by the app packages listed above.

  • codepages - Operations related to character encodings
  • dictionary - Operations related to dictionary-based translations
  • essentials - Essential operations
  • forge - Operations related to algorithms offered by the forge package
  • hash - Operations related to cryptographic hash functions
  • pgp - Operations related to the OpenPGP protocol

Development setup

Make sure you have Node.js installed and use the same version as written in .nvmrc.

To build the project on your own machine download a release or clone the entire repository using Git by issuing the following command in your terminal:

git clone git@github.com:wierkstudio/ciphereditor.git

Install the dependencies for all packages within the repository root folder using the following command. You need to repeat this step every time package-lock.json changes.

npm install

Environment variables used during development can be set in .env.local. Create it from the example file and fill in the blanks as needed:

cp .env.local.example .env.local

(Re-)build the processor package from source like so:

npm run processor-build

As some of the browser features the web app depends on require a secure HTTPS connection to the server, we recommend you to generate a self-signed certificate to be used during development. To do this, run the following OpenSSL command in the repository root folder:

openssl req -x509 -newkey rsa:4096 -keyout assets/localhost.key -out assets/localhost.crt -sha256 -days 365 -nodes -subj '/CN=localhost'

It will create a new certificate and place the necessary files at assets/localhost.key and assets/localhost.crt that will automatically be used by the web app dev server.

Finally, start the web app dev server using this command:

npm run app-web-start

It will make the app available at https://localhost:3010. As the certificate in use is self-signed you will get a nasty warning by the browser which you can ignore. To stop the server, press Ctrl+C.

Find the full list of available project commands in the root package.json.

License

The source code in this repository is published under the MIT license. See LICENSE.txt.

Contributing

If you consider contributing to this project, please read this first.

Acknowledgements

Use of Open Source fonts

We use fonts licensed under the SIL Open Font License, 1.1:

Use of Iconic Pro icons

We use Iconic Pro icons in this project.

Copyright (c) Iconic

Iconic Pro icons are copyrighted. Redistribution is not permitted. Use in source and binary forms, with or without modification, is allowed if you own an Iconic Pro license.


This is a project by Wierk and contributors.