Sandbar is a Clojure web service that implements an RDFS-inspired type system layered on top of Datomic. It provides a metamodel for defining typed entities with class hierarchies, properties with domain/range constraints, and a comprehensive REST API for querying the type system.
| Document | Description |
|---|---|
| Quick Start | Get up and running in minutes |
| Architecture | System design, components, and code organization |
| Metamodel Reference | Complete class hierarchy and type system documentation |
| REST API Reference | HTTP endpoints for querying the metamodel |
| Development Guide | REPL workflow, testing, and extending the system |
| Zorp's Footwear Emporium | A lighthearted tutorial featuring an alien sneaker salesman on Pluto |
# Start the application
lein run
# Start REPL for development
lein repl
# Run tests
lein test
# Build uberjar
lein uberjar
;; In the REPL
(require '[sandbar.core :refer [go stop]])
(go) ;; Start the system
(stop) ;; Stop the system
# System status
curl http://localhost:8080/api/status
# List all classes
curl http://localhost:8080/api/store/classes
# Get class details
curl http://localhost:8080/api/store/classes/dt/Resource
# List properties
curl http://localhost:8080/api/store/properties
sandbar/
├── config/ # EDN configuration files
├── doc/ # Documentation (you are here)
├── schema/ # Datomic schema definitions (EDN)
├── src/sandbar/
│ ├── api/ # REST API handlers
│ ├── db/ # Database layer (Datomic, datatype)
│ ├── server/ # Server components (Pedestal, nREPL)
│ ├── service/ # HTTP service layer
│ └── util/ # Utilities
└── test/ # Test suites
These documents contain design notes from the original development:
Copyright (C) Dan Lentz
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |