Monorepo
All Things Linux
Install / Use
/learn @allthingslinux/MonorepoREADME
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
node-connect
351.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
110.9kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
110.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Writing Hookify Rules
110.9kThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
