https://github.com/matt0x6f/irc-client
My personal IRC client
https://github.com/matt0x6f/irc-client
irc irc-client
Last synced: 2 days ago
JSON representation
My personal IRC client
- Host: GitHub
- URL: https://github.com/matt0x6f/irc-client
- Owner: matt0x6F
- License: bsd-3-clause
- Created: 2026-01-05T00:34:51.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-06-21T18:54:06.000Z (7 days ago)
- Last Synced: 2026-06-21T19:15:06.332Z (7 days ago)
- Topics: irc, irc-client
- Language: Go
- Homepage:
- Size: 5.96 MB
- Stars: 2
- Watchers: 0
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: license.md
- Agents: agents.md
Awesome Lists containing this project
README
# Cascade Chat
A modern, multi-platform IRC client built with Wails, featuring plugin support, ShadCN UI, and efficient message storage.
## Features
- **Multi-platform**: Windows, macOS, and Linux support
- **Plugin System**: IPC-based plugins (kubectl-style) for extensibility
- **Modern UI**: ShadCN components with Tailwind CSS v4
- **Efficient Storage**: SQLite with optimized batch writes
- **Event-Driven**: Extensible event bus architecture
## Install (macOS)
Download the latest `Cascade--universal.dmg` from the
[Releases page](https://github.com/matt0x6F/irc-client/releases). The build is a
universal binary, running natively on both Apple Silicon and Intel Macs.
1. Open the DMG and drag **Cascade** to your Applications folder.
2. The build is **not code-signed**, so the first launch needs one extra step to
get past Gatekeeper:
- **Right-click** `Cascade.app` → **Open** → **Open** in the dialog, or
- run `xattr -dr com.apple.quarantine /Applications/cascade.app` in Terminal.
You only need to do this once; afterwards it launches normally.
## Quick Start
### Prerequisites
- Go 1.25+ (required by Wails v3)
- Node.js 20 (see `.nvmrc`; with nvm run `nvm use` so `task` can find npm)
- Task: `go install github.com/go-task/task/v3/cmd/task@latest` (or `brew install go-task`)
- Wails v3 CLI: `go install github.com/wailsapp/wails/v3/cmd/wails3@latest`
### Installation
1. Clone the repository
2. Run setup:
```bash
task setup
```
### Development
Run the development server with hot reload:
```bash
task dev
```
Or use Wails directly:
```bash
wails3 dev
```
### Building
Build for your current platform:
```bash
task build
```
Package a distributable `.app` bundle / installer:
```bash
task package
```
Build a macOS `.dmg` (output in `bin/`; `brew install create-dmg` for a nicer
layout, otherwise `hdiutil` is used):
```bash
task dmg # current architecture
task dmg-universal # arm64 + amd64 universal
```
## Taskfile Commands
This project uses [Task](https://taskfile.dev) for workflow automation. Common commands:
### Development
- `task dev` - Run development server
- `task build` - Build application
- `task check` - Run all checks (fmt, lint, test, type-check)
### Go Tasks
- `task go-test` - Run Go tests
- `task go-fmt` - Format Go code
- `task go-lint` - Run Go linters
- `task go-mod` - Tidy and verify modules
### Frontend Tasks
- `task frontend-install` - Install dependencies
- `task frontend-build` - Build for production
- `task frontend-type-check` - Type check TypeScript
### Database Tasks
- `task db-reset` - Reset database (WARNING: deletes all data)
- `task db-backup` - Backup database
### Plugin Tasks
- `task plugin-list` - List discovered plugins
- `task plugin-dir` - Create plugin directory
### Setup & Maintenance
- `task setup` - Initial project setup
- `task setup-dev` - Setup development environment
- `task clean` - Clean build artifacts
- `task release-check` - Run all checks before release
See all available tasks:
```bash
task --list
```
## Project Structure
```
cascade/
├── app.go # Wails app entry with bindings
├── main.go # Application entry point
├── internal/
│ ├── irc/ # IRC core implementation
│ ├── events/ # Event bus
│ ├── plugin/ # Plugin system
│ └── storage/ # Database layer
├── frontend/
│ └── src/
│ ├── components/ # React components
│ └── types/ # TypeScript definitions
└── plugins/ # Example plugins
```
## Testing with Local IRC Server
A Docker Compose setup is included for running a local Ergo IRC server for testing:
1. **Generate TLS certificates** (one-time setup):
```bash
./docker/ergo/generate-certs.sh
```
2. **Start the test server**:
```bash
docker-compose up -d
```
3. **Connect in Cascade Chat**:
- Address: `localhost`
- Port: `6667` (plaintext) or `6697` (TLS)
- Enable TLS if using port 6697
See [docker/ergo/README.md](docker/ergo/README.md) for more details.
## Documentation
- [Technical Documentation](agents.md) - Architecture, patterns, and workflows
- [Wails Documentation](https://wails.io/docs)
- [irc-go Library](https://github.com/ergochat/irc-go)
## License
BSD 3-Clause License