ft_irc is a minimalist IRC server developed in C++98, implementing a server compatible with IRC clients for real-time communication. The project's goal is to support multiple clients simultaneously using non-blocking operations while adhering to IRC protocol requirements.
The project follows a layered architecture, separating responsibilities to improve organization and maintainability:
- Commands – Implementation of IRC-supported commands.
- Core – Central server logic, including initialization and the main loop.
- Handlers – Processing of events and messages received from clients.
- Models – Data structures for users and channels.
- Services – Specific server functionalities following the Service Pattern.
- Utils – Utility functions that support server operations.
- Command Pattern – Commands are implemented as classes derived from an abstract class, enabling extensibility and code organization.
- Non-Blocking I/O – Uses
poll()to manage multiple connections without blocking. - Service Pattern – Organizes functionalities into service modules for better modularity.
- Observer Pattern – Manages message forwarding between clients and channels.
- Singleton Pattern – Ensures a single instance of the server is running.
./ircserv <port> <password>- port: TCP port for IRC connections.
- password: Password required for client authentication.
- Language: C++98
- Allowed libraries: Only POSIX system calls.
- Connection management:
poll()to prevent blocking. - Use of Boost and external libraries is prohibited.
- Implement support for bots and file transfers.
- Improve logging and server monitoring.
- Add automated tests.