/asciigrid

A WYSIWYG Editor for ASCII Diagrams

Primary LanguageJavaScriptMIT LicenseMIT

AsciiGrid

AsciiGrid is WYSIWYG editor for ASCII/Svgbob diagrams.

AsciiGrid is available at mbarkhau.github.io/asciigrid.

Features:

  • Grid based editing (as opposed to line based)
  • Shareable URLs (that have all diagram data encoded in the URL, so no database backend is required)
  • Copy/Paste, Undo/Redo, Pan/Zoom, etc.
  • Keyboard Shortcuts (Ctrl-A, Home, End, ...)
Name role since until
Manuel Barkhau (mbarkhau@gmail.com) author/maintainer 2019-12 -

Example diagrams (from the svgbob-editor):

Software used:

Development

For local development on linux (maybe also macos), setup the virutal environment.

$ make venv
~/pyenvs/asciigrid/bin/python -m pip install -r requirements.txt
Collecting flask
  Downloading Flask-2.0.1-py3-none-any.whl (94 kB)
....
Installing collected packages: six, MarkupSafe, Werkzeug, pathlib2, Markdown, Jinja2, itsdangerous, click, markdown-svgbob, flask
Successfully installed Jinja2-3.0.1 Markdown-3.3.4 MarkupSafe-2.0.1 Werkzeug-2.0.1 click-8.0.1 flask-2.0.1 itsdangerous-2.0.1 markdown-svgbob-202107.1018 pathlib2-2.3.6 six-1.16.0

Then you can run a local development server.

$ make devhttp
ASCIIGRID_DEBUG=1 \
        ~/pyenvs/asciigrid/bin/flask run --port 8000 --reload
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:4000/ (Press CTRL+C to quit)
 * Restarting with stat

Docker

Port mapping :

$ make docker
docker build -t asciigrid .
Sending build context to Docker daemon  135.4MB
...
docker run -p 4000:80 -p 4001:4001 -it asciigrid
Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
.
[2021-09-10 15:19:25 +0000] [89] [INFO] Starting gunicorn 20.1.0
[2021-09-10 15:19:25 +0000] [89] [INFO] Listening at: http://0.0.0.0:4001 (89)
[2021-09-10 15:19:25 +0000] [89] [INFO] Using worker: sync
[2021-09-10 15:19:25 +0000] [90] [INFO] Booting worker with pid: 90