arcology/README.org

8.6 KiB
Raw Permalink Blame History

The Arcology Project: Django Edition Landing Page

The Arcology Project

The Arcology Project is the publishing platform and social layer of my Concept Operating System's Knowledge Management system. It is a web publishing platform built to present my literate programming platform and my public knowledge.

The goal, in short, is to be able to publish and link to any node in a set of org-mode documents without needing to do file-system operations or run any commands other than to add some markup to the document in question. When someone asks me "hey how do I do XYZ on Linux" or "what are your thoughts on NASCAR?" I can just link them to a page answering that question and showing them how to do the thing themselves with code they can copy or use directly by adding the org file to their own org-roam Knowledge Base.

A page is updated or published by simply editing the org-mode document and saving it with some metadata attached, this can be done on a desktop in Emacs, or on Mobile with a "lesser" text editor in a pinch. It will sync to the server and the server will notice the changes and immediately update the databases which drive routing and rendering.

For a history of this project see The Arcology Project, and to see it in action read on.

The Arcology Project: Django Edition

This version of the Arcology begins to subsume behavior of my Emacs Lisp-based Arroyo Systems org-mode metadata extraction and query engine to provide a sort of meta-computing programmable layer to your computer and folds the publishing feature-set in the Arcology FastAPI prototype in to a more unified codebase and architecture.

The new arroyo_rs Native Org Parser removes the Arcology's dependency on Emacs and emacsql">emacsql in favor of Rust and roam:pyo3 to generate the database and uses Django's ORM to persist and manage the pages' metadata, generating higher-level metadata along the way, all faster than you can blink.

It allows a user to host a website using a slice of an existing org-roam Knowledge Base, and also use The Arcology Management Commands to query the structure of their notes.

What I mean by the latter point there is that file's can be annotated with key / value pairs and these [3-tuples/threeples] can be queried and normalized and built upon to implement the features of The Complete Computing Environment where any page in an org-roam directory can add code to your NixOS environment or Emacs configuration to give your computer and your knowledge base new powers. You can apply Literate Programming to your computers and their software stack.

The Arcology contains much of the Arroyo Systems Management software, but I may change that in the future by modularizing this codebase to allow for arroyo-only usage or arcology-only usage, or at the very least figure out how to more cleanly separate the Arroyo and Arcology code modules.

The Complete Computing Environment provides a decent UX and starter configuration and document design for this system. The Arcology's Django edition promises to add new meta-powers to this programming toolkit while making it more feasible for others to replicate the system and build their own Arcology.

Usage

ofc i need to flesh all this out still. don't use this, for now.

Reading the Arcology Project (or: A table of contents)

This project is a living document. It's Literate Programming powered by Org Babel. You shouldn't need to read all the code to run it, but if you need to it oughta be well documented.

Rough Timeline and Task List

INPROGRESS tests, unit tests, functional tests with org-documents, eugh.

  • State "INPROGRESS" from "NEXT" [2024-02-12 Mon 12:10]

INPROGRESS Prometheus and basic page hit count/analytics

  • State "INPROGRESS" from "NEXT" [2024-02-12 Mon 12:10]

DONE robots.txt

  • State "DONE" from "NEXT" [2024-02-12 Mon 12:10]

DONE Deployment and NixOS module to testing-subdomains

  • State "DONE" from "NEXT" [2024-02-17 Sat 21:27]

NEXT Sitemap

CLOCK: [2024-02-26 Mon 15:22][2024-02-26 Mon 16:16] => 0:54 CLOCK: [2024-02-26 Mon 13:24][2024-02-26 Mon 14:59] => 1:35

NEXT Consider having a second sqlite3 with server-written state like hit counts and fedi urls and whatnot that i am nervous to store in a DB right now.

there is a django doc on using multiple DBs, probably want to build a DB router and stuff all the write-paths in to one Django application.

Hey Smell This

Like most of my software, this software is released as is and should be used only for entertainment purposes. I care a lot about Free Software, but I'm not sure this is. It's ideological, opinionated, personal software. Personal Software Can Express Ethics and you might not like the ones this one expresses. You may be able to nix run this to bootstrap it yourself, but you should think long and hard about whether you'd like to.