Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.allthingslinux.org/llms.txt

Use this file to discover all available pages before exploring further.

The web app (apps/web) is the public-facing atl.chat landing site — a Next.js application that lists all community chat platforms (IRC, XMPP, Discord, Signal) and links visitors to connection instructions. It deploys to Cloudflare Pages via @cloudflare/next-on-pages.

What it is (and isn’t)

  • Is: The atl.chat public homepage — a single-page site showing how to connect via IRC, XMPP, Discord, Signal, and other platforms.
  • Is not: The Portal app, which is a separate Next.js project in its own repository handling user identity, profiles, and the Portal API consumed by the bridge.

Technology stack

LayerTechnology
FrameworkNext.js (App Router)
LanguageTypeScript
StylingTailwind CSS + shadcn/ui
UI componentsButton, Card, Badge (from shadcn/ui via Radix UI)
IconsLucide React
LintingBiome (via ultracite)
Deployment targetCloudflare Pages (@cloudflare/next-on-pages)
Package managerpnpm (workspace member atl.chat)

Architecture

The web app follows a minimal Next.js App Router structure:
apps/web/
├── app/
│   ├── layout.tsx        # Root layout with Geist font loading
│   ├── page.tsx          # Landing page — the only route
│   ├── globals.css       # Tailwind CSS imports
│   ├── favicon.ico
│   └── fonts/            # Geist Sans and Geist Mono (local fonts)
├── components/
│   └── ui/               # shadcn/ui components (button, card, badge)
├── lib/
│   └── utils.ts          # Tailwind merge utility (cn helper)
├── next.config.mjs       # Cloudflare dev platform setup
├── wrangler.toml         # Cloudflare Pages deployment config
├── biome.jsonc           # Extends ultracite/biome presets
└── package.json          # Package name: "atl.chat"

Routes

The site currently has a single route:
RouteComponentDescription
/app/page.tsxLanding page with platform cards for IRC, XMPP, Signal, and a Discord join button. Also shows “Someday Maybe?” badges for Mastodon and Matrix.
The app uses Next.js App Router with layout.tsx providing the root HTML structure, Geist font variables, and global styles. There are no additional routes, API routes, or dynamic segments at this time — the site is a static single-page application.

Environment variables

The web app uses client-side environment variables (prefixed with NEXT_PUBLIC_) to configure service connection URLs:
VariableDescriptionDefault
NEXT_PUBLIC_ATL_BASE_DOMAINBase domain for the atl.chat projectatl.chat
NEXT_PUBLIC_ATL_ENVIRONMENTEnvironment identifier (development or production)development
NEXT_PUBLIC_IRC_WS_URLIRC WebSocket URL for browser-based IRC clientswss://irc.atl.chat/ws
NEXT_PUBLIC_XMPP_BOSH_URLXMPP BOSH endpoint for browser-based XMPP clientshttps://xmpp.atl.chat/http-bind
NEXT_PUBLIC_SENTRY_DSNSentry DSN for error tracking (optional)(empty)
See apps/web/.env.example for the full list. Copy it to apps/web/.env.local for local overrides.
Note: During local development, just web dev automatically overrides NEXT_PUBLIC_IRC_WS_URL and NEXT_PUBLIC_XMPP_BOSH_URL to point at localhost ports.
  • Development — dev server, build, deployment, and linting