q

slices.network / quickslice

Auto-indexing service and GraphQL API for AT Protocol Records

Pull this image

docker pull atcr.io/slices.network/quickslice:latest

Overview

quickslice

Quickslice is a quick way to spin up an AppView for AT Protocol applications. Import your Lexicon schemas and you get a GraphQL API with OAuth authentication, real-time sync from the network, and joins across record types without setting up a database or writing any backend code.

Warning
This project is in early development. APIs may change without notice.

What Quickslice Does

  • Connects to Jetstream and tracks the record types defined in your Lexicons
  • Indexes relevant records into a database (SQLite or Postgres)
  • Generates GraphQL queries, mutations, and subscriptions from your Lexicon definitions
  • Handles OAuth and writes records back to the user’s PDS
  • Enables joins by DID, URI, or strong reference, so you can query a status and its author’s profile in one request

Example

The status lexicon (xyz.statusphere.status):

{
  "lexicon": 1,
  "id": "xyz.statusphere.status",
  "defs": {
    "main": {
      "type": "record",
      "key": "tid",
      "record": {
        "type": "object",
        "required": ["status", "createdAt"],
        "properties": {
          "status": {
            "type": "string",
            "minLength": 1,
            "maxGraphemes": 1,
            "maxLength": 32
          },
          "createdAt": { "type": "string", "format": "datetime" }
        }
      }
    }
  }
}

Querying the status records:

query {
  xyzStatusphereStatus(
    first: 50
    sortBy: [
      { field: createdAt, direction: DESC }
    ]
    where: {
      status: { contains: "👍" }
    }
  ) {
    edges {
      node {
        uri
        did
        status
        createdAt
      }
      cursor
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Quick Start

Docker

Run Quickslice locally with Docker:

docker compose up --build

Open http://localhost:8080 and login with your Bluesky handle.

For PostgreSQL instead of SQLite:

docker compose -f docker-compose.postgres.yml up --build

Native Development

For development without Docker:

Prerequisites:

  • Gleam v1.13+
  • dbmate for migrations
  • Node.js 18+ (for client build)

Setup:

# Server
cd server
cp .env.example .env
make db-setup-sqlite
gleam run

# Client (rebuild after changes)
cd client
npm install
gleam run -m lustre/dev build

See server/README.md for detailed configuration.

Documentation

Structure

  • server/ - Main server with database layer, GraphQL API, and Jetstream ingestion
  • lexicon_graphql/ - GraphQL schema generation from AT Protocol Lexicons
  • atproto_car/ - CAR (Content Addressable aRchive) file parsing for backfills
  • client/ - Web-based GraphQL playground and admin UI
  • quickslice-client-js/ - JavaScript client library
  • www/ - Documentation website

License

Apache License 2.0

Tags

latest Multi-arch Attestations
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:latest
sha-b28b31f Multi-arch Attestations
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-b28b31f
0 Multi-arch Attestations
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0
0.20 Multi-arch Attestations
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.20
0.20.2 Multi-arch Attestations
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.20.2
sha-1803dbd Multi-arch Attestations
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-1803dbd
0.20.1 Multi-arch Attestations
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.20.1
sha-dc68c3d Multi-arch Attestations
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-dc68c3d
0.20.0 Multi-arch Attestations
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.20.0
sha-2e1ee80 Multi-arch Attestations
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-2e1ee80
0.19 Multi-arch Attestations
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.19
0.19.0 Multi-arch Attestations
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.19.0
sha-b53f5df Multi-arch Attestations
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-b53f5df
0.18 Multi-arch Attestations
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.18
0.18.1 Multi-arch Attestations
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.18.1
sha-62aeb7c Multi-arch Attestations
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-62aeb7c
0.18.0 Multi-arch Attestations
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.18.0
sha-b21df6f Multi-arch Attestations
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:sha-b21df6f
0.17 Multi-arch Attestations
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.17
0.17.5 Multi-arch Attestations
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.17.5
0.17.4 Multi-arch Attestations
sha256:c29de795d18b75537bd4d065ab9fd018448398d5dd565c54cdd530c13893338b
linux/amd64 linux/arm64
docker pull atcr.io/slices.network/quickslice:0.17.4

Manifests

Multi-arch Attestations
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
Tags: latest, 0, 0.20, 0.20.2, sha-b28b31f
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
Tags: 0.20.1, sha-1803dbd
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
Tags: 0.20.0, sha-dc68c3d
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
Tags: 0.19.0, 0.19, sha-2e1ee80
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
Tags: 0.18, 0.18.1, sha-b53f5df
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
Tags: 0.18.0, sha-62aeb7c
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
Tags: 0.17.5, 0.17, sha-b21df6f
linux/amd64 linux/arm64
Multi-arch Attestations
sha256:c29de795d18b75537bd4d065ab9fd018448398d5dd565c54cdd530c13893338b
Tags: 0.17.4
linux/amd64 linux/arm64