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
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.
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 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
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
.
The source code in this repository is published under the MIT license. See LICENSE.txt.
If you consider contributing to this project, please read this first.
Use of Open Source fonts
We use fonts licensed under the SIL Open Font License, 1.1:
- LexendDeca[wght].ttf: Copyright 2019 The Lexend Project Authors (https://github.com/googlefonts/lexend)
- IBMPlexMono-Regular.ttf: Copyright 2017 IBM Corp. All rights reserved.
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.