CLUB
Dart package repository Open source · Self-hosted · Pub Spec v2

Your private pub.dev, self-hosted in one container.

CLUB is a self-hosted package repository for Dart and Flutter teams. It speaks the same protocol as pub.dev, so the commands your team already knows work unchanged — only the packages stay inside your infrastructure.

One container · Dart ≥ 3.0
Pub Spec v2 · Dart ≥ 3.0 · SQLite · Filesystem / S3 · FTS5 search · Bcrypt + SHA-256 tokens · Docker · Zero client patches ·
Pub Spec v2 · Dart ≥ 3.0 · SQLite · Filesystem / S3 · FTS5 search · Bcrypt + SHA-256 tokens · Docker · Zero client patches ·
01 — Anatomy

A Pub Spec v2 server, one binary.

CLUB is a Dart application that ships as a single Docker image. It serves the pub API, the web UI, and the admin dashboard from one process. Storage, search, and identity are all modular.

  1. 01

    Publish and install

    Your team publishes private packages with dart pub publish and pulls them with dart pub get. Same commands, same workflow — just a repository you own.

    drop-in · no workflow changes
  2. 02

    Teams and access

    Organize packages under publishers your team owns. Admins manage membership, members publish and read. Named API tokens let CI runs publish without sharing credentials — revoke any token in a click.

    publishers · roles · api tokens
  3. 03

    Yours to run

    Deploy anywhere Docker runs — your cloud, your datacenter, even a laptop. Packages stay on hardware you control, under the security and compliance policies you already have in place.

    self-hosted · your infrastructure
02 — Features

Everything you'd build yourself, already built.

A complete, from-scratch implementation of the pub protocol — not a wrapper around pub.dev.

  • Protocol

    Full Pub Spec v2

    Every endpoint pub.dev exposes, implemented byte-for-byte. Your existing tooling, unchanged.

  • Auth

    Private by default

    Bcrypt passwords, SHA-256 hashed API tokens, JWT sessions. No anonymous endpoints except /health.

  • Teams

    Publishers & roles

    Org-level publishers with admin/member roles, per-package uploaders, invite links.

  • Search

    Instant search

    Find packages by name or description as you type. Works out of the box and scales as your registry grows.

  • Storage

    Pluggable backends

    SQLite for metadata. Filesystem or S3-compatible for package tarballs.

  • Operations

    One container

    A single Docker image. No Node.js at runtime. Dart server serves the SvelteKit build as static files.

  • Interface

    Familiar web UI

    pub.dev-style browsing, package READMEs, version history, publisher pages. Dark + light theme.

  • Tooling

    CLI + Dart SDK

    club CLI for login, tokens, publishing, admin. club_api Dart package for programmatic access.

Runtime
Docker · Dart
Metadata
SQLite
Artifacts
FS · S3 · GCS
03 — Getting started

Read. Run. Publish.

Three entry points into CLUB. Pick whichever matches where you are — the docs cover the rest.

  1. Read

    The documentation

    Full reference for the server, CLI, SDK, and the HTTP API. Start with the overview, then pick your path.

    Browse docs
  2. Run

    Quick start with Docker

    One command to start a server on your laptop. Works with the bundled admin account; production notes included.

    Read the quick start
  3. Publish

    Your first package

    A step-by-step walkthrough — point dart pub at your CLUB server, tag a version, publish, consume from CI.

    Open the tutorial