Welcome to the atl.chat ecosystem! This monorepo houses the full stack for the allthingslinux chat platform, integrating modern web technologies with established chat protocols like XMPP and IRC.
The project is managed as a pnpm workspace using Turborepo for orchestration.
| Path | Application | Description | Tech Stack |
|---|---|---|---|
apps/web |
Landing Page | The main landing page for atl.chat. |
Next.js 14, React, Tailwind |
apps/xmpp |
XMPP Server | Prosody-based XMPP server with custom modules. | Prosody (Lua), Docker, PostgreSQL |
apps/irc |
IRC Server | UnrealIRCd server with Atheme services. | UnrealIRCd (C), Atheme, Docker |
- Node.js (LTS recommended)
- pnpm (v9.x or later)
- Docker & Docker Compose (for XMPP and IRC services)
Install dependencies for all workspaces:
pnpm installYou can start the entire ecosystem in specific modes using Turborepo.
Start all applications (Unified):
The project includes a root docker-compose.yml that orchestrates both XMPP and IRC stacks.
docker compose up -dStart specific applications (Development):
pnpm run devRun specific applications:
# Web Application (Next.js)
pnpm --filter web dev
# XMPP Server (Docker)
pnpm --filter xmpp dev
# IRC Server (Docker)
pnpm --filter irc devTo build all applications for production:
pnpm run buildThe landing page for atl.chat. It serves as the main entry point for the project.
- Port:
3000(default)
A robust XMPP server powered by Prosody. It supports modern extensions (XEPs) and integrates with the web platform.
- Ports:
5222(c2s),5269(s2s),5280(http) - Commands: Wraps
makecommands viapackage.json(e.g.,npm run test->make test).
A classic IRC server powered by UnrealIRCd with Atheme services for channel management.
- Ports:
6697(TLS),6900(Linking) - Services: NickServ, ChanServ, OperServ
- Clone the repository.
- Install dependencies:
pnpm install - Create a branch:
git checkout -b feature/my-feature - Commit changes (conforming to conventional commits).
- Push and open a Pull Request.
Copyright 2025 All Things Linux and Contributors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Some modules used are licensed under different terms; please refer to their respective documentation for details.