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
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 sha256:fe9e5b315cf5671367b11c41123d38eb2896f5708420d2cd1a0a2f825498672f
linux/arm64 sha256:30b5b3932ae5e913fc2cbacb1cafae95d46e54a0962e7d59821fcc19d248bd5b
docker pull atcr.io/slices.network/quickslice:latest
sha-b28b31f Multi-arch
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 sha256:fe9e5b315cf5671367b11c41123d38eb2896f5708420d2cd1a0a2f825498672f
linux/arm64 sha256:30b5b3932ae5e913fc2cbacb1cafae95d46e54a0962e7d59821fcc19d248bd5b
docker pull atcr.io/slices.network/quickslice:sha-b28b31f
0 Multi-arch
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 sha256:fe9e5b315cf5671367b11c41123d38eb2896f5708420d2cd1a0a2f825498672f
linux/arm64 sha256:30b5b3932ae5e913fc2cbacb1cafae95d46e54a0962e7d59821fcc19d248bd5b
docker pull atcr.io/slices.network/quickslice:0
0.20 Multi-arch
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 sha256:fe9e5b315cf5671367b11c41123d38eb2896f5708420d2cd1a0a2f825498672f
linux/arm64 sha256:30b5b3932ae5e913fc2cbacb1cafae95d46e54a0962e7d59821fcc19d248bd5b
docker pull atcr.io/slices.network/quickslice:0.20
0.20.2 Multi-arch
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
linux/amd64 sha256:fe9e5b315cf5671367b11c41123d38eb2896f5708420d2cd1a0a2f825498672f
linux/arm64 sha256:30b5b3932ae5e913fc2cbacb1cafae95d46e54a0962e7d59821fcc19d248bd5b
docker pull atcr.io/slices.network/quickslice:0.20.2
sha-1803dbd Multi-arch
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
linux/amd64 sha256:2929f1c5deea2196a5bd22faaf231bdf6f819afacd877cc5579fe424adb2bf3c
linux/arm64 sha256:274b9d54fc16e7621450be28f0c5dd53d4555fb17912f83a87fff8b51ab66df6
docker pull atcr.io/slices.network/quickslice:sha-1803dbd
0.20.1 Multi-arch
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
linux/amd64 sha256:2929f1c5deea2196a5bd22faaf231bdf6f819afacd877cc5579fe424adb2bf3c
linux/arm64 sha256:274b9d54fc16e7621450be28f0c5dd53d4555fb17912f83a87fff8b51ab66df6
docker pull atcr.io/slices.network/quickslice:0.20.1
sha-dc68c3d Multi-arch
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
linux/amd64 sha256:ad6cd5261bf2ac30ebf44b97b3ade12df30787bc60a0cfdcf068afe4e84f654f
linux/arm64 sha256:95a19f3762f982a1e2a21bd2b62bf15623ce562a2c34128e607301722d16f008
docker pull atcr.io/slices.network/quickslice:sha-dc68c3d
0.20.0 Multi-arch
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
linux/amd64 sha256:ad6cd5261bf2ac30ebf44b97b3ade12df30787bc60a0cfdcf068afe4e84f654f
linux/arm64 sha256:95a19f3762f982a1e2a21bd2b62bf15623ce562a2c34128e607301722d16f008
docker pull atcr.io/slices.network/quickslice:0.20.0
sha-2e1ee80 Multi-arch
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
linux/amd64 sha256:7c10d62990a1be30df22ac9f11dba7d9540d2ff6eb5b52b3d4b5b6164a99ca7d
linux/arm64 sha256:d0e3e233e8243694c9ab3fc2f74d8136cbf599e0c783b9dac4301a7617d3fcb8
docker pull atcr.io/slices.network/quickslice:sha-2e1ee80
0.19 Multi-arch
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
linux/amd64 sha256:7c10d62990a1be30df22ac9f11dba7d9540d2ff6eb5b52b3d4b5b6164a99ca7d
linux/arm64 sha256:d0e3e233e8243694c9ab3fc2f74d8136cbf599e0c783b9dac4301a7617d3fcb8
docker pull atcr.io/slices.network/quickslice:0.19
0.19.0 Multi-arch
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
linux/amd64 sha256:7c10d62990a1be30df22ac9f11dba7d9540d2ff6eb5b52b3d4b5b6164a99ca7d
linux/arm64 sha256:d0e3e233e8243694c9ab3fc2f74d8136cbf599e0c783b9dac4301a7617d3fcb8
docker pull atcr.io/slices.network/quickslice:0.19.0
sha-b53f5df Multi-arch
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
linux/amd64 sha256:cc5ea3c0d9a146fafe45a2e50527d1b08f880ba98ed463caf617276f47f806da
linux/arm64 sha256:73f5f14d0a57c366e29e57ea3afe7f2c51ac8aa56bc5bb2c60621c1512392ed1
docker pull atcr.io/slices.network/quickslice:sha-b53f5df
0.18 Multi-arch
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
linux/amd64 sha256:cc5ea3c0d9a146fafe45a2e50527d1b08f880ba98ed463caf617276f47f806da
linux/arm64 sha256:73f5f14d0a57c366e29e57ea3afe7f2c51ac8aa56bc5bb2c60621c1512392ed1
docker pull atcr.io/slices.network/quickslice:0.18
0.18.1 Multi-arch
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
linux/amd64 sha256:cc5ea3c0d9a146fafe45a2e50527d1b08f880ba98ed463caf617276f47f806da
linux/arm64 sha256:73f5f14d0a57c366e29e57ea3afe7f2c51ac8aa56bc5bb2c60621c1512392ed1
docker pull atcr.io/slices.network/quickslice:0.18.1
sha-62aeb7c Multi-arch
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
linux/amd64 sha256:3f2118d9c3797617f54b4011e7efaacc0e1d4784217ddaf29ea763405b58792c
linux/arm64 sha256:aa12e8da5d379171889eedfb667f7d4d0974fc23f27e02ac5c8f69809f3ce4d9
docker pull atcr.io/slices.network/quickslice:sha-62aeb7c
0.18.0 Multi-arch
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
linux/amd64 sha256:3f2118d9c3797617f54b4011e7efaacc0e1d4784217ddaf29ea763405b58792c
linux/arm64 sha256:aa12e8da5d379171889eedfb667f7d4d0974fc23f27e02ac5c8f69809f3ce4d9
docker pull atcr.io/slices.network/quickslice:0.18.0
sha-b21df6f Multi-arch
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
linux/amd64 sha256:7febf2cdf46ed9849e67c8b8e906bcefd53ab97cad5140d90923d86eb49c5b80
linux/arm64 sha256:65dbf5c4b463ae01cf866b56a735534efe40af3bbae8a17d35d957e65c8492dd
docker pull atcr.io/slices.network/quickslice:sha-b21df6f
0.17 Multi-arch
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
linux/amd64 sha256:7febf2cdf46ed9849e67c8b8e906bcefd53ab97cad5140d90923d86eb49c5b80
linux/arm64 sha256:65dbf5c4b463ae01cf866b56a735534efe40af3bbae8a17d35d957e65c8492dd
docker pull atcr.io/slices.network/quickslice:0.17
0.17.5 Multi-arch
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
linux/amd64 sha256:7febf2cdf46ed9849e67c8b8e906bcefd53ab97cad5140d90923d86eb49c5b80
linux/arm64 sha256:65dbf5c4b463ae01cf866b56a735534efe40af3bbae8a17d35d957e65c8492dd
docker pull atcr.io/slices.network/quickslice:0.17.5
0.17.4 Multi-arch
sha256:c29de795d18b75537bd4d065ab9fd018448398d5dd565c54cdd530c13893338b
linux/amd64 sha256:fc3eba52420b5aac4bbf8eb44ed256725c16723a2cd5be3d9753ce08b4b892fa
linux/arm64 sha256:7fdb69395c98d228b653e3aba496e4a719bad1679acec771721e5e6ebd0532c5
docker pull atcr.io/slices.network/quickslice:0.17.4

Manifests

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