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
| Layer | Technology |
|---|
| Framework | Next.js (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS + shadcn/ui |
| UI components | Button, Card, Badge (from shadcn/ui via Radix UI) |
| Icons | Lucide React |
| Linting | Biome (via ultracite) |
| Deployment target | Cloudflare Pages (@cloudflare/next-on-pages) |
| Package manager | pnpm (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:
| Route | Component | Description |
|---|
/ | app/page.tsx | Landing 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:
| Variable | Description | Default |
|---|
NEXT_PUBLIC_ATL_BASE_DOMAIN | Base domain for the atl.chat project | atl.chat |
NEXT_PUBLIC_ATL_ENVIRONMENT | Environment identifier (development or production) | development |
NEXT_PUBLIC_IRC_WS_URL | IRC WebSocket URL for browser-based IRC clients | wss://irc.atl.chat/ws |
NEXT_PUBLIC_XMPP_BOSH_URL | XMPP BOSH endpoint for browser-based XMPP clients | https://xmpp.atl.chat/http-bind |
NEXT_PUBLIC_SENTRY_DSN | Sentry 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.
Related pages
- Development — dev server, build, deployment, and linting