ts-rust-monorepo

Monorepo template for TypeScript + Rust packages and services.

Features

  • Containerized local development using Docker
  • pnpm for managing JS dependencies
  • Cargo Workspace for Rust projects
  • Auto-generated OpenAPI (swagger) docs and shared type libs for TypeScript and Rust services
  • Version and release management using changesets

NPM Registry

Everything in this repo is listed under my own GitHub registry @s2lsoftener. You should replace that with your own in all the files.

To login to the registry in your CLI, use

pnpm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.pkg.github.com

Quick Start

Initialize .env files:

./dev/init-env.sh

To enable local development:

pnpm install

To start the services locally:

docker compose up -d --build
docker compose logs -f

Services will build and start according to this project graph.

flowchart LR
    subgraph ts1["/packages"]
        A[ts-add]
        B[ts-subtract]
        C[ts-math]
        A --> C
        B --> C

        D[rust-factorial]
        E[rust-fibonacci]
        F[rust-math]
        D --> F
        E --> F
    end

    subgraph services["/services"]
        G[rust-axum-api]
        F --> G

        I[ts-random-word-api]
        I --> H

        H[ts-fastify-api]
        C --> H
        G --> H
    end
Loading