Skip to content

A macOS IRC client built with SwiftUI

License

Notifications You must be signed in to change notification settings

mbpolan/rapid-irc-client

Repository files navigation

Rapid IRC Client

An IRC client for macOS built using SwiftUI.

About

This project is a simple IRC client written using Swift and leveraging the SwiftUI framework. It currently runs on macOS, although other iOS platforms might be supported in the future.

Roadmap

A basic plan for features is listed below. This is subject to change, but as a rough guideline the client should at least support the following functionality prior to release:

  • Connecting and disconnecting to/from servers
  • Joining and leaving channels
  • Sending and receiving messages in a channel
  • Private messaging other users
  • User profile and nick customization
  • Channel ops (topics, kicking users, etc.)
  • Text formatting (colors, font styles)
  • Fairly robust error handling for invalid messages

Developing

You'll need the following environment to build the project:

Follow these steps for getting the app running:

  1. Clone this repository
  2. Install pods using the following command at the top-level directory: pod install
  3. Open the Rapid IRC Client.xcworkspace workspace in Xcode (not the Rapid IRC Client.xcproject file!)
  4. Build and run the default scheme

As for servers, you can attempt to connect to any real IRC network out there, but for local development it helps to run a local server to avoid getting banned if a bug in the client causes it to misbehave. ngIRCd is a good choice, which you can install in a variety of ways, including Homebrew.

State management uses the wonderful SwiftRex library along with Combine. This implements a simple Redux pattern where state changes flow in one direction from a central store.

Note that during the build, Sourcery will generate boilerplate code for SwiftRex constructs, notably any enums commented with the line sourcery: Prism. If any of these files have changed as a result, you should check them into your next commit to ensure your code changes are fully incorporated.

Linting is provided by SwiftLint, which runs during the build and displays warnings and/or errors in Xcode. Before contributing, be sure to address as many issues as possible with new code to keep the overal code quality sane.

Contributing

All contributions are welcome! Feel free to open a pull request if there is something you'd like to pitch in for the project.

About

A macOS IRC client built with SwiftUI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published