Foundation Base
A Clojure-first toolkit for building, generating, testing, and operating polyglot systems.
Foundation Base combines reusable Clojure libraries, developer tooling, language generation, and runtime integration in one repository. Start with the area that matches what you want to do; you do not need to understand the entire codebase first.
0.1 Choose your path
Foundation Base supports several distinct workflows. Pick one entry point and expand from there.
Use reusable Clojure infrastructure
Collections, concurrency, filesystems, strings, time, tasks, scheduling, configuration, data handling, and system utilities.
Generate code for other languages
Use Hara books and grammars to emit JavaScript, Lua, Python, Go, SQL, Solidity, and other targets from a shared Clojure authoring model.
Compare source with generated projects
Follow walkthroughs and open authored Clojure source, build definitions, generated repositories, and reproduction commands.
Test, document, query, and maintain code
Use code.test, code.doc, code.query, code.manage, project metadata, build tools, and analysis utilities.
Build portable application layers
Explore xt.lang, xt.db, xt.net, xt.event, xt.substrate, walkthroughs, and parity examples built on top of the language tooling.
Work on Foundation Base
Set up the repository, run targeted tests, update documentation, and prepare focused pull requests.
1 Repository map
Standard libraries
Reusable infrastructure and application-level utilities.
Development tools
Testing, documentation, structural queries, maintenance, project tooling, and analysis.
Languages and runtimes
Grammar-driven code generation, typing, target models, and runtime adapters.
Portable libraries
Cross-target libraries and application layers built with the language tooling.
2 Quick start
Foundation Base currently uses a local Maven installation workflow. Install Java 21 and Leiningen, then clone and install the project.
git clone [email protected]:zcaudate-xyz/foundation-base.git\ncd foundation-base\nlein install\nlein repl
2.1 Try a standard-library helper
(require '[std.lib :as h])\n\n(h/time-ms)\n(h/pl \"Hello Foundation!\")
2.2 Generate target-language code
hara.lang stores code in a reusable intermediate form and emits it through a target grammar. The language tooling also supports modules, dependency tracking, inspection, testing, and runtime execution.
(require '[hara.lang :as l])\n\n(l/emit-as :js '(+ 1 2 3))\n;; => \"1 + 2 + 3\"
2.3 Run a targeted test
Foundation Base uses code.test, a fact-based test framework. Targeted namespace runs are the recommended development workflow because some test groups require optional runtimes and external services.
lein test :only std.lib.collection-test\nlein test :with std.lib
3 How to interact with the project
Depend on the modules you need
Install locally, use documented public namespaces, and check the relevant guide and tests before adopting an unfamiliar subsystem.
Follow one focused workflow
Emit a small JS or Lua form, run one code.test namespace, inspect a generated project, and browse the matching documentation page.
Make targeted changes
Use the contributor guide for environment setup, conventions, documentation generation, and pull-request expectations.
Browse topic-oriented pages
Wiki-ready Markdown pages are kept in the repository and can be synchronized to GitHub Wiki after it is initialized.
4 Project status
Foundation Base contains production-used libraries, evolving developer tooling, and experimental language/runtime integrations. Documentation should identify subsystems as Stable, Usable, or Experimental so readers can understand the expected level of compatibility and support.