Skip to content

link-foundation/links-queue

Repository files navigation

Links Queue

A universal queue system that works with links instead of traditional messages, events, or tasks. Each queue item is represented as a link—the fundamental unit of information. Supports both JavaScript/TypeScript and Rust implementations.

Why Links Queue?

See our comprehensive comparison with existing message brokers (RabbitMQ, Celery, BullMQ, Kafka) to understand where Links Queue fits in the messaging ecosystem.

For detailed planning documents, see:

Project Structure

.
├── js/                   # JavaScript/TypeScript implementation
│   ├── .changeset/       # Changeset configuration
│   ├── .husky/           # Git hooks
│   ├── examples/         # Usage examples
│   ├── scripts/          # Build and release scripts
│   ├── src/              # Source code
│   ├── tests/            # Test files
│   ├── package.json      # Node.js package manifest
│   └── README.md         # JS-specific documentation
│
├── rust/                 # Rust implementation
│   ├── changelog.d/      # Changelog fragments
│   ├── examples/         # Usage examples
│   ├── scripts/          # Build and release scripts
│   ├── src/              # Source code
│   ├── tests/            # Integration tests
│   ├── Cargo.toml        # Rust package manifest
│   └── README.md         # Rust-specific documentation
│
├── .github/workflows/    # CI/CD workflows
│   ├── js.yml            # JavaScript CI/CD pipeline
│   └── rust.yml          # Rust CI/CD pipeline
│
└── LICENSE               # Unlicense (Public Domain)

Language-Specific Documentation

Features

JavaScript

  • Multi-runtime support (Node.js, Bun, Deno)
  • Universal testing with test-anywhere
  • Automated releases via Changesets
  • ESLint + Prettier with pre-commit hooks

Rust

  • Cross-platform support (Linux, macOS, Windows)
  • Async support with Tokio
  • Pedantic Clippy lints
  • Changelog fragments for automated releases

Development

JavaScript

cd js
npm install
npm test
npm run lint

Rust

cd rust
cargo build
cargo test
cargo clippy

CI/CD

Each language has its own CI/CD workflow:

  • js.yml: Handles JavaScript testing, linting, and npm publishing
  • rust.yml: Handles Rust testing, linting, and GitHub releases

Changes to files in js/ trigger the JS workflow, and changes to files in rust/ trigger the Rust workflow.

Release Process

JavaScript

  1. Create a changeset: cd js && npm run changeset
  2. Commit and push to a branch
  3. Open a PR and merge to main
  4. The workflow will automatically version and publish to npm

Rust

  1. Add a changelog fragment in rust/changelog.d/
  2. Commit and push to a branch
  3. Open a PR and merge to main
  4. The workflow will automatically bump version and create a GitHub release

License

Unlicense - Public Domain

About

Links message queue

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •