Ciphereditor
Web app for cryptography, coding and data encouraging beginners and pros alike to explore new operations and build own workflows.
Install / Use
/learn @wierklu/CiphereditorREADME
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
<details><summary>Use of Open Source fonts</summary>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.
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.
</details>This is a project by Wierk and contributors.
Related Skills
bluebubbles
343.1kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
343.1kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
