Skip to content

Epic: Full Quickslice Backend Integration #89

@renderghost

Description

@renderghost

Full Quickslice Backend Integration Epic

Migrate from a self-contained backend (OAuth + REST API + Database) to a headless architecture using Quickslice as the primary backend service.

Overview

Current Architecture:

  • Custom OAuth flow via @atproto/oauth-client-node
  • Session management with iron-session
  • PostgreSQL database with Kysely ORM
  • 15 REST API endpoints (src/app/api/)
  • ProfileRepository pattern for CRUD operations
  • ~1500 lines of backend boilerplate

Target Architecture:

  • Quickslice-managed OAuth
  • Quickslice session tokens
  • Quickslice GraphQL API (replaces REST endpoints)
  • Quickslice database abstraction
  • Lanyards becomes pure frontend (GraphQL client)
  • ~400 lines of frontend code

Why?

  1. Reliability: OAuth bugs (localhost vs 127.0.0.1) keep recurring
  2. Maintainability: Remove 600+ lines of ProfileRepository CRUD code
  3. Scalability: Quickslice-managed database and scaling
  4. Real-time: Quickslice enables Jetstream subscriptions
  5. Simplicity: Lanyards becomes frontend-only

Architecture: Current vs Target

Current (Self-Contained):

  • Browser → Next.js Frontend → REST API → ProfileRepository → AtpAgent → Bluesky PDS

Target (Headless via Quickslice):

  • Browser → Next.js Frontend (GraphQL client) → Quickslice GraphQL API → Bluesky PDS

Timeline: 4 Weeks

  • Week 1: Auth + GraphQL setup
  • Week 2: First module (Affiliations) migration
  • Week 3: Remaining modules migration
  • Week 4: Cleanup + Testing

Critical Blockers (Must resolve before starting)

  1. Understand Quickslice GraphQL schema generation
  2. Understand how Quickslice writes records to PDS
  3. Understand Quickslice session token management
  4. Quickslice OAuth vs AT Protocol OAuth decision

Files to Delete (Phase 3-4)

  • src/lib/oauth/ (entire directory)
  • src/lib/data/repository.ts (600+ lines)
  • src/app/api/ (all REST endpoints)
  • src/lib/db.ts
  • @atproto/oauth-client-node, kysely, iron-session dependencies

Files to Create

  • src/lib/graphql/client.ts
  • src/lib/graphql/hooks.ts
  • GraphQL query/mutation definitions

Risk Level: HIGH

This is a fundamental architectural change. Main risks:

  • Quickslice GraphQL schema compatibility
  • Session token management differences
  • Database migration data safety
  • PDS record write failures

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions