phx_literate/README.org

2.3 KiB

DEVELOP PHOENIX APPLICATIONS IN ORG MODE TODAY!

DEVELOP PHOENIX APPLICATIONS IN ORG MODE TODAY!

If you know why this is interesting, this may interest you.

I develop my websites and projects and my thinking using a powerful custom software system:

  • Linux runs on most hardware that I care about
  • Emacs provides a flexible programmable desktop environment built around a Lisp dialect and a wealth of powerful applications and libraries, a decent text editor.
  • Org Mode is an text markup and set of libraries for building outlined documents, extended to a task manager, calendar, flash card system, hypertext application environment
  • Org Roam adds graph capabilities to org-mode and a database cache

Org Mode has a feature called Babel. Babel allows you to embed code inside of Org Mode, and evaluate it on your system, export it to disk ("tangle it"), and move data between languages, for example using Python to generate and parse HTTP request and feeding the response in to R to be rendered. This is a MixTemplates template, designed to create a basic Phoenix web app developed in this fashion.

Usage

mix archive.install hex mix_generator
mix archive.install hex mix_templates
mix template.install git https://code.rix.si/rrix/phx_literate/
mix gen phx_literate poka_ijo

poka_ijo will now have a handful of org-mode docs and whatever else is needed. A Makefile! useful.

make init will tangle and compile the thing. make tangle will tangle every document that's out of date (based on a file touched in _build when this is run)

You should probably work inside the org-mode documents. The elixir files are in .gitignore, and theoretically they can be "de-tangled" back in to the org-mode using the links that are inserted when the files are tangled. You probably won't enjoy working on this if you don't do so using org-mode. You probably won't enjoy working on this if you do so using org-mode. Good luck.

I'll be developing quality of life improvements in my other projects and trying to backport them; mix gen doesn't support updating projects right now, so it's not quite simple to keep things up to date. This probably isn't something you should pick up unless you plan to run with it yourself.