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):
- Basic Shapes
- Quick Logo Scribbles
- Grids
- Graphics Diagram
- Sequence Diagrams
- Plot Diagrams
- Railroad Diagrams
- Statistical Charts
- Block Diagrams
- Mindmaps
- Circuit Diagrams
Software used:
- Svgbob to render ASCII -> SVG
- Pythonanywhere for server side rendering.
- coreui.io for icons
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
Port mapping :
- http://localhost:4000 -> asciigrid
- http://localhost:4001 -> bob2svg web service
$ 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