arachne logo

Welcome to Arachne's documentation site! Here you will find everything you need to start using Arachne, as well as reference and API documentation.

What is Arachne?

Arachne is a web framework for Clojure. It aims to be more than a collection of libraries, and provide a coherent, extensible skeleton for rapid development of robust, industrial-scale web applications.

It intends to exhibit the following qualities:

  • Modularity. Each aspect of Arachne's functionality is delivered as a separate module.
  • Cohesion. Despite being highly modular, each module exposes clear integration points, allowing modules to build on eachother to deliver highly sophisticated composite behavior.
  • Data-driven. Each Arachne application is, at heart, a database specifying what programmatic entities exist and how they are linked.

Quick Start

Arachne provides a basic command-line project generator tool that you can use to create projects. To install this tool, simply download the shell script, place it somewhere on your system path (~/bin is usually good), and chmod it to be executable.

URL="https://raw.githubusercontent.com/arachne-framework/arachne-proj-gen/release/arachne.sh"
curl $URL > ~/bin/arachne
chmod +x ~/bin/arachne

Then, you can call it anywhere to create a new project, using the syntax arachne new <project-name> <template>, where the project name is a fully qualified Clojure symbol, and the template is the Git URI of a template repository.

The namespace portion of the project name tells Arachne what kind of namespace structure to use for your project.

A good template to get started with is the enterprise-spa, which sets up a robust single-page Arachne that uses Leiningen, Datomic, ClojureScript, Figwheel and Rum.

For example:

arachne new my.org/myapp git@github.com:arachne-framework/enterprise-spa.git

That's it! You've generated a project into a directory named myapp. You can open up your favorite editor and start hacking, or run it right away:

cd myapp
lein run :my.org/myapp :my.org.myapp/runtime

You'll see it compile some ClojureScript, and then you can try it out by hitting http://localhost:8080 in your browser.

Tutorials

The above technique lets you get started quickily, but if you want to actually understand what's going on you'll probably want to try out the tutorials. These build a similar project, but break it down step by step and explain every concept as it appears.

  1. creating a new project
  2. handling HTTP requests
  3. using dependency injection
  4. using request interceptors
  5. serving static assets
  6. compiling ClojureScript
  7. dynamic ClojureScript development with Figwheel

Architectural Overview

See the overview for a high-level view of Arachne's architecture, and an explanation of how all the pieces fit together.

Modules

Arachne isn't a monolithic project; it is composed of many small modules, each designed to offer a vertically-integrated set of functionality.

All Arachne applications are built by assembling a selection of suitable modules, both from "official" modules and third-party modules. In fact, all Arachne projects are themselves modules and can be required by other Arachne projects.

Arachne's core modules include:

Visit these module's documentation pages for a detailed explanation of the concepts that they define, and how to use them in the context of a project.

Contributing

Although we're still in an early alpha phase, contributions are welcome! Please see our Contributing Guide to see how you can get involved.