SkillAgentSearch skills...

Monorepo

All Things Linux

Install / Use

/learn @allthingslinux/Monorepo

README

allthingslinux monorepo

Unified monorepo for All Things Linux: marketing site, portal (identity stack), chat infrastructure (IRC / XMPP / bridge), self-hosted tools (atl.tools), network services, and observability stack.

Layout

apps/
├── web            @atl/web — marketing site (Next.js 16, OpenNext / Cloudflare)
├── portal         @atl/portal — identity & admin portal (Next.js 16, PostgreSQL)
├── chat-web       @atl/chat-web — atl.chat landing page (Next.js 16)
├── docs           @atl/docs — product documentation (Mintlify)
├── tools-web      @atl/tools-web — atl.tools directory (Next.js 16, OpenNext / Cloudflare)
└── bridge         Discord↔IRC↔XMPP bridge (Python / uv — NOT in pnpm workspace)

packages/
├── ui             @atl/ui — shared design system (shadcn/ui + @base-ui/react)
├── auth           @atl/auth — Better Auth config, client, hooks, and DAL
├── db             @atl/db — shared Drizzle schema, client, and relations
├── api            @atl/api — TanStack Query keys, server queries, hydration helpers
├── schemas        @atl/schemas — shared Zod schemas (user, integrations)
├── types          @atl/types — shared TypeScript types (auth, API, email, routes)
├── email          @atl/email — email sending utilities (React Email)
├── env            @atl/env — shared environment variable validation (t3-env)
├── config         @atl/config — shared static config (community, events, donate)
├── seo            @atl/seo — metadata, JSON-LD, robots, sitemap helpers
├── utils          @atl/utils — shared utility functions (date, format, error)
├── discord        @atl/discord — Discord REST API client (guild, members, channels, roles)
├── integrations   @atl/integrations — third-party API clients (GitHub, Fibery, webhooks)
├── fibery         @atl/fibery — Fibery SDK (portal admin, career applications)
├── observability  @atl/observability — Sentry / OpenTelemetry helpers
├── tools-manifest @atl/tools-manifest — tool definitions consumed by apps/tools-web
└── tsconfig       @atl/tsconfig — shared TypeScript configurations

services/
├── chat/          IRC (UnrealIRCd + Atheme), XMPP (Prosody), web clients
├── network/       DNS (Blocky), TURN (coturn), uptime (Gatus), SFTP
├── tools/         Self-hosted tools (PrivateBin, SearXNG, Stirling-PDF, …)
└── observability/ Grafana, Loki, Mimir, Alloy, Alloy Agent, Blackbox

infra/
├── chat/          Docker Compose fragments (chat-*.yaml)
├── network/       Docker Compose fragments (network.yaml)
├── observability/ Docker Compose fragments (observability.yaml)
├── tools/         Docker Compose fragments (tools-*.yaml)
├── nginx/         Nginx reverse proxy config (Prosody HTTPS)
├── sh/            atl.sh pubnix provisioning (Ansible, Terraform, skel, Vagrant)
├── cert-manager.yaml  TLS certificate management (included by root compose.yaml)
└── networks.yaml      Shared Docker network definitions (included by root compose.yaml)

scripts/           Shell scripts (init.sh — data dirs + dev certs)

tests/
├── unit/          Bridge unit tests
├── integration/   Bridge integration tests
├── e2e/           End-to-end tests
├── protocol/      Protocol-level tests
└── ...            fixtures/, controllers/, irc_utils/, utils/, legacy/

apps/ = software we build and own (polyglot: Next.js + Python). services/ = external software we extend, configure, and operate. packages/ = shared JS/TS libraries.

Package names: @atl/* for org-level apps and shared libraries. @portal/* for portal-internal packages under apps/portal/packages/*.

Requirements

| Tool | Version | Notes | | ------------------------------------------- | ------- | --------------------------------------------- | | Node.js | >=24 | Pinned in .nvmrc and mise.toml | | pnpm | >=10 | Managed via Corepack (packageManager field) | | uv | latest | Python package manager for apps/bridge | | Docker + Compose | — | Required for services/* | | just | latest | Task runner (cargo install just or OS pkg) |

Getting started

git clone https://github.com/allthingslinux/monorepo.git
cd monorepo
just setup        # pnpm install + uv sync + init.sh + env files

just setup copies .env.example.env and .env.dev.example.env.dev if they don't already exist. Edit them before starting services.

Commands

Run just to see all available recipes grouped by domain.

Workspace

| Command | Purpose | | ------------------------ | ------------------------------------------ | | just setup | Full bootstrap (JS + Python + env + certs) | | just install | pnpm install | | just install-frozen | pnpm install --frozen-lockfile | | just dev | Start all JS apps via Turborepo | | just build | Production build (Turbo graph) | | just check | Lint + format check (Ultracite) | | just fix | Lint + format fix (Ultracite) | | just typecheck | TypeScript validation across all packages | | just test | Run all tests via Turborepo | | just test-coverage | Run tests with coverage | | just clean | Remove build artifacts | | just renovate-validate | Validate Renovate config | | just docker-clean | Prune unused Docker images and volumes | | just docker-push-all | Push all Docker images to registry |

Apps

| Command | Purpose | | ------------------------------- | ------------------------------------- | | just web-dev | Marketing site dev server | | just web-build | Build marketing site | | just web-deploy | Deploy to Cloudflare Workers | | just web-destroy | Destroy Cloudflare Workers deployment | | just web-shadcn-add [args] | Add shadcn/ui component to web | | just chat-web-dev | atl.chat dev server | | just chat-web-build | Build atl.chat site | | just chat-web-deploy | Deploy atl.chat to Cloudflare Workers | | just portal-dev | Portal dev server | | just portal-build | Build portal | | just portal-start | Start portal (production mode) | | just portal-db-up | Start PostgreSQL (Docker) | | just portal-db-down | Stop PostgreSQL | | just portal-db-generate | Generate Drizzle migration files | | just portal-db-migrate | Run pending migrations | | just portal-db-push | Push schema to dev DB | | just portal-db-seed | Seed the database | | just portal-db-studio | Open Drizzle Studio | | just portal-shadcn-add [args] | Add shadcn/ui component to portal | | just docs-dev | Mintlify docs preview | | just docs-build | Build docs | | just docs-check-links | Check for broken links |

Tools (atl.tools)

| Command | Purpose | | ----------------------- | -------------------------------------- | | just tools-dev | Start all tools Docker services (dev) | | just tools-up | Start all tools Docker services (prod) | | just tools-down | Stop all tools Docker services | | just tools-logs | Tail tools container logs | | just tools-status | Show running tools containers | | just tools-build | Build custom service images | | just tools-web-dev | atl.tools Next.js dev server | | just tools-web-build | Build atl.tools site | | just tools-web-deploy | Deploy atl.tools to Cloudflare Workers |

Chat services (Docker)

| Command | Purpose | | ----------------------------- | -------------------------------------------- | | just chat-init | Initialize chat data directories and config | | just chat-dev | Start all chat services (dev profile) | | just chat-prod | Start all chat services (production profile) | | just chat-down | Stop chat services (dev) | | just chat-down-prod | Stop chat services (production) | | just chat-logs | Tail logs (optionally filter by name) | | just chat-status | Show running containers | | just chat-build | Build all service images | | just chat-build-clean [svc] | Build service images (no cache) | | just prosody-token | Generate a Prosody API token | | just gencloak | Generate IRC cloaking key |

Bridge (Python)

| Command | Purpose | | ----------------------- | -------------------------- | | just bridge-install | uv sync --all-extras | | just bridge-check | Ruff lint + format check | | just bridge-fix | Ruff lint fix + format | | just bridge-typecheck | basedpyright type ch

Related Skills

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated11m ago
Forks0

Languages

TypeScript

Security Score

90/100

Audited on Apr 8, 2026

No findings