Skip to content

allthingslinux/atl.chat

Repository files navigation

atl.chat Monorepo

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.

🚀 Repository Structure

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

🛠️ Getting Started

Prerequisites

  • Node.js (LTS recommended)
  • pnpm (v9.x or later)
  • Docker & Docker Compose (for XMPP and IRC services)

Installation

Install dependencies for all workspaces:

pnpm install

💻 Development

You 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 -d

Start specific applications (Development):

pnpm run dev

Run specific applications:

# Web Application (Next.js)
pnpm --filter web dev

# XMPP Server (Docker)
pnpm --filter xmpp dev

# IRC Server (Docker)
pnpm --filter irc dev

🏗️ Building

To build all applications for production:

pnpm run build

📦 Application Details

Web (apps/web)

The landing page for atl.chat. It serves as the main entry point for the project.

  • Port: 3000 (default)

XMPP (apps/xmpp)

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 make commands via package.json (e.g., npm run test -> make test).

IRC (apps/irc)

A classic IRC server powered by UnrealIRCd with Atheme services for channel management.

  • Ports: 6697 (TLS), 6900 (Linking)
  • Services: NickServ, ChanServ, OperServ

🤝 Contributing

  1. Clone the repository.
  2. Install dependencies: pnpm install
  3. Create a branch: git checkout -b feature/my-feature
  4. Commit changes (conforming to conventional commits).
  5. Push and open a Pull Request.

📄 License

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.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Contributors 5