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:
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 ingestionlexicon_graphql/- GraphQL schema generation from AT Protocol Lexiconsatproto_car/- CAR (Content Addressable aRchive) file parsing for backfillsclient/- Web-based GraphQL playground and admin UIquickslice-client-js/- JavaScript client librarywww/- Documentation website
License
Apache License 2.0
Tags
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
docker pull atcr.io/slices.network/quickslice:latest
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
docker pull atcr.io/slices.network/quickslice:sha-b28b31f
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
docker pull atcr.io/slices.network/quickslice:0
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
docker pull atcr.io/slices.network/quickslice:0.20
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
docker pull atcr.io/slices.network/quickslice:0.20.2
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
docker pull atcr.io/slices.network/quickslice:sha-1803dbd
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
docker pull atcr.io/slices.network/quickslice:0.20.1
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
docker pull atcr.io/slices.network/quickslice:sha-dc68c3d
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
docker pull atcr.io/slices.network/quickslice:0.20.0
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
docker pull atcr.io/slices.network/quickslice:sha-2e1ee80
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
docker pull atcr.io/slices.network/quickslice:0.19
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
docker pull atcr.io/slices.network/quickslice:0.19.0
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
docker pull atcr.io/slices.network/quickslice:sha-b53f5df
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
docker pull atcr.io/slices.network/quickslice:0.18
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
docker pull atcr.io/slices.network/quickslice:0.18.1
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
docker pull atcr.io/slices.network/quickslice:sha-62aeb7c
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
docker pull atcr.io/slices.network/quickslice:0.18.0
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
docker pull atcr.io/slices.network/quickslice:sha-b21df6f
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
docker pull atcr.io/slices.network/quickslice:0.17
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
docker pull atcr.io/slices.network/quickslice:0.17.5
sha256:c29de795d18b75537bd4d065ab9fd018448398d5dd565c54cdd530c13893338b
docker pull atcr.io/slices.network/quickslice:0.17.4
Manifests
sha256:47c16407625a3a8143131c22910836088842cfb101caabba38ad8c0f8d6b7b55
sha256:bcff4567ce49f3b4333f9e80ca7027ae663dba30d22dc12678b49d3046b32801
sha256:52ec7639d6df5bda9d452ea1722080dc60f083bcc383d1a6eefb277af3faa9b8
sha256:6a649f8b5aa8602ab00a77ff05b50ea0030e48398a2ce4860c870882c6f5cf39
sha256:6b487057061a1ebd8037120462ea095ab72d804cbb09e06404f003a6ea46abb3
sha256:01b57f11db8602e6db9eab8d172a242755b0b016afa72770e7c65a9a7aebce49
sha256:d0d83a9c246c5b20299dfb03d892206daf8b9a6ddb8e963e03b56295e6ab6798
sha256:c29de795d18b75537bd4d065ab9fd018448398d5dd565c54cdd530c13893338b