lavina/crates
Nikita Vilunov 048660624d irc: support registration with different order of NICK/USER/CAP END commands (#51)
Resolves #33

Reviewed-on: lavina/lavina#51
2024-04-16 11:35:14 +00:00
..
lavina-core persistent room topics (#50) 2024-04-15 09:12:23 +00:00
mgmt-api add management API endpoints 2023-09-24 22:59:34 +02:00
projection-irc irc: support registration with different order of NICK/USER/CAP END commands (#51) 2024-04-16 11:35:14 +00:00
projection-xmpp xmpp: disco-info iq for rooms 2024-04-15 23:08:43 +02:00
proto-irc irc: allow PART without a reason 2024-04-06 23:01:24 +00:00
proto-xmpp xmpp: use the Jid type in IQs' to and from fields, separate presence handling 2024-04-15 18:18:51 +02:00
sasl move sasl into separate crate 2023-12-08 03:33:18 +01:00
readme.md update docs 2023-10-10 02:30:50 +02:00

readme.md

Dependency diagram of the project

graph TD;
    lavina-->mgmt-api;
    lavina-->projection-irc;
    lavina-->projection-xmpp;
    lavina-->lavina-core;

    projection-irc-->proto-irc;
    projection-irc-->lavina-core;
    
    projection-xmpp-->proto-xmpp;
    projection-xmpp-->lavina-core;

    sim-irc-->proto-irc;
    sim-irc-->mgmt-api;

    sim-xmpp-->proto-xmpp;
    sim-xmpp-->mgmt-api;

    workspace-->lavina;
    workspace-->sim-irc;
    workspace-->sim-xmpp;

A few rules:

  • Only projections should be direct deps of lavina, there is no need to depend on proto-* crates.
  • On the other hand, projections should not be dependencies of sim-* crates.
  • lavina-core does not depend on protocol-specific crates.

Lavina

lavina-core. This crate implements the core functionality of the server not specific to public interfaces. It includes handling general persistence, message casts, in future room authorization and cross-node communication.

lavina. The application crate. It's used to link other crates together and build the final binary with support for all protocols.

mgmt-api. Model definitions for management API to be used both in the server and client implementations.

IRC

proto-irc. Protocol definition for IRC, includes both server-side and client-side messages and both serialization and deserialization where needed.

projection-irc. Projection of lavina-core onto the IRC client-to-server protocol implementation.

sim-irc. Future implementation of IRC client simulator to be used in integration and load testing.