Web UI
- Monaco editor with Elixir syntax highlighting, auto-closing brackets, intellisense
- IDE-style error diagnostics with squiggly underlines
- Format button, example query cards, collapsible packages
- Loading spinner, sticky editor, URL state (
?q=), hex.pm links
- Load more pagination, thin scrollbar
API
- Cursor-based pagination (
cursor / next_cursor)
- Rate limiting via Hammer (60 req/min,
x-ratelimit-* headers)
Query Engine
- DSL
limit: clause
- Kind filtering —
def patterns skip module/expression fragments
- Keyset pagination replaces OFFSET in streaming
- Correct preview line numbers
Security
Code.eval_string removed — replaced with safe AST interpreter
- Dune sandbox for value expressions in predicates
- Dangerous code rejected at parse time
Tests
- 5 Playwright browser tests + 10 API integration tests
- 65 total (50 unit + 15 feature)
https://hex.pm/packages/exograph/0.4.0